Buscador avanzado
Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado :: 1 Motor de búsqueda

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 30 el Lun Dic 21, 2015 12:37 am.
Últimos temas
» MundoDeluxe cierra - Muchas Gracias a todos
por ZAnimeMaker Miér Mar 02, 2016 3:45 pm

» Recomendaciones para subir aportes
por Xpe Mar Ene 05, 2016 5:00 pm

» dUDA Sobre mi Rpg maker XP en ES
por SketchDeluxe Sáb Ene 02, 2016 7:26 pm

» Arruina el anterior y pide un deseo
por asdseba123 Mar Dic 29, 2015 11:07 pm

» ¿Qué haremos en nuestros días libres?
por bathory123 Sáb Dic 26, 2015 4:02 pm

» Monster Strike (Anime)
por kyonides Sáb Dic 26, 2015 3:33 am

» Galeria de avatares
por bathory123 Vie Dic 25, 2015 6:57 pm

» Feliz Navidad 2015
por kyonides Vie Dic 25, 2015 2:18 am

» Battlers laterales(Ragnarok)
por Maghno Miér Dic 23, 2015 6:57 pm

» Buenas a todos!
por SketchDeluxe Mar Dic 22, 2015 4:36 pm

Publicidad
Afiliados


RandomEnkounters XP

Ver el tema anterior Ver el tema siguiente Ir abajo

RandomEnkounters XP

Mensaje por kyonides el Mar Nov 17, 2015 5:23 am

RandomEnkounters XP

por Kyonides-Arkanthos


Este sencillo script lo que ofrece es el visualizar el monstruo que surge para luchar contra los héroes por solo caminar a lo loco por el mapa actual (sea el que sea). De forma aleatoria escogerá a uno de los monstruos de la tropa de enemigos y lo desplegará en pantalla mientras suena un efecto de sonido que indica que este recién apareció frente al héroe, el líder del equipo. Este a lo sumo podrá girar sobre su eje en el poco tiempo que le queda antes de que la batalla aleatoria dé comienzo. Una vez que la batalla termine, el héroe podrá moverse tranquilamente, bueno, si es que este sobrevivió...

En la primera Constante del módulo pueden definir el nombre del archivo de efecto de sonido, mientras que en la segunda definen cuántos cuadros o frames esperarán antes de que inicie la batalla.

Script
Código:
# * RandomEnkounter XP
#   Plug & Play Script & Configurable
#   Scripter : Kyonides-Arkanthos
#   2015-11-22

module RandomEnkounter
  ENEMY_APPEARS = '018-Teleport01'
  WAIT_COUNT = 80
  ANIME_POPUP = {} # No Edite Esta Línea
  # Animación del Enemigo en el Mapa [ID de Tropa] = ID Animación
  ANIME_POPUP[1] = 14
  ANIME_POPUP[2] = 20
  def self.enemy() @enemy end
  def self.enemy=(new_enemy) @enemy = new_enemy end
  def self.enemy_appears() RPG::AudioFile.new(ENEMY_APPEARS,100,350) end
end

class Game_RandomEnemy < Game_Enemy
  attr_reader :character_name, :character_hue, :tile_id, :pattern, :transparent
  attr_reader :direction, :opacity, :blend_type, :x, :y, :through
  def refresh
    @character_name = @battler_name
    @character_hue = @battler_hue
    dir = $game_player.direction
    @direction = 10 - $game_player.direction
    @x = $game_player.x + (dir == 6 ? 1 : dir == 4 ? -1 : 0)
    @y = $game_player.y + (dir == 2 ? 1 : dir == 8 ? -1 : 0)
    valid_coord = $game_map.valid?(@x, @y)
    result = false
    if valid_coord
      $game_map.events.values.each {|event| through = event.through
        (result = true; break) if event.x == @x and event.y == @y and !through }
    end
    if !valid_coord or result
      @x = $game_player.x + (dir == 6 ? -1 : dir == 4 ? 1 : 0)
      @y = $game_player.y + (dir == 2 ? -1 : dir == 8 ? 1 : 0)
      @direction = dir
    end
    @real_x = @x * 128
    @real_y = @y * 128
    @opacity = 255
    @blend_type = 0
    @tile_id = 0
    @pattern = 0
    @jump_count = 0
    @jump_peak = 0
    @through = false
    @transparent = false
    tid = RandomEnkounter::ANIME_POPUP[@troop_id]
    @animation_id = tid ? tid : 0
  end

  def screen_x() (@real_x - $game_map.display_x + 3) / 4 + 16 end

  def screen_y
    y = (@real_y - $game_map.display_y + 3) / 4 + 32
    n = (@jump_count >= @jump_peak)? @jump_count - @jump_peak :
        @jump_peak - @jump_count
    return y - (@jump_peak * @jump_peak - n * n) / 2
  end

  def screen_z(height = 0)
    return 999 if @always_on_top
    z = (@real_y - $game_map.display_y + 3) / 4 + 32
    return z + ((height > 32) ? 31 : 0) # If height exceeds 32, then add 31
  end

  def bush_depth
    return 0 if @tile_id > 0 or @always_on_top
    (@jump_count == 0 and $game_map.bush?(@x, @y))? 12 : 0
  end
end

class Game_Map
  alias kyon_enkounters_gm_map_passable? passable?
  def passable?(x, y, d, self_event=nil)
    enemy = RandomEnkounter.enemy
    return false if enemy != nil and !enemy.through
    kyon_enkounters_gm_map_passable?(x, y, d, self_event)
  end
end

class Sprite_RandomCharacter < Sprite_Character
  def update
    return if @character == nil
    super
  end
end

class Spriteset_Map
  alias kyon_enkounters_sprite_map_init initialize
  def initialize
    kyon_enkounters_sprite_map_init
    character = Game_Character.new
    character.transparent = true
    @character_sprites << Sprite_RandomCharacter.new(@viewport1, character)
  end

  def random_enemy=(new_enemy) @character_sprites[-1].character = new_enemy end

  def dispose_random_enemy
    @character_sprites.dispose
    @character_sprites.pop
  end
end

class Scene_Map
  alias kyon_enkounters_scn_map_call_battle call_battle
  def call_battle
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      unless @wait_count
        $game_system.se_play(RandomEnkounter.enemy_appears)
        tid = $game_temp.battle_troop_id
        enemies_size = $data_troops[tid].members.size
        RandomEnkounter.enemy = Game_RandomEnemy.new(tid, rand(enemies_size))
        RandomEnkounter.enemy.refresh
        @spriteset.random_enemy = RandomEnkounter.enemy
        @wait_count = RandomEnkounter::WAIT_COUNT
        return
      else
        @wait_count -= 1
        return if @wait_count > 0
      end
    end
    kyon_enkounters_scn_map_call_battle
  end
end

class Scene_Battle
  alias kyon_enkounters_scn_battle_battle_end battle_end
  def battle_end(result)
    RandomEnkounter.enemy = nil
    kyon_enkounters_scn_battle_battle_end(result)
  end
end


Última edición por kyonides el Dom Nov 22, 2015 11:44 pm, editado 4 veces (Razón : Actualización del Script)
avatar
kyonides
Usuario VIP
Usuario VIP

Mensajes : 66
Fecha de inscripción : 09/03/2009

Ver perfil de usuario

Volver arriba Ir abajo

Re: RandomEnkounters XP

Mensaje por kyonides el Dom Nov 22, 2015 9:44 pm

Actualizo el tema porque posteé una nueva versión, el cambio que realicé tiene que ver con colocar al monstruo generado aleatoriamente detrás del héroe cuando se halla un evento justo al frente de ese héroe y que no está relacionado con dicho monstruo. De hecho también se realizará el cambio cuando no haya espacio frente al héroe por llegar a algún extremo del mapa.
avatar
kyonides
Usuario VIP
Usuario VIP

Mensajes : 66
Fecha de inscripción : 09/03/2009

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.