Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por MegaJJ el 2018-10-14, 18:24

Hola a todos, necesito ayuda para saber como equiparle a un arma un efecto secundario beneficioso para el que la equipa.

Por ejemplo, tengo una espada y esa espada tiene una habilidad secundaria, que es revitalia, el jugador al equiparla consigue tener los beneficios de revitalia y curarse un poco de vida cada turno.

Tengo este script que hace que el poseedor de un arma aprenda una habilidad.

Código:
#===================================================================#
#                      Aprender Habilidad
#
# -Aprende habilidades con equipar armas y armaduras (habilidad equipable)
# -Aprende habilidades con dar un objeto (definitivo)
#
# Correcciones: Quitar habilidad al desequipar arma y armadura/accesorio
#
#===================================================================#

module LearnSkills
 Item = {
# id => [skill_id, skill_id],
 33 => [7, 13, 16, 19],
 2 => [13, 14],
 811 => [261]
 }
 Weapon = {
# id => [skill_id, skill_id],
 3 => [7],
 1 => [30]
 }
 Armor = {
# id => [skill_id, skill_id],
 1 => [1],
 2 => [20, 21]
 }
end

class Game_Battler
 alias learn_skills_game_battler_item_effect item_effect
 def item_effect(item)
   if LearnSkills::Item.include?(item.id)
     LearnSkills::Item[item.id].each {|skill_id| self.learn_skill(skill_id)}
   else
     learn_skills_game_battler_item_effect(item)
   end
 end
end

class Game_Actor
 alias learn_skills_game_actor_setup setup
 alias learn_skills_game_actor_equip equip
 def setup(actor_id)
   learn_skills_game_actor_setup(actor_id)
   if @weapon_id != 0 and LearnSkills::Weapon.include?(@weapon_id)
     LearnSkills::Weapon[@weapon_id].each {|skill_id| self.learn_skill(skill_id)}
   end
   if @armor1_id != 0 and LearnSkills::Armor.include?(@armor1_id)
     LearnSkills::Armor[@armor1_id].each {|skill_id| self.learn_skill(skill_id)}
   end
   if @armor2_id != 0 and LearnSkills::Armor.include?(@armor2_id)
     LearnSkills::Armor[@armor2_id].each {|skill_id| self.learn_skill(skill_id)}
   end
   if @armor3_id != 0 and LearnSkills::Armor.include?(@armor3_id)
     LearnSkills::Armor[@armor3_id].each {|skill_id| self.learn_skill(skill_id)}
   end
   if @armor4_id != 0 and LearnSkills::Armor.include?(@armor4_id)
     LearnSkills::Armor[@armor4_id].each {|skill_id| self.learn_skill(skill_id)}
   end
 end
 def equip(equip_type, id)
   last_id = case equip_type
   when 0 ; @weapon_id
   when 1 ; @armor1_id
   when 2 ; @armor2_id
   when 3 ; @armor3_id
   when 4 ; @armor4_id
   end
   
   learn_skills_game_actor_equip(equip_type, id)
   case equip_type
   when 0
     if last_id != id
       if LearnSkills::Weapon.include?(last_id)#olvidar skill viejo
         LearnSkills::Weapon[last_id].each {|skill_id| self.forget_skill(skill_id)}
       end
       if LearnSkills::Weapon.include?(id)#aprender skill nuevo
         LearnSkills::Weapon[id].each {|skill_id| self.learn_skill(skill_id)}
       end
     end
   when 1..4
     if last_id != id
       if LearnSkills::Armor.include?(last_id)#olvidar skill viejo
         LearnSkills::Armor[last_id].each {|skill_id| self.forget_skill(skill_id)}
       end
       if LearnSkills::Armor.include?(id)#aprender skill nuevo
         LearnSkills::Armor[id].each {|skill_id| self.learn_skill(skill_id)}
       end
     end
   end
 end
end

¿Alguien sabe como hacer para que un arma tengo un estado beneficioso al equiparla?

Gracias.
avatar
MegaJJ
Iniciado
Iniciado

0/3

Créditos 58

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por kyonides-arkanthos el 2018-10-15, 02:58

Eso de los estados se siempre se ha hecho desde la base de datos... Si hablas de habilidades o técnicas o skills, solo puedes hacerlo con scripts. De hecho EkuipSkills viene a cumplir esa función y la de agregar más ranuras de armaduras...
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 578

Gracias : 85

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por Wecoc el 2018-10-15, 14:32

En la base de datos hay la opción de cambiar estado al equipar un arma, creo que lo que pides se podría hacer con eso.

avatar
Wecoc
Administrador
Administrador



Créditos 12310

Gracias : 654

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por MegaJJ el 2018-10-15, 15:20

@Wecoc escribió:En la base de datos hay la opción de cambiar estado al equipar un arma, creo que lo que pides se podría hacer con eso.


En mi base de datos tengo la habilidad revitalia, he hecho que dicha arma tenga tenga esa habilidad, pero lo que hace es causarle el daño al rival cuando lo que quiero es que el efecto secundario lo reciba el jugador.
avatar
MegaJJ
Iniciado
Iniciado

0/3

Créditos 58

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por Wecoc el 2018-10-15, 16:14

Ah cierto... En las armas funciona así. Ok un pequeño script te solucionará eso.
Ponlo encima de Main.

Código:
#==============================================================================
# ** [XP] Weapon Auto-states
#==============================================================================

module Weapon_Addons
  # ID del arma => ID del estado que causa al equiparla
  AUTO_STATES = {1 => 10}
end

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  def weapon_auto_state_id(weapon_id)
    if Weapon_Addons::AUTO_STATES.keys.include?(weapon_id)
      return Weapon_Addons::AUTO_STATES[weapon_id]
    end
    return 0
  end
  #--------------------------------------------------------------------------
  def update_auto_state_weapon(old_weapon, new_weapon)
    old_state_id = weapon_auto_state_id(old_weapon.id)
    if old_weapon != nil and old_state_id != 0
      remove_state(old_state_id, true)
    end
    new_state_id = weapon_auto_state_id(new_weapon.id)
    if new_weapon != nil and new_state_id != 0
      add_state(new_state_id, true)
    end
  end
  #--------------------------------------------------------------------------
  alias auto_state_weapon_equip equip unless $@
  def equip(equip_type, id)
    if equip_type == 0
      if id == 0 or $game_party.weapon_number(id) > 0
        update_auto_state_weapon($data_weapons[@weapon_id], $data_weapons[id])
      end
    end
    auto_state_weapon_equip(equip_type, id)
  end
  #--------------------------------------------------------------------------
end

En lo de la base de datos que dije ya no tienes que definir nada, ahora lo que tienes que hacer es definirlo en el script mismo, al principio del todo.

Donde pone esto:
[line]# ID del arma => ID del estado que causa al equiparla
AUTO_STATES = {1 => 10}[/line]

ID es el número de la lista, en el ejemplo que puse la Arma de ID 1 (Espada Bronce) causa el estado de ID 10 (Maldición) a quien la lleva.
Si quieres que ocurra con varias armas solo tienes que ponerlo como una lista, así: [line]{1 => 10, 2 => 10, 3 => 10}[/line]

Ojalá te sirva para el efecto que quieres.
avatar
Wecoc
Administrador
Administrador



Créditos 12310

Gracias : 654

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por MegaJJ el 2018-10-15, 16:33

@Wecoc escribió:Ah cierto... En las armas funciona así. Ok un pequeño script te solucionará eso.
Ponlo encima de Main.

Me ha servido, ya tengo lo que quería, muchisimas gracias. He probado tu script de revitalia y funciona, ¿pero sabes como quitar el efecto del veneno tras la batalla al usar revitalia?
avatar
MegaJJ
Iniciado
Iniciado

0/3

Créditos 58

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

Mensaje por Wecoc el 2018-10-15, 17:18

En la Base de Datos -> Estados hay un botón de "Condición Resolutoria - Al terminar batalla"
Aún así creo que no es lo que quieres; no quieres que se quite el estado, solo que no haya efecto veneno en mapa aunque tengas el estado, ¿no?

En ese caso solo tienes que añadir otra cosa al final del script Slip Cure.

Código:
class Game_Battler
  alias revitalia_slip_damage? slip_damage? unless $@
  def slip_damage?
    if $scene.is_a?(Scene_Map)
      for i in @states
        return false if i == 10 # ID del Estado Revitalia
      end
    end
    revitalia_slip_damage?
  end
end

Nuevamente verás que hay un número, tendrás que cambiarlo por la ID del estado.
avatar
Wecoc
Administrador
Administrador



Créditos 12310

Gracias : 654

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Necesito ayuda para que un arma tenga un efecto secundario

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.