Últimos temas
» Proyecto Cristal [MV]
por Rafaxter Hoy a las 8:50 am

» La Historia Infinita (DEMO)
por Chioban Hoy a las 7:29 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por jlopez_96 Ayer a las 10:19 pm

» Al acabar los PM que se ponga el estado "x"
por Pokefanmati Dom Jul 23, 2017 7:58 pm

» [ACE] La Aventura de Sonik
por Sonik Sáb Jul 22, 2017 11:57 pm

» [XP] Engine de Terreno de Calayax
por Calayax Sáb Jul 22, 2017 1:40 am

» Taller del BGM
por ZororoWhite Vie Jul 21, 2017 12:48 pm

» Concurso de screens - Mayo/Junio 2017 [Resultados]
por ZororoWhite Vie Jul 21, 2017 12:44 pm

» Ayuda cob Interruptores
por KRiZaLiD Vie Jul 21, 2017 7:02 am

» Ayuda - Quitar opción de atravesar todo RPG VX ACE
por KRiZaLiD Vie Jul 21, 2017 6:57 am

» KUnits XP 2017
por kyonides Vie Jul 21, 2017 5:37 am

» Evento Comunes...todavía no la cazo bien con algo
por Calayax Jue Jul 20, 2017 8:50 pm


RandomEnkounters XP

Ver el tema anterior Ver el tema siguiente 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 de Quest
PJ de Quest

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 38
Monedas : 136
Reputación : 1

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.