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 4133 miembros registrados.
El último usuario registrado es Neysersitoh.

Nuestros miembros han publicado un total de 84768 mensajes en 12064 argumentos.

[XP] Habilidades Unidas

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Habilidades Unidas

Mensaje por AsFzKakarotto el 2017-08-27, 03:01

Este fue el primer script legalmente mio a pesar de que su sistema fue extraído de uno similar con el modo TP, cambiarlo a SP (PM) no fue nada difícil, pero estructurarlo con algunos script de apoyo y solucionar la incontables fallas fue un reto de todo un día.

Permite crear Habilidades Unidas que se manipulen con 2,3 o hasta 4 personajes. Si uno de los personajes asociados a dicha habilidad unida no está en batalla, la habilidad será bloqueada. Al igual que si uno de sus  integrantes resulta cambiar a un estado de restricción, la habilidad será temporalmente interrumpida hasta que este se restablezca nuevamente.
También es compatible con habilidades curativas.

Errores que solucione.
-Solucione el error de que la habilidad funcionaba sin importar que sus integrantes estuvieran durmiendo o paralizados... eso si seria muy raro, no?
- Añadí la animación sobre el usuario, para que se le aplique a todos los integrantes de la habilidad,
para aplicar ese efecto de unión, aunque me gustaría eliminar el segundo que aparece sobre el que accionó la habilidad, pero no se como se hace.
- Y alguno que otro error pequeño de bugs que aparecía, también fue solucionado.


El Script se comprobó que funciona perfectamente sin ningún otro acompañado.
Su grado de incompatibilidad puede llegar a ser alto si se presentan otros modos de batalla.

Imágenes demostrativas:





Instrucciones:
♦ Paso 1: Copiar script y pegar encima de Main... Todas las Instrucciones en el script
♦ Paso 2: Compatible con sistema de Batalla Defaut (No ha sido probado con otros sistemas de batalla)
♦ Paso 3: La Animación que se define en la base de datos se aplicará a todos los integrantes de la
               habilidad.
♦ Paso 4: El script está configurado para mostrar el gasto de PM(SP) y los integrantes en la descripción
               de la habilidad.

Código:
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Habilidades Unidas [United abilities] / [Ver.2.1]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
# Autor : AsFzKakarotto
# Descripción: Permite la Opción de crear habilidades que se manipulen con
#              2,3 o 4 personajes y si al no estar uno de estos personajes
#              o no poseer suficientes PM. La Habilidad no podrá realizarse.
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
# ¿Mostrar en la descripción de habilidad el nombre de los personajes
#  requeridos para ejecutar la Skill?.
#
DESCRIPTION_ADD_NAME = true # true= Si / false= No
#
# ¿Mostrar en la descripción de Habilidad el Costo de puntos Magicos requeridos
#  para realizar?. (Valor se descuenta para todos los que realizen la habilidad)
#
DESCRIPTION_ADD_COST = true # true= Si / false= No

#==============================================================================
# ** Window_Skill
#==============================================================================
# Ocultando solo el valor del PM = 0 en cada una de las Habilidades.
#==============================================================================

class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    if skill.sp_cost > 0
      self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
    end
  end
end

#==============================================================================

#==============================================================================
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# RPG::Skill
#==============================================================================
# Ajustando la Descripción de habilidad deseada.
#==============================================================================

class RPG::Skill
  
  alias description_sfc_later description
  def description
    data = BlizzCFG.sfc_database(@id)
    if data != nil
      text = @description
      text += " -#{data[0]}#{$data_system.words.sp}" if DESCRIPTION_ADD_COST
      if DESCRIPTION_ADD_NAME && data.size > 1
        text += " (#{$game_actors[data[1]].name}"
        data[2, data.size-2].each {|i| text += "+#{$game_actors[i].name}"}
        text += ')'
      end
      return text
    end
    return @description
  end
end

#==============================================================================
# module BlizzCFG
#==============================================================================

module BlizzCFG
  
  def self.sfc_database(id)
    case id
    
=begin
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
#                                  INSTRUCCIONES
#==============================================================================
(El Script se comprobó que funciona perfectamente sin ningún otro acompañado)

A continuación unas instrucciones para el modo de uso.
En el script editar lo siguiente:

        when ID then return [PM_COST, AC_ID1, AC_ID2, ...]

      ID  - La Magia que será otorgada como unión con otro o más personajes.
            Si el personaje acompañante a esta habilidad no está en batalla
            o cuando alguien que no tenga los suficientes SP (PM) requeridos...
            la Habilidad será desactivada de su uso. Al igual que si uno de sus
            integrantes resulta cambiar a un estado de restricción, la habilidad
            será temporalmente interrumpida hasta que este se restablezca
            nuevamente.
            También es compatible con habilidades curativas.
  PM_COST - El costo de magia (Esto se aplica para todos los personajes)
            Este costo no está asociado a lo que se otorga en base de datos.
            Ejemplo: si en base de datos se reduce a -5PM y
            en este script colocamos -10PM.
            El que use la Habilidad se le descuenta -15PM y a los personajes
            acompañantes -10PM, es por ello que no es recomendable aplicar un
            descuento en la base de datos (dejar en 0) pero aun así, esta opción
            estará disponible para el que lo desee así.
  AC_ID1  - ID del personaje 1
  AC_ID2  - ID del personaje 2
   ...     - más ID´s de personajes (¡¡COMPROBADO QUE SI SE PUEDE HACER!!:)
  
               Añadir aquí abajo las Habilidades Unidas                  

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=end

    when 81 then return [450,1,2,3]
    when 82 then return [320,2,3]
    when 83 then return [500,1,2,3,4]
      
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#                    No Editar lo que biene abajo
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    end
    return nil
  end
  
end


#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  
  alias skill_can_use_sfc_later? skill_can_use?
  def skill_can_use?(id)
    data = BlizzCFG.sfc_database(id)
    return skill_can_use_sfc_later?(id) && (data == nil || data.size == 1 &&
        data[0] * 1 <= @sr || data.size > 1 && $game_party.sfc_can_use?(id))
  end
  
  alias inputable_sfc_later? inputable?
  def inputable?
    return (inputable_sfc_later? && !$game_party.sfc_block.include?(self))
  end
  
end

#==============================================================================
# Game_Party
#==============================================================================

class Game_Party
  
  attr_accessor :sfc_block
  
  alias init_sfc_later initialize
  def initialize
    init_sfc_later
    @sfc_block = []
  end
  
  def sfc_can_use?(id)
    data = BlizzCFG.sfc_database(id)
    return data[1, data.size-1].all? {|id|
    $game_party.actors.include?($game_actors[id]) && $game_actors[id].restriction <= 0 &&
    !$game_actors[id].dead? && data[0] * 1 <= $game_actors[id].sp}
        
end
end

#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
  
  alias start_phase2_sfc_later start_phase2
  def start_phase2
    $game_party.sfc_block = []
    start_phase2_sfc_later
  end
  
  def make_sfc_action_result
    make_skill_action_result
    if @active_battler.current_action.forcing ||
        @active_battler.skill_can_use?(@skill.id)
      data = BlizzCFG.sfc_database(@skill.id)
      if data.size == 1
        @active_battler.sp -= data[0] * 1
      else
        data[1, data.size-1].each {|id| $game_actors[id].animation_id = @animation1_id}
        data[1, data.size-1].each {|id| $game_actors[id].sp -= data[0] * 1}
      end
      @status_window.refresh
    end
  end
  
  alias end_skill_select_sfc_later end_skill_select
  def end_skill_select
    end_skill_select_sfc_later
    data = BlizzCFG.sfc_database(@skill.id)
    if Input.trigger?(Input::C) && @skill != nil &&
          @active_battler.skill_can_use?(@skill.id) && data != nil
      @active_battler.current_action.kind = 6
      if data.size > 1
        data[1, data.size-1].each {|id| $game_party.sfc_block.push($game_actors[id])}
        $game_party.sfc_block.delete(@active_battler)
        $game_party.sfc_block.each {|a| a.current_action.clear}
      end
    end
  end
  
  alias phase3_prior_actor_sfc_later phase3_prior_actor
  def phase3_prior_actor
    phase3_prior_actor_sfc_later
    if @active_battler != nil && @active_battler.current_action.kind == 6
      @active_battler.current_action.clear
      $game_party.sfc_block = []
    end
  end
  
  alias upd_phase4_step2_sfc_later update_phase4_step2
  def update_phase4_step2
    upd_phase4_step2_sfc_later
    make_sfc_action_result if @active_battler.current_action.kind == 6
  end
end

No voy a obligarlos a que me añadan en los créditos a pesar de que me costo un poquito, pero sus comentarios me harán entender que al menos les sirvió. no creen?
Me despido y Gracias...
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 97

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Habilidades Unidas

Mensaje por Calayax el 2017-08-29, 13:35

Está interesante, me hace pensar en algo a modo de la habilidad final de los power rangers. Creo que le puedo dar algunas utilidades varias en el juego en que trabajo, sobre todo con lo de mascotas y la posibilidad de un "ataque especial al tener a tu mascota en combate"

+1 y claro que estará en los créditos en caso de uso ;D
avatar
Calayax
Soñador
Soñador

0/3

Créditos 669

Gracias : 41

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.