Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3808 miembros registrados.
El último usuario registrado es angel.ascanio.

Nuestros miembros han publicado un total de 86157 mensajes en 12277 argumentos.

[XP] Skill & Item Animation Effects

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Skill & Item Animation Effects

Mensaje por Wecoc el 2017-08-09, 19:35

Éste script permite modificar frame a frame los efectos que se dan detrás de una habilidad u objeto. Es algo complicadillo (aunque tampoco mucho) de configurar, y puede presentar ciertas incompatibilidades, además requiere el script Data File Save, pero aún con todo eso vale bastante la pena.

Al aplicar una habilidad (o item, porque van igual) ocurre ésto:
- Se muestra su nombre en la ventana de ayuda
- Se obtienen los target (posiblemente seleccionados previamente)
- Se aplica el efecto de habilidad (daño, añadir estados...)
- Se muestra animación propia
- Se muestra animación al target
- Se quita la ventana de ayuda
- Se muestra el daño
- Se llama al evento común de la habilidad

Éste script permite configurar cada una de esas partes para skills e items concretos, y añadir más efectos adicionales.
Eso permite skills con múltiple hit, o que sucedan varias veces seguidas, o que su órden sea distinto, que tengan varios efectos distintos encadenados (como varias skills en una), skills que cambien el battleback y luego lo recuperen o que apliquen un efecto de sacudir pantalla o cambios de tono o yo qué sé, las locuras que se os ocurran, es un script para gente muy loca. Acepto ideas si alguna no sabéis como aplicarla.

Ya había hecho un script que permitía efectos de ese tipo pero éste es distinto, el otro se centraba en Animation (reescritura de RPG::Animation, lo que tenía ciertos problemas), éste en cambio es una reescritura de la phase4 de Scene_Battle pero sin sobreescribirla, por lo tanto algunos casos os será más adecuado. Eso significa que el Mostrar Animación (tanto en mapa como en batalla) en éste caso van como siempre, lo que se cambia aquí es el efecto de skill o item, y la animación no tiene nada que ver.

Como dije antes puede tener incompatibilidades, pero algunas se pueden solucionar sin demasiado problema.
Por ahora solo detecté una: No funciona bien con Number Flood.

Más adelante explicaré cómo configurarlo todo, vayamos poco a poco xD Por ahora aquí tenéis el script:

Código:
#==============================================================================
# ** [XP] Skill & Item Animation Effects
#------------------------------------------------------------------------------
#  Éste script permite asignar frame a frame los efectos de una skill o item
#  Requiere el script Data File Save v1.0 o superior
#  Puede presentar incompatibilidades pero se pueden arreglar
#  Autor: Wecoc (no requiere créditos)
#==============================================================================

#==============================================================================
# ** RPG [ timigs ]
#==============================================================================

class RPG::Skill
  define_method(:timings) { @timings ||= {} }
  define_method(:frames)  { @frames  ||= 0 }
end
class RPG::Item
  define_method(:timings) { @timings ||= {} }
  define_method(:frames)  { @frames  ||= 0 }
end
class DataFile
  def clear_timings
    @timings.clear
  end
  def set_timing(*data)
    @timings[@timings.keys.size] = data
  end
end

#==============================================================================
# ** RPG [ Damage Fix ]
#==============================================================================

module RPG
  class Sprite < ::Sprite
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_sprite = []
      @_damage_duration = []
      @_animation_duration = 0
      @_blink = false
    end
    def damage(value, critical)
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Arial Black"
      bitmap.font.size = 32
      bitmap.font.color.set(0, 0, 0)
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      if value.is_a?(Numeric) and value < 0
        bitmap.font.color.set(176, 255, 144)
      else
        bitmap.font.color.set(255, 255, 255)
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      if critical
        bitmap.font.size = 20
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
      end
      sprite = ::Sprite.new(self.viewport)
      sprite.bitmap = bitmap
      sprite.ox = 80
      sprite.oy = 20
      sprite.x = self.x
      n = @_damage_sprite.size
      case n % 3
      when 1
        sprite.x -= 8
      when 2
        sprite.x += 8
      end
      sprite.y = self.y - self.oy / 2 - n * 12
      sprite.z = 3000
      @_damage_sprite.push(sprite)
      @_damage_duration.push(40)
    end
    def dispose_damage
      @_damage_sprite.each do |sprite|
        sprite.bitmap.dispose
        sprite.dispose
      end
    end
    def effect?
      @_whiten_duration > 0 or
      @_appear_duration > 0 or
      @_escape_duration > 0 or
      @_collapse_duration > 0 or
      @_damage_duration.any? {|d| d > 0} or
      @_animation_duration > 0
    end
    def update
      super
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      for i in 0...@_damage_duration.size
        if @_damage_duration[i] > 0
          @_damage_duration[i] -= 1
          duration = @_damage_duration[i]
          sprite = @_damage_sprite[i]
          case duration
          when 38..39
            sprite.y -= 4
          when 36..37
            sprite.y -= 2
          when 34..35
            sprite.y += 2
          when 28..33
            sprite.y += 4
          end
          sprite.opacity = 256 - (12 - duration) * 32
          if duration == 0
            sprite.bitmap.dispose
            sprite.dispose
            @_damage_sprite[i] = nil
            @_damage_duration[i] = nil
            @_damage_sprite.compact!
            @_damage_duration.compact!
            retry
          end
        end
      end
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
    end
  end
end

#==============================================================================
# ** Scene_Title
#==============================================================================

class Scene_Title
  alias wecfix_command_new_game command_new_game unless $@
  def command_new_game
    wecfix_command_new_game
    define_default_data_timings
    define_custom_data_timings
  end
  #--------------------------------------------------------------------------
  # * Definir efectos por defecto (al iniciar juego)
  #--------------------------------------------------------------------------
  def define_default_data_timings
    #------------------------------------------------------------------------
    # * Habilidades
    #------------------------------------------------------------------------
    for i in 1...$data_skills.size
      skill = $data_skills[i]
      n = 0
      # Mostrar texto en la ventana de ayuda: Nombre de habilidad
      skill.set_timing(n, :help_text, skill.name)
      # Obtener los target
      skill.set_timing(n, :set_target_battlers, skill.scope)
      # Aplicar efecto (daño, estados...)
      skill.set_timing(n, :skill_effect, skill.id)
      # Mostrar animación propia
      skill.set_timing(n, :animation1, skill.animation1_id)
      if skill.animation1_id != 0
        animation = $data_animations[skill.animation1_id]
        n += animation.frame_max
      end
      n += 8
      # Mostrar animación de target
      skill.set_timing(n, :animation2, skill.animation2_id)
      if skill.animation2_id != 0
        animation = $data_animations[skill.animation2_id]
        n += animation.frame_max
      end
      n += 8
      # Quitar ventana de ayuda
      skill.set_timing(n, :help_text, "")
      # Mostrar daño
      skill.set_timing(n, :damage)
      n += 40
      # Llamar evento común (si está disponible)
      skill.set_timing(n, :common_event_id, skill.common_event_id)
      # Definir frames totales del efecto
      skill.frames = n + 1
    end
    #------------------------------------------------------------------------
    # * Objetos
    #------------------------------------------------------------------------
    for i in 1...$data_items.size
      item = $data_items[i]
      n = 0
      # Mostrar texto en la ventana de ayuda: Nombre de habilidad
      item.set_timing(n, :help_text, item.name)
      # Obtener los target
      item.set_timing(n, :set_target_battlers, item.scope)
      # Aplicar efecto (daño, estados...)
      item.set_timing(n, :item_effect, item.id)
      # Mostrar animación propia
      item.set_timing(n, :animation1, item.animation1_id)
      if item.animation1_id != 0
        animation = $data_animations[item.animation1_id]
        n += animation.frame_max
      end
      n += 8
      # Mostrar animación de target
      item.set_timing(n, :animation2, item.animation2_id)
      if item.animation2_id != 0
        animation = $data_animations[item.animation2_id]
        n += animation.frame_max
      end
      n += 8
      # Quitar ventana de ayuda
      item.set_timing(n, :help_text, "")
      # Mostrar daño
      item.set_timing(n, :damage)
      n += 40
      # Llamar evento común (si está disponible)
      item.set_timing(n, :common_event_id, item.common_event_id)
      # Definir frames totales del efecto
      item.frames = n + 1
    end
  end
  #--------------------------------------------------------------------------
  # * Definir efectos personalizados (al iniciar juego)
  #--------------------------------------------------------------------------
  def define_custom_data_timings
  end
end

#==============================================================================
# ** Game_Temp
#==============================================================================

class Game_Temp
  attr_accessor :action_counter
  alias action_counter_ini initialize unless $@
  def initialize
    action_counter_ini
    @action_counter = 0
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    if $game_system.battle_interpreter.running?
      $game_system.battle_interpreter.update
      if $game_temp.forcing_battler == nil
        unless $game_system.battle_interpreter.running?
          unless judge
            setup_battle_event
          end
        end
        if @phase != 5
          @status_window.refresh
        end
      end
    end
    $game_system.update
    $game_screen.update
    if $game_system.timer_working and $game_system.timer == 0
      $game_temp.battle_abort = true
    end
    @help_window.update
    @party_command_window.update
    @actor_command_window.update
    @status_window.update
    @message_window.update
    @spriteset.update
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    if $game_temp.message_window_showing
      return
    end
    #------------------------------------------------------------------------
    if @spriteset.effect? && $game_temp.action_counter == 0
      return
    end
    #------------------------------------------------------------------------
    if $game_temp.gameover
      $scene = Scene_Gameover.new
      return
    end
    if $game_temp.to_title
      $scene = Scene_Title.new
      return
    end
    if $game_temp.battle_abort
      $game_system.bgm_play($game_temp.map_bgm)
      battle_end(1)
      return
    end
    if @wait_count > 0
      @wait_count -= 1
      return
    end
    if $game_temp.forcing_battler == nil and
       $game_system.battle_interpreter.running?
      return
    end
    case @phase
    when 1  # pre-battle phase
      update_phase1
    when 2  # party command phase
      update_phase2
    when 3  # actor command phase
      update_phase3
    when 4  # main phase
      update_phase4
    when 5  # after battle phase
      update_phase5
    end
  end
  #--------------------------------------------------------------------------
  # * Update Phase 4 - Acción
  #--------------------------------------------------------------------------
  alias update_phase4_timing update_phase4 unless $@
  def update_phase4
    if $game_temp.action_counter > 0
      update_action
      return
    end
    update_phase4_timing
  end
  #--------------------------------------------------------------------------
  # * Update Acción
  #--------------------------------------------------------------------------
  def update_action
    item = !@skill.nil? ? @skill : @item
    if item.nil?
      $game_temp.action_counter = 0
      return
    end
    frame = item.frames - $game_temp.action_counter
    for action in item.timings.values
      if action[0] == frame
        evaluate_action(action)
      end
    end
    $game_temp.action_counter -= 1
    if $game_temp.action_counter == 0
      $game_temp.forcing_battler = nil
      @phase4_step = 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Evaluar acción
  #--------------------------------------------------------------------------
  def evaluate_action(action)
    action_type = action[1]
    case action_type
    # Ventana de ayuda
    when :help_text
      text = action[2]
      if text != ""
        @help_window.set_text(text, 1)
      else
        @help_window.visible = false
      end
    # Obtener target
    when :set_target_battlers
      scope = action[2]
      set_target_battlers(scope)
    # Mostrar animación propia
    when :animation1
      animation_id = action[2]
      if animation_id > 0
        @active_battler.animation_id = animation_id
        @active_battler.animation_hit = true
      else
        @active_battler.white_flash = true
      end
    # Mostrar animación de target
    when :animation2
      animation_id = action[2]
      for target in @target_battlers
        target.animation_id = animation_id
        target.animation_hit = (target.damage != "Miss")
      end
    # Aplicar efecto (daño, estados...)
    when :skill_effect
      skill = $data_skills[action[2]]
      for target in @target_battlers
        target.skill_effect(@active_battler, skill)
      end
    # Aplicar efecto (daño, estados...)
    when :item_effect
      item = $data_items[action[2]]
      for target in @target_battlers
        target.item_effect(item)
      end
    # Mostrar daño
    when :damage
      @status_window.refresh
      for target in @target_battlers
        if target.damage != nil
          target.damage_pop = true
        end
      end
    # Llamar evento común (si está disponible)
    when :common_event_id
      common_event_id = action[2]
      if common_event_id > 0
        common_event = $data_common_events[common_event_id]
        $game_system.battle_interpreter.setup(common_event.list, 0)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Llamar a habilidad
  #--------------------------------------------------------------------------
  def make_skill_action_result
    @skill = $data_skills[@active_battler.current_action.skill_id]
    unless @active_battler.current_action.forcing
      unless @active_battler.skill_can_use?(@skill.id)
        $game_temp.forcing_battler = nil
        @phase4_step = 1
        return
      end
    end
    @active_battler.sp -= @skill.sp_cost
    @status_window.refresh
    $game_temp.action_counter = @skill.frames
  end
  #--------------------------------------------------------------------------
  # * Llamar a objeto
  #--------------------------------------------------------------------------
  def make_item_action_result
    @item = $data_items[@active_battler.current_action.item_id]
    unless $game_party.item_can_use?(@item.id)
      @phase4_step = 1
      return
    end
    $game_party.lose_item(@item.id, 1) if @item.consumable
    @status_window.refresh
    $game_temp.action_counter = @item.frames
  end
end
avatar
Wecoc
Administrador
Administrador



Créditos 12099

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Skill & Item Animation Effects

Mensaje por Wecoc el 2017-08-10, 19:16

Aquí mi explicación de cómo va el script, primero explico qué se encuentra en cada método importante:

- El apartado RPG [ Damage Fix ] es para que en los multihit (múltiples daños) no se vea raro en los popup de Damage, salga más de uno sin problemas. Si usáis scripts que modifiquen los popups Damage tendréis que adaptarlos a ésto o bien quitar ésta parte, a riesgo de que luego los multi-hit vayan algo peor.

- En Scene_Title hay dos nuevos métodos que se llaman al iniciar nueva partida.

En el método define_default_data_timings se define la secuencia que ocurre por defecto en habilidades y objetos, que es la que puse arriba. El resultado es tal como se ve siempre, algo más rápido porque por defecto se entretiene un poco más de la cuenta. Es importante mirar cómo va para entender cómo aplicar cada paso de la secuencia.

El método define_custom_data_timings, por defecto vacío, es el más importante del script. Ahí es donde se definen las habilidades y objetos con secuencias customizadas. Se pueden escribir ahí dentro directamente o en un script a parte haciendo un alias de ese método, lo mismo da, el caso es que ahí es donde irá toda la configuración. Como anotación importante ésto pasa al iniciar juego pero si se quiere cambiar la secuencia de una habilidad u objeto a medio juego es plenamente factible.

- El update de Scene_Battle es el de siempre excepto una pequeña diferencia en medio, si tenéis incompatibilidades por ese ya sabéis qué cambió, está marcado.

- El método evaluate_action es el segundo más importante del script, ahí se define qué hace cada uno de los pasos de la secuencia, y se pueden definir otros si se quiere.

----

Para aplicar efectos (cada una de las partes de la secuencia) hay que aplicar ésto a la skill o item: set_timing(frame, tipo, propiedades). Como por defecto tiene toda la secuencia ya hecha antes que definir su secuencia hay que usar clear_timing.

Aquí se ve bien un ejemplo de múltiple daño. La secuencia es prácticamente la normal, pero el apartado de aplicar efecto de habilidad y mostrar daño han sido triplicados.

Código:
class Scene_Title
  def define_custom_data_timings
    skill = $data_skills[7] # Fuego
    skill.clear_timings
    skill.set_timing(0, :help_text, skill.name)
    skill.set_timing(0, :set_target_battlers, skill.scope)
    skill.set_timing(0, :animation1, skill.animation1_id)
    skill.set_timing(16, :animation2, skill.animation2_id)
    #-----------------------------------------------------------------
    # Daño 1
    skill.set_timing(15, :skill_effect, skill.id)
    skill.set_timing(20, :damage)
    # Daño 2
    skill.set_timing(25, :skill_effect, skill.id)
    skill.set_timing(30, :damage)
    # Daño 3
    skill.set_timing(35, :skill_effect, skill.id)
    skill.set_timing(40, :damage)
    #-----------------------------------------------------------------
    skill.set_timing(40, :help_text, "")
    skill.set_timing(40, :common_event_id, skill.common_event_id)
    skill.frames = 41
  end
end

En :skill_effect se ha usado cada vez skill.id como propiedad, lo que significa que hará el efecto de esa skill en cuestión, pero si se quiere que uno de los golpes sea superior o simplemente distinto, se puede usar el de otra skill (solo el efecto, no la animación) cambiando skill.id por la ID de la habilidad en cuestión. Eso significa que incluso podéis crearos habilidades con más de una ranura y enlazar sus efectos al enemigo, y cosas así de raras, como dije hay muchas posibilidades.

Ahora os mostraré un ejemplo de efecto personalizado; cambio de battleback. Crearemos varios efectos nuevos, :memorize_battleback, :set_battleback y :restore_battleback. Todo lo demás será exactamente como en las skills por defecto.
Eso significa que en ese caso concreto no usaremos clear_timings. Es más sencillo de lo que parece, una vez más.

Código:
class Scene_Title
  def define_custom_data_timings
    skill = $data_skills[7] # Fuego
    skill.set_timing(0, :memorize_battleback)
    skill.set_timing(1, :set_battleback, "002-Woods01")
    skill.set_timing(skill.frames - 1, :restore_battleback)
  end
end

class Scene_Battle
  alias evaluate_action_example_battleback evaluate_action unless $@
  def evaluate_action(action)
    evaluate_action_example_battleback(action)
    action_type = action[1]
    case action_type
    # Memorizar Battleback
    when :memorize_battleback
      @battleback_name = $game_temp.battleback_name
    # Cambiar Battleback
    when :set_battleback
      battleback = action[2]
      $game_temp.battleback_name = battleback
    # Recuperar Battleback
    when :restore_battleback
      $game_temp.battleback_name = @battleback_name
    end
  end
end

Mirando ámbos ejemplos entenderéis mejor cómo funciona el script.
avatar
Wecoc
Administrador
Administrador



Créditos 12099

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Skill & Item Animation Effects

Mensaje por Wecoc el 2017-08-12, 14:32

Una buena pregunta referente a éste script puede ser: ¿Hay algún modo de hacerse atajos al configurarlo? Y la respuesta es: pa ke kieres saber eso jaja saludos , es posible. Como la configuración para las skills e items personalizados puede ser algo tediosa y larga para los que queráis sacarle bastante potencial al script, es recomendable hacer uso de atajos.

Por ejemplo, en otros RPG maker hay una opción para skills e items que en XP no existe: Repeat, skills que se repiten varias veces. Eso se puede recrear con éste sistema creándose un atajo set_repeats(item o skill, número de repeticiones), que por defecto seran 0. El código siguiente iría dentro del mismo script, al final.

Código:
module SkillData
  module_function
  #-------------------------------------------------------------------------
  # * Set repeats
  #-------------------------------------------------------------------------
  def set_repeats(skill, repeats)
    skill.clear_timings
    n = 0
    skill.set_timing(n, :help_text, skill.name)
    skill.set_timing(n, :set_target_battlers, skill.scope)
    skill.set_timing(n, :animation1, skill.animation1_id)
    if skill.animation1_id != 0
      animation = $data_animations[skill.animation1_id]
      n += animation.frame_max
    end
    n += 8
    (repeats + 1).times do
      skill.set_timing(n, :skill_effect, skill.id)
      skill.set_timing(n, :animation2, skill.animation2_id)
      if skill.animation2_id != 0
        animation = $data_animations[skill.animation2_id]
        n += animation.frame_max
      end
      n += 8
      skill.set_timing(n, :damage)
    end
    skill.set_timing(n, :help_text, "")
    n += 40
    skill.set_timing(n, :common_event_id, skill.common_event_id)
    skill.frames = n + 1
  end
  # Aquí puedes poner otros atajos
end

module ItemData
  module_function
  #-------------------------------------------------------------------------
  # * Set repeats
  #-------------------------------------------------------------------------
  def set_repeats(item, repeats)
    item.clear_timings
    n = 0
    item.set_timing(n, :help_text, item.name)
    item.set_timing(n, :set_target_battlers, item.scope)
    item.set_timing(n, :animation1, item.animation1_id)
    if item.animation1_id != 0
      animation = $data_animations[item.animation1_id]
      n += animation.frame_max
    end
    n += 8
    (repeats + 1).times do
      item.set_timing(n, :item_effect, item.id)
      item.set_timing(n, :animation2, item.animation2_id)
      if item.animation2_id != 0
        animation = $data_animations[item.animation2_id]
        n += animation.frame_max
      end
      n += 8
      item.set_timing(n, :damage)
    end
    item.set_timing(n, :help_text, "")
    n += 40
    item.set_timing(n, :common_event_id, item.common_event_id)
    item.frames = n + 1
  end
  # Aquí puedes poner otros atajos
end

Ejemplo de uso dentro de define_custom_data_timings:

Código:
class Scene_Title
  def define_custom_data_timings
    SkillData.set_repeats($data_skills[7], 2)
    ItemData.set_repeats($data_items[1], 1)
  end
end

Ese atajo puede usarse en cualquier otra parte, para modificar de forma dinámica el número de repeats de una skill o item.
Ale, ya tenéis otra utilidad para el script, recuperar la función Repeat ;D
avatar
Wecoc
Administrador
Administrador



Créditos 12099

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Skill & Item Animation Effects

Mensaje por Contenido patrocinado


Contenido patrocinado


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.