Últimos temas
» ayuda, enemigos que dropeen item de mision
por Muzgar Vie Mayo 25, 2018 1:48 pm

» No sé como usar las opciones "Atk state" y "Atk element".
por MCarlos15 Jue Mayo 24, 2018 4:00 pm

» Aventura grafica
por Turbiosoft.acho Miér Mayo 23, 2018 1:29 am

» Como hacer una Habitación Extra
por Keilu Lopez Mar Mayo 22, 2018 8:38 pm

» Tiempo (MV)
por Mericantos Mar Mayo 22, 2018 6:33 pm

» The Legend of Celestia: Treasure Hunter
por jlopez_96 Lun Mayo 21, 2018 3:09 pm

» [Votaciones] Mote al Limo del foro
por KRiZaLiD Dom Mayo 20, 2018 9:41 pm

» Proyecto Ahura: Algunas Muestras
por Ledai Sáb Mayo 19, 2018 2:23 pm

» Problemas con el parallax mapping
por Victorgamer10 Sáb Mayo 19, 2018 5:53 am

» [MV]¿Cómo puedo hacer que se vean mas grandes los sprites de batalla?
por Mericantos Mar Mayo 15, 2018 4:18 pm

» problemas con charas en mv
por Muzgar Mar Mayo 15, 2018 2:23 pm

» Tileset no aparece
por KRiZaLiD Mar Mayo 15, 2018 3:10 am


RandomEnkounters XP

Ir abajo

RandomEnkounters XP

Mensaje por kyonides el Vie Jul 14, 2017 1:42 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.




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

 module RandomEnkounter
  ENEMY_APPEARS = '018-Teleport01'
  WAIT_COUNT = 80
  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)
    @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
  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
    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
    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


kyonides
PJ Recurrente
PJ Recurrente

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 78
Monedas : 211
Reputación : 1

Volver arriba Ir abajo

Volver arriba


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