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

Nuestros miembros han publicado un total de 84794 mensajes en 12069 argumentos.

[XP] Colección de Tips & Tricks de Wecoc

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-04-04, 23:54

Vaya, bien visto, hay un error ahí. Usé el alias del script anterior (Atonement) en vez de el que tocaba. Como los pruebo por tandas de 10 se me pasó. Por suerte es fácil de arreglar lo que pasa es que no puedo editar el post por un error de foroactivo con los posts largos que contienen spoiler... Así que lo pongo aquí de nuevo.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 73. Ally Protect
#------------------------------------------------------------------------------
# Skill con la que el battler selecciona a un aliado de modo que lo protege,
# si el aliado es golpeado el personaje recibirá el golpe por él.
#==============================================================================

class Game_Battler
  unless $@
    alias protect_ini    initialize
    alias protect_skill  skill_effect
    alias protect_remove remove_state
    alias protect_dead  add_state
  end
  
  attr_accessor :protect_target
  
  def initialize
    protect_ini
    @protect_target = nil
  end
  
  def skill_effect(user, skill)
    #--------------------------------------------------------------------------
    # Efecto de la habilidad
    #--------------------------------------------------------------------------
    if skill.id == 15 # ID de la habilidad
      hit = skill.hit
      hit_result = (rand(100) < hit)
      hit_result = false if self.id == user.id
      if hit_result == true
        user.add_state(3) # Estado Ally Protect
        user.protect_target = self
        return true
      end
    end
    #--------------------------------------------------------------------------
    protect_skill(user, skill)
  end
  
  def remove_state(state_id, force=false)
    protect_remove(state_id, force)
    if state_id == 3 # Estado Ally Protect
      if self.is_a?(Game_Actor)
        members = $game_party.actors.clone
      else
        members = $game_troop.enemies.clone
      end
      members.delete(self)
      for target in members
        if target.protect_target != nil && target.protect_target == self
          target.protect_target = nil
        end
      end
    end
  end
    
  def add_state(state_id, force=false)
    protect_dead(state_id, force)
    if state_id == 1 # ID estado Muerte
      if @protect_target != nil
        @protect_target.remove_state(3) # ID del estado Ally Protect
        @protect_target = nil
      end
    end
  end
end

class Game_Battler
  unless $@
    alias protect_attack_effect attack_effect
    alias protect_skill_effect  skill_effect
  end

  def attack_effect(attacker)
    if self.is_a?(Game_Actor)
      members = $game_party.actors.clone
    else
      members = $game_troop.enemies.clone
    end
    members.delete(self)
    for target in members
      if target.protect_target != nil && target.protect_target == self
        target.attack_effect(attacker)
        return
      end
    end
    protect_attack_effect(attacker)
  end
  
  def skill_effect(user, skill)
    if skill.power > 0 # Solo afecta a skills ofensivas
      if self.is_a?(Game_Actor)
        members = $game_party.actors.clone
      else
        members = $game_troop.enemies.clone
      end
      members.delete(self)
      for target in members
        if target.protect_target != nil && target.protect_target == self
          target.skill_effect(user, skill)
          return
        end
      end
    end
    protect_skill_effect(user, skill)
  end
end

Me alegra que algunos te hayan sido de utilidad.
Pronto subiré más.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por plergoth el 2017-04-08, 00:19

Buenas, cuando he visto todo esto me he maravillado de verdad, había cosas que no era capaz de hacer y buscaba desde hace tiempo (ejem... hacer daño al zombi del grupo usando curas) y alguno más que me hacía gracia, aunque como soy un ceporro con los scripts hay alguno que no me he atrevido a usar, por si acaso.

--------------

He estado probando algunos más y he de informarte de un pequeño bug sobre el script de Templar faith, aunque es un poco raro, la verdad. El caso es que cuando el grupo está herido y los curas con un hechizo los puntos de vida no se regeneran, como si no pudieses curarlos, entonces volví atrás y vi que se habían curado  de la forma correcta, es decir que en el momento en que los curas parece que no los curas, pero en realidad sí, no sé si me explico, es como si no se refrescara al momento y solo lo hiciera al volver atrás.

Edita Wecoc: Dos posts han sido juntados y he reordenado un poco el topic debido a un fallo interno de Foroactivo.
avatar
plergoth
Soñador
Soñador

0/3

Créditos 164

Gracias : 8

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-04-19, 02:21

plergoth: Gracias por mencionarlo, ya lo he editado, solo faltaba una línea para que se refrescara bien la ventana. Ahora debería funcionar correctamente.

-----------------

Pongo más, ojalá le sirvan a álguien (y ojalá no tengan errores, hago lo que puedo).

81. Attack Spirit Shackles
Estado que resta SP a quien lo posee, cada vez que ataca.

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 81. Attack Spirit Shackles
#------------------------------------------------------------------------------
# Estado que resta SP a quien lo posee, cada vez que ataca.
#==============================================================================

class Game_Battler
  alias attack_spirit_shackles attack_effect unless $@
  def attack_effect(attacker)
    effective = attack_spirit_shackles(attacker)
    if effective
      #------------------------------------------------------------------------
      # Efecto del estado Attack Spirit Shackles
      #------------------------------------------------------------------------
      if attacker.state?(11) # ID del estado
        attacker.sp -= attacker.maxsp / 10
      end
      #------------------------------------------------------------------------
    end
    return effective
  end
end

82. Venomous Attack
Veneno normal pero que su daño es el 10% del daño hecho al aplicar la habilidad que lo causó.

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 82. Venomous Attack
#------------------------------------------------------------------------------
# Veneno normal pero que su daño es el 10% del daño hecho al aplicar
# la habilidad que lo causó.
# Nota: El cálculo de daño personalizado solo afecta a los turnos en batalla
#==============================================================================

class Game_Battler
  
  # IDs de las skills que pueden causar el estado Venom
  VENOM_SKILLS = [17, 18, 19]
  
  attr_accessor :venom_damage
  alias venom_damage_ini initialize unless $@
  def initialize(*args)
    venom_damage_ini(*args)
    @venom_damage = 0
  end
  
  alias venom_skill_effect skill_effect unless $@
  def skill_effect(user, skill)
    effective = venom_skill_effect(user, skill)
    if effective && self.damage.to_i > 0
      if VENOM_SKILLS.include?(skill.id) && self.state?(11) # ID estado Venom
        @venom_damage = self.damage.to_i
      end
    end
  end
  
  alias remove_venom remove_state unless $@
  def remove_state(state_id, force=false)
    remove_venom(state_id, force)
    if state_id == 11 # ID estado Venom
      @venom_damage = 0
    end
  end
  
  def slip_damage_effect
    if self.state?(11) # ID estado Venom
      #------------------------------------------------------------------------
      # Fórmula personalizada para el estado Venom
      #------------------------------------------------------------------------
      self.damage = @venom_damage / 10
    else
      #------------------------------------------------------------------------
      # Fórmula por defecto (para otros estados)
      #------------------------------------------------------------------------
      self.damage = self.maxhp / 10
    end
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    self.hp -= self.damage
    return true
  end
end

83. Restart State Turns
Habilidad que hace que determinados estados del target vuelvan a su valor de turnos inicial

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 83. Restart State Turns
#------------------------------------------------------------------------------
# Habilidad que hace que determinados estados del target vuelvan a su valor de
# turnos inicial
#==============================================================================

class Game_Battler
  
  # IDs de los estados que serán reseteados
  RESTART_STATES = [2, 3, 15, 18]
  
  # Probabilidad de reinicio de cada estado
  RESTART_STATES_PROB = 100
  
  alias restart_turns_skill skill_effect unless $@
  def skill_effect(user, skill)
    effective = restart_turns_skill(user, skill)
    if skill.id == 17 # ID de la skill
      for i in RESTART_STATES
        if self.state?(i) && @states_turn[i] > 0
          if rand(100) < RESTART_STATES_PROB
            @states_turn[i] = $data_states[i].hold_turn
            effective = true
          end
        end
      end
    end
    return effective
  end
end

84. Damage Dispersion
Estado que hace que cuando te atacan el daño afecte a todo el grupo aliado pero solo un porcentaje (queda repartido entre todos)

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 84. Damage Dispersion
#------------------------------------------------------------------------------
# Estado que hace que cuando te atacan el daño afecte a todo el grupo aliado
# pero solo un porcentaje (queda repartido entre todos)
#==============================================================================

class Game_Battler
  alias damage_disp_attack attack_effect unless $@
  def attack_effect(attacker)
    if self.state?(5) # ID del estado
      #------------------------------------------------------------------------
      # Fórmula de daño por defecto (simplificada)
      atk = [attacker.atk - self.pdef / 2, 0].max
      damage = atk * (20 + attacker.str) / 20
      damage *= elements_correct(attacker.element_set)
      damage /= 100
      # Corrección de la fórmula (daño total)
      damage = damage * 85 / 100
      # Repartir daño entre todos los del grupo
      if damage > 0
        if self.is_a?(Game_Actor)
          battlers = $game_party.actors
        else
          battlers = $game_troop.enemies
        end
        n = 0
        for i in 0...battlers.size
          battler = battlers[i]
          next if !battler.exist?
          n += 1
        end
        return false if n == 0
        damage /= n
        amp = [damage * 15 / 100, 1].max
        # Aplicar daño a todos los del grupo
        for i in 0...battlers.size
          battler = battlers[i]
          next if !battler.exist?
          result = damage + rand(amp + 1) + rand(amp + 1) - amp
          battler.damage = result
          battler.damage_pop = true
        end
      #------------------------------------------------------------------------
      else
        self.damage = "Miss"
      end
      return true
    else
      return damage_disp_attack(attacker)
    end
  end
end

85. Killer State
Estado que cuando matas a un enemigo se intercambia por otro estado

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 85. Killer State
#------------------------------------------------------------------------------
# Estado que cuando matas a un enemigo se intercambia por otro estado
#==============================================================================

class Game_Battler
  
  # ID etado actual => ID etado tras matar enemigo
  KILLER_STATES = {11 => 12, 13 => 14}
  
  alias killer_state_attack attack_effect unless $@
  def attack_effect(attacker)
    effective = killer_state_attack(attacker)
    if effective && self.state?(1) # ID estado Muerte
      killer_state_effect(attacker)
    end
    return effective
  end
  
  alias killer_state_skill skill_effect unless $@
  def skill_effect(user, skill)
    effective = killer_state_skill(user, skill)
    if effective && self.state?(1) # ID estado Muerte
      killer_state_effect(user)
    end
    return effective
  end
  
  def killer_state_effect(attacker)
    for state in KILLER_STATES.keys
      if attacker.state?(state)
        attacker.remove_state(state)
        attacker.add_state(KILLER_STATES[state])
      end
    end
  end
end

86. Entrust
Skill que pasa todo el SP actual del que la usa a un aliado

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 86. Entrust
#------------------------------------------------------------------------------
# Skill que pasa todo el SP actual del que la usa a un aliado
#==============================================================================

class Game_Battler
  alias entrust_skill_effect skill_effect unless $@
  def skill_effect(user, skill)
    if skill.id == 4 # ID de la skill Entrust
      return false if user == self
      #------------------------------------------------------------------------
      # Efecto de la habilidad Entrust
      #------------------------------------------------------------------------
      sp_value = user.sp
      user.sp -= sp_value
      self.sp += sp_value
      #------------------------------------------------------------------------
      return true
    end
    return entrust_skill_effect(user, skill)
  end
end

87. Linken's Sphere
Accesorio que si lo llevas las habilidades ofensivas del enemigo te hacen la mitad de daño, pero al hacerte ese daño el accesorio se inactiva durante unos turnos.

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 87. Linken's Sphere
#------------------------------------------------------------------------------
# Accesorio que si lo llevas las habilidades ofensivas del enemigo te hacen la
# mitad de daño, pero al hacerte ese daño el accesorio se inactiva durante unos
# turnos.
# Nota: Para el efecto de inactivación se usa un estado que bloquea el efecto
# principal del accesorio.
#==============================================================================

class Game_Actor
  
  # IDs de las Skills ofensivas a las que les afecta el Linken's Sphere
  LINKEN_SKILLS = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
  
  alias linken_skill_effect skill_effect unless $@
  def skill_effect(user, skill)
    if $game_temp.in_battle && LINKEN_SKILLS.include?(skill.id)
      if @armor4_id == 17   # ID del accesorio Linken's Sphere
        if !self.state?(14) # ID del estado Linken's Cooldown
          self.critical = false
          if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
             ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
            return false
          end
          effective = false
          effective |= skill.common_event_id > 0
          hit = skill.hit
          if skill.atk_f > 0
            hit *= user.hit / 100
          end
          hit_result = (rand(100) < hit)
          effective |= hit < 100
          if hit_result == true
            power = skill.power + user.atk * skill.atk_f / 100
            if power > 0
              power -= self.pdef * skill.pdef_f / 200
              power -= self.mdef * skill.mdef_f / 200
              power = [power, 0].max
            end
            #------------------------------------------------------------------
            power /= 2 # Efecto de Linken's Sphere
            #------------------------------------------------------------------
            rate = 20
            rate += (user.str * skill.str_f / 100)
            rate += (user.dex * skill.dex_f / 100)
            rate += (user.agi * skill.agi_f / 100)
            rate += (user.int * skill.int_f / 100)
            self.damage = power * rate / 20
            self.damage *= elements_correct(skill.element_set)
            self.damage /= 100
            if self.damage > 0
              if self.guarding?
                self.damage /= 2
              end
            end
            if skill.variance > 0 and self.damage.abs > 0
              amp = [self.damage.abs * skill.variance / 100, 1].max
              self.damage += rand(amp+1) + rand(amp+1) - amp
            end
            eva = 8 * self.agi / user.dex + self.eva
            hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
            hit = self.cant_evade? ? 100 : hit
            hit_result = (rand(100) < hit)
            effective |= hit < 100
          end
          if hit_result == true
            if skill.power != 0 and skill.atk_f > 0
              remove_states_shock
              effective = true
            end
            last_hp = self.hp
            self.hp -= self.damage
            effective |= self.hp != last_hp
            @state_changed = false
            effective |= states_plus(skill.plus_state_set)
            effective |= states_minus(skill.minus_state_set)
            if skill.power == 0
              self.damage = ""
              unless @state_changed
                self.damage = "Miss"
              end
            end
          else
            self.damage = "Miss"
          end
          unless $game_temp.in_battle
            self.damage = nil
          end
          if effective && self.damage.to_i > 0
            add_state(14) # ID del estado Linken's Cooldown
          end
          return true
        end
      end
    end
    linken_skill_effect(user, skill)
  end
end

88. Lucky Run
Estado que hace que si no te atacan durante todo un turno de batalla, sube tu AGI temporalmente.

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 88. Lucky Run
#------------------------------------------------------------------------------
# Estado que hace que si no te atacan durante todo un turno de batalla,
# subes tu Agilidad temporalmente
# Nota: Es recomendable poner al estado la opción de quitarse automáticamente
# al terminar batalla
#==============================================================================

class Game_Battler
  unless $@
    alias lucky_ini initialize
    alias lucky_base_agi agi
    alias lucky_remove remove_state
    alias lucky_attack attack_effect
    alias lucky_skill  skill_effect
    alias lucky_item   item_effect
  end
  
  attr_accessor :lucky_agi
  attr_accessor :lucky_turn
  
  def initialize
    lucky_ini
    @lucky_agi = 0
    @lucky_turn = true
  end
  
  def agi
    return lucky_base_agi + @lucky_agi
  end
  
  def remove_state(state_id, force = false)
    lucky_remove(state_id, force)
    if state_id == 8 # ID estado Lucky Run
      @lucky_agi = 0
      @lucky_turn = true
    end
  end
  
  def attack_effect(attacker)
    effective = lucky_attack(attacker)
    @lucky_turn = false if effective
    return effective
  end
  
  def skill_effect(user, skill)
    effective = lucky_skill(user, skill)
    @lucky_turn = false if effective && self.damage.to_i > 0
    return effective
  end
  
  def item_effect(item)
    effective = lucky_item(item)
    @lucky_turn = false if effective && self.damage.to_i > 0
    return effective
  end
end

class Scene_Battle
  alias lucky_start_phase4 start_phase4 unless $@
  def start_phase4
    for battler in $game_party.actors + $game_troop.enemies
      next if !battler.exist?
      next if !battler.state?(8) # ID estado Lucky Run
      next if battler.lucky_turn == false
      battler.lucky_agi += 10 # Valor AGI añadido
    end
    lucky_start_phase4
    for battler in $game_party.actors + $game_troop.enemies
      battler.lucky_turn = true
    end
  end
end

89. Exertion Rune
Estado que hace que cada turno gane +10% ATK hasta un máximo
Al quitarse el estado el ATK vuelve a la normalidad.

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 89. Exertion Rune
#------------------------------------------------------------------------------
# Estado que hace que cada turno gane +10% ATK hasta un máximo
# Al quitarse el estado el ATK vuelve a la normalidad.
#==============================================================================

class Game_Battler
  unless $@
    alias exertion_ini initialize
    alias exertion_base_atk atk
    alias exertion_remove remove_state
  end
  
  attr_accessor :exertion_atk
  
  def initialize
    exertion_ini
    @exertion_atk = 0
  end
  
  def atk
    return exertion_base_atk + @exertion_atk
  end
  
  def remove_state(state_id, force = false)
    exertion_remove(state_id, force)
    if state_id == 9 # ID estado Exertion Rune
      @exertion_atk = 0
    end
  end
end

class Scene_Battle
  alias exertion_start_phase4 start_phase4 unless $@
  def start_phase4
    for battler in $game_party.actors + $game_troop.enemies
      next if !battler.exist?
      next if !battler.state?(9) # ID estado Exertion Rune
      #------------------------------------------------------------------------
      # Fórmula de ATK personalizada
      #------------------------------------------------------------------------
      atk_plus = battler.base_atk * 10 / 100
      atk_max  = battler.base_atk * 50 / 100
      battler.exertion_atk += atk_plus
      if battler.exertion_atk > atk_max
        battler.exertion_atk = atk_max
      end
      #------------------------------------------------------------------------
    end
    exertion_start_phase4
  end
end

90. Illness
Estado que hace que quien lo tiene cada turno obtenga un estado negativo distinto dentro de una lista de posibles (al azar)

Spoiler:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 90. Illness
#------------------------------------------------------------------------------
# Estado que hace que quien lo tiene cada turno obtenga un estado negativo
# distinto dentro de una lista de posibles (al azar)
#==============================================================================

class Scene_Battle
  
  # IDs de los estados posibles a obtener si se tiene el estado Illness
  # Truco: Puedes repetir números para que obtenerlos sea más probable
  ILLNESS = [11, 11, 12, 12, 13, 14, 15]
  
  alias illness_start_phase4 start_phase4 unless $@
  def start_phase4
    for battler in $game_party.actors + $game_troop.enemies
      next if !battler.exist?
      next if !battler.state?(9) # ID estado Illness
      states = ILLNESS.select {|s| !battler.state?(s)}
      if states.size > 0
        new_state = states[rand(states.size)]
        battler.add_state(new_state)
      end
    end
    @status_window.refresh
    illness_start_phase4
  end
end

Que justo el 88 sea el de la suerte no es casualidad. Si es que pienso en todo... en fin, Wecoc y sus locuras xDD


Última edición por Wecoc el 2017-05-10, 13:40, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por AsFzKakarotto el 2017-04-25, 22:22

Me he tomado el tiempo de revisar uno por uno cada script en diferentes "Nuevos proyectos“ con el Rpg maker XP... a cada uno le he hecho una demo y he dado con los siguientes resultados. Aclarar que en mi fase de tiempos he llegado a revisar hasta el 90 y de los que no están en lista quiere decir que funcionan perfectamente a como los he revisado yo, o sea que sin ningún otro script acompañado a excepción de "Data File Save" y de los que vienen por default en el maker.

NOTA:
Algunas soluciones que he puesto las dejare intacta para que después alguien las lea y le pueda servir de ayuda como es el caso de “7. Death Mark”


Mis Menciones:

7. Death Mark

Funcionando bien el script, pero quisiera dejar dos soluciones y muy efectivas con respecto a este tips & tricks y que wecoc en su ultimo mensaje dijo que eran convenientes. El primero: El estado de “Death Mark” NO debe ser removido cuando se tiene el estado de “Muerte” ya que si lo haces, cuando se llegue a aplicar este estado a cualquiera en combate (Tanto enemigos como aliados) al recibir daño y ser eliminados aparecerá el valor “0” (troller…xd)
Y el Segundo: Como parece ser un estado que se aplica con 100% de probabilidades, ajusta este estado en la base de datos con la propiedad de “Sin Resistencia” ya que de lo contrario aparecerá en la mayoría de veces el mensaje “Miss”(Falló) y el estado se aplicará de igual forma siendo un mensaje un tanto contra decible. De esta manera este tips & tricks de wecoc te funcionará de manera perfecta y sin mensajes de daños incorrectos.


25. Organic Fragment

Esta vez el tips & tricks funciona bien…

Notas importantes (Para que se entienda un poco más):
1) [Opcional] Para que la habilidad requiera que sus ataques sean seguidos una tras otra, se debe configurar los 2 estados creados en la base de datos de la siguiente manera:
      • Marcar la casilla de “Curación automática del termino de batalla”
      • Tras 1 turno con 100% de probabilidad de curar.
Muy de lo contrario el estado quedará en el enemigo hasta que se termine el combate ya que tras 0 turnos y 0 % de quitar seria bastante obvio que el estado permanezca mucho rato en el enemigo dando posibilidades al jugador de atacarlo en otro momento.
2) El Enemigo cambiará de estado aunque se le de por fallido el ataque.
No es que sea una falta ENOOOOOOORME, en lo Personal no es casi nada molesto.

27. Plague

Por cierto ahora entendí lo de “Plague Touch” y la array SKILL_TOUCH
Cuando mencionas que solo  funciona con ataques físicos por default y no skill.
Pensé que los estados que brinda la habilidad son transferidos a aliado y enemigo, pero no… Si no que realmente hace que el enemigo o aliado que realice la habilidad ajustada en el script y ataque a alguien con un estado, el que uso la habilidad se infecte… Gracias Wecoc me has puesto en claro el script.

Bueno, pasando a lo que es mi mención… la cosa es que lo que pensé que sucedía en Plague Touch con el array SKILL_TOUCH es muy similar a lo que hace el tips & tricks “27. Plague“ solo que los estados que se posean actualmente como ejemplo el usuario de la habilidad tiene veneno, Este accione la habilidad y la transfiera a un enemigo…
Bueno, aquí va el problema… intento e intento usando la skill y el estado no se transfiere
y el personaje que intento e intento sufre del estado veneno todo los turnos...



Habilidad:
•Producir efecto sobre = Enemigo
•Id de la habilidad ajustadas las 2 veces requeridas en el script
•Id de el estado añadido también en el array de el script

Realmente no se que sucede…


44. Power Charge

Me Explico: He creado dos habilidades en la base de datos (Más que nada para que cambie de estado al enemigo) una que cambia a “Power Charge” y la otra habilidad cambia a “Mind charge” (Ambos estados tienen marcada la propiedad “Sin Resistencia”). Estas 2 habilidades las Aprende Aluxes…
Uso la habilidad para cambiar a “Power Charge” a un enemigo. Correcto el enemigo cambia, lo ataco con un ataque básico y se duplica el daño. Perfecto.
Ahora restauro el proyecto uso la habilidad para cambiar a “Mind Charge” y sucede que el estado No se aplica al enemigo. Eso es lo que pasa….


45. Greed

Aviso Importante sobre este script:
Wecoc parece ser que lo ha solucionado [Sin Fallas en el script].

En lo personal seguiré dejando el mensaje por que este será el único script que me tomare un poquito más de tiempo en volver a revisar. El Motivo: No puede incorporar en mis datos el nuevo Advanced Scope que ha hecho wecoc … pero borrare este mensaje lo más pronto pueda.
Error posiblemente ya solucionado:   Abro el menú de Habilidades y…



48. Mana Bank

Con respecto a Mana Bank [El original] Funciona como en su descripción lo dice, perfectamente pero el que tu has ampliado para anular la trampa, la revise y se agradece mucho, pero resulta que:

self.sp = self.maxsp

(para restablecer los SP máximos) no se acciona bajo ningún merito.
Se que intentaste añadir muy resumidamente lo mismo que hace el script
“Estados anti-estados” en el “Mana Bank” pero aun así no se puede restablecer
el SP al máximo por unos turnos, al cambio con “Estados anti-estados” de forma separada a este script si lo permite.


49. Map Advantage

Solo.  
Funciona perfectamente. No lo he probado con el script Area Support y creo que no lo hare por que me parece un poco más difícil hasta el momento. Después quizás lo revise con un poco más de tiempo.


50. Chaos Bolt

Actualmente el script funcionando muy bien, me podrías explicar resumidamente la formula que se toma, es que con tantos valores y símbolos matemáticos quede como el burro de la clase. Además tus explicaciones son muy efectivas

54. Blue Magic

Es verdad permite aprender la habilidad.... pero por alguna razón no permite utilizarla aparecen inhabilitadas además al salir al mapa y utilizar la habilidad de curación tampoco permite usarla en los aliados.

55. Spell Siphon

Aparece un mensaje de error cuando se va usar la habilidad:                     
?????''? 83 ??? NameError ????????                     
undefined local variable pr method 'action' for                     
#Game_Enemy:0x27e1fe8
Aclarar que la Habilidad la configure para que produzca efecto en el enemigo.

61. Dualcast

El script cumple su tarea, pero resulta que el efecto no se aplica en el primer turno que se adquiere el estado si no que el segundo turno.

En:  @dualcast_count = 0

de la línea 24 de el script, si le cambias el valor 0 a el valor 1 esto se soluciona.
Pero suele ocurrir al revés, el segundo turno con el estado, el efecto no se aplica…

Además si eliminas a un enemigo con la doble habilidad ofensiva cuando se aplica la primera aparece este error (Ya sea de las dos formas explicadas anteriormente)

Por que supongo que la segunda habilidad aplicable no encuentra su destino
creo yo...

62. Convert

Wecoc dijo:

Habilidad que pasa el HP actual a SP y el SP actual a HP (los invierte).
Si tu SP es 0 la habilidad falla, loco suicida.

Jajajajaaaaa…. No falta el loco suicida que lo hará.
El script funciona perfecto y personalmente me gusto bastante, pero hay alguna forma de quitar el “Miss” no me refiero al que se aplica cuando tienes 0 SP, si no al
que aparece cuando no hay cambios en los parámetros de la base de datos.

Has creado un sistema Maquina del tiempo... enserio te pasaste Wecoc.... muchísimas gracias, has superado mi esfuerzo de horas como enginer... Lo revisare con ansias .

65. Arcane Curse

El Tips & Tricks no lo comprendo muy bien… supone que al jugador le salta los turnos
como si estuviese aturdido o algo similar, o le baja la agilidad.
¿Hay que disminuir la agilidad cuando los enemigos son objetivos o a los aliados también?

67. Avoid Critical

Comprobar el funcionamiento de este tips & tricks no es fácil, créanme jejejee.
Hacer que un enemigo realice ataques críticos simultáneamente es un desafío grande, pero después de todo confío en el funcionamiento de este.

72. Atonement

¿Al igual que el script “Mending”, requiere que estén en tu proyecto los script  
“Spirit Shackles” y “Slip Cure”?.... Es que a mi no me funciona.
He hecho estos 2 métodos diferentes por si acaso.

Método 1
1- El estado es aplicado a uno de mis aliados (con una habilidad cualquiera).
2- El aliado que tiene el estado Atonement usa la habilidad ofensiva
   (habilidad Atonement) a un enemigo.
3- El enemigo recibe daño y con el aliado no ocurre nada.
Método 2

1- El estado es aplicado a uno de mis aliados (con la habilidad Atonement)
2- El aliado que tiene el estado Atonement usa la habilidad ofensiva
(una habilidad común) hacia un enemigo.
3- El enemigo recibe daño y con el aliado no ocurre nada.
En estos métodos he fijado correctamente el ID del estado en el script
(las 3 veces que requiere).

75. Overheat

Sea cual se el valor que coloco en:  @heat_points > 500
El enemigo explota siempre.
En:       @heat_points >
Eh colocado el valor 0 y hasta 5000 y el enemigo explota de igual manera
en el primer ataque.
Mi configuración simplemente fue añadir en el script “Heat” la habilidad
57 (Cruz Sagrada) para el enemigo 1:

HEAT_ENEMIES = {1 => [3, 4, 57], 2 => [3, 4]}

Para asi revisar fácilmente este sistema con Aluxes.
El script  ”Heat” individualmente funciona increíble.

76. Confusion

El script funciona bien.
Aunque me dio gracia ver cuando se lo aplique al único enemigo con poca vida
que quedaba en combate, se auto ataco por si mismo (Con la confusión) y sin morir y nada gane la batalla. ¡¡Eso si fue confusión XD!!
Pero usualmente el script funciona bien.

84. Damage Dispersion

El Script dispersa el daño, pero el daño que se muestra no se aplica a los aliados
Esto no es primera vez que me sucede en un script de daños, y no estoy loco xd…
Aparece visualmente el daño descontado pero los personajes siguen con sus respectivos puntajes de forma intacta.

90. Illness

NOTA: Wecoc actualmente párese que lo ha solucionado....
Yo pronto lo revisare para remover este mensaje.

Al iniciar los daños al enemigo y aplicar el estado “Illness”… aparece esta ventana:


E1. Poison Spore

Muy buen tips & tricks…. Aunque el héroe si llega a morir por el daño de este efecto, el héroe se queda en combate sin desparecer (Bug)… si bien aparece con el estado muerte, pero el personaje sigue intacto hasta que finaliza el combate.
Eso me recuerda a “76. Confusion” que sucedía exactamente lo mismo pero con los enemigos. No se muy bien si con aliados ocurría esto.


===========================================================================

Ahora coloco los tips & tricks que están puestos en el tema de “Data File Save”
Con esto ya estaría todo revisado por mi parte.

2. Chicken Knife

Cree una espada rápida (igual a Espada de bronce) con la id 33
La ID la ajuste en el script (Las tres veces)… Inicie el proyecto,
añadí la espada al inventario, se la equipe en Aluxes, inicie la batalla,
escape y como resultado final... El Ataque no subió.
¿A caso el ataque incrementa solamente en batalla, cuando el
personaje intenta huir, pero este no tiene éxito?

4. Mejai's Soulstealer

No estoy seguro pero parece que la fuerza del arma, no aumenta a medida
que voy ganando. Por que el método en el script es más o menos así:
•Fuerza del arma ID,
•Se multiplica por la cantidad de victorias
•Y el resultado se le suman 10.
Para revisarlo de manera más rápida:

actor.glory_score += 1

Reemplacé el 1 por el 10 y no hubo cambios…

9. Map States

Inicio el proyecto y:

Aparece esta ventana...
Por si a caso no he cambiado absolutamente nada en el script ya que como viene por defecto: Actor id 1, Enemigo id 1 y en el primer mapa con el estado “Aturdido”, en una demo de ajuste simple se asemeja bastante a la personalización.
Básicamente el script lo copie y lo pegue arriba de “main” y abajo de “Data file save”

Como lo pueden notar, me lo tome bastante enserio .


Última edición por AsFzKakarotto el 2017-05-24, 16:53, editado 4 veces
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 97

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-04-28, 03:02

¡AAAAHHHHH! ¡Cuantas cosas! En fin... Supongo que uno no puede subir tantos scripts y luego esperar que no haya bugs en ninguno xD
Gracias por tomarte tu tiempo :D

Iré comentando poco a poco porque todos de golpe puede ser mortal, si eso al final juntaré mis posts en uno.

7. Death Mark:

Se ve que dentro de add_state usé el alias que había nombrado para remove_state en vez del de add_state, por eso ya no se añadía ningún estado y ocurrían cosas raras. Es raro porque recuerdo haberlo testeado y que funcionaba, debí cambiarle algo en el último momento.
Ya lo he actualizado en el post principal. Sobre esta habilidad también hay que decir que el modo como se muestra el daño es algo soso, pero añadir una animación que lo acompañe no debería ser un problema.

Ahora debería ir todo bien; el actor aplica habilidad al enemigo (o al revés), éste obtiene el estado y tras unos turnos el enemigo recibe de nuevo el daño que ese actor le haya causado durante esos turnos. Para hacer eso el estado debe tener la opción de desactivarse tras varios turnos (o tras recibir golpe).

34. Slip Cure:

Lo sé, pero llegué a la conclusión que para esos casos es mejor usar el sistema que comenté aquí: Efectos de estados al andar por el mapa

Así puedes tener varios estados y que cada uno haga distintas cosas más personalizadas. Es decir, éste script Slip Cure solo es aplicable en esa habilidad concreta que causa curación por turno en batalla, para otros casos recomiendo lo que se comentó en ese tutorial.

14. Black Blood

Ah sí, los fallos tontos son mi tipo de fallo principal. En principio ya está todo en orden también, tal como estaba no soportaba que más de un miembro del grupo tuviera el estado a la vez. La verdad es que es una posibilidad que no contemplé al hacerlo *facepalm* xD

40. Arisen Phoenix

Gracias por arreglarlo entonces, lo he actualizado pero de un modo un poco distinto a como lo hiciste tú.
Es un bug muy muy raro, no estoy nada seguro pero puede que sea debido a que algunas versiones del RMXP usen una versión de Ruby que soporta select! mientras que otras no.

45. Greed

Sí, había dos pequeños bugs en éste, pero lo he resubido y ya está todo correcto.
Disculpad las molestias, pero bueno mejor tarde que nunca (?)

19. Destiny Bond

Otro fallo tonto que ya está arreglado. Al menos en éstos casos son simples de detectar y arreglar...

48. Mana Bank

Muy buen punto. Tú mismo ya aportaste una solución que en mi opinión es mi favorita, que es usar el script de Estados anti-estados junto con el de Mana Bank para impedir la trampa.

Aún así para quien lo prefiera he hecho una simple ampliación de Mana Bank para que si usas la skill teniendo el estado, no haga nada.

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 48. Mana Bank (*)
# Versión con trampa de uso ilimitado arreglada
#------------------------------------------------------------------------------
# Estado que hace que el SP sea ilimitado, pero una vez el estado termina
# luego el SP baja a 0
#==============================================================================

class Game_Battler
  alias manabank_sp sp= unless $@
  def sp=(sp)
    #--------------------------------------------------------------------------
    # Efecto del estado Mana Bank
    #--------------------------------------------------------------------------
    if self.state?(16) # ID estado Mana Bank
      manabank_sp(sp) if sp > @sp
      return
    end
    #--------------------------------------------------------------------------
    manabank_sp(sp)
  end
  
  alias safe_manabank_add_state add_state unless $@
  def add_state(state_id, force=false)
    safe_manabank_add_state(state_id, force)
    #--------------------------------------------------------------------------
    # Efecto al añadir estado Mana Bank
    #--------------------------------------------------------------------------
    return if self.state?(16) # ID del estado (¡abortar si ya lo tienes!)
    if state_id == 16 # ID del estado
      manabank_sp(self.maxsp)  # Igualar SP al máximo al añadir el estado
    end
    #--------------------------------------------------------------------------
  end
  
  alias safe_manabank_remove_state remove_state unless $@
  def remove_state(state_id, force=false)
    safe_manabank_remove_state(state_id, force)
    #--------------------------------------------------------------------------
    # Efecto al quitar estado Mana Bank
    #--------------------------------------------------------------------------
    if state_id == 16 # ID del estado
      manabank_sp(0) # Quitar todo el SP al retirar el estado
    end
    #--------------------------------------------------------------------------
  end
end

Explicación de Plague:
27. Plague

El estado Plague hace que si tienes alguno de los estados de la array PLAGUE_STATES, puedas usar la skill a un enemigo de modo que él también pase a tener ese mismo estado o estados. Lo lógico por lo tanto es poner solo en aquella lista los estados que tengan efectos negativos (veneno, por ejemplo). Tal como está es solo eso. Luego es relativamente fácil añadir que cada estado se transfiera según una probabilidad, así como hacer que se cure el que usa la skill al pasar el estado... pero eso ya son añadidos. En principio no hay ningún error en ese script pero no estoy seguro, si detectas algo me lo dices.

31. Plague Touch

El script Plague Touch hace que cuando te ataquen pases alguno de los estados PLAGUE_TOUCH al enemigo.
Por lo tanto la diferencia es que aquí es el enemigo quien hace la acción, y queda infectado al atacarte a tí. Puede ser interesante usar ámbos a la vez, en cuyo caso PLAGUE_STATES y PLAGUE_TOUCH normalmente tendran los mismos estados transferibles.
Por defecto funciona solo en ataques físicos, no en skills, pero en algunas skills puede interesar que también se infecte, luego esas las pones en la array SKILL_TOUCH.

25. Organic Fragment

Había un error en la fórmula de daño. Ya está arreglado.

44. Mind Charge

Es exactamente idéntico que el Power Charge pero en magias, así que no tengo ni idea de como puede funcionar uno y no el otro.
Tendrás que darme más detalles sobre ese.

47. White Wind

Eso sí que eran palabras mayores. Había varias cosas importantes que no había tenido en cuenta, así que he vuelto a hacer todo el script de 0, de un modo totalmente distinto. Ahora ya funciona bien. Por cierto, en el nuevo la skill debe afectar a Grupo Aliado, a diferencia de antes que tenía que afectar al Usuario.

50. Chaos Bolt

Arreglado. No era un bug en sí, en la fórmula que puse dividí entre 100 donde no debía y por eso el valor era tan bajo. Igualmente esa fórmula es personalizable.

52. Mending

Arreglado. Otra tontería, pero ésta vez me costó más de localizar, la verdad xD
Como dijiste, el script solo añade los estados en ese caso concreto, luego lo que hagan esos estados depende de los otros scripts.
El script en sí no requiere ningún script más, pero para recrear ese efecto concreto es necesario usar esos dos scripts.

58. Critical State

Funciona bien, seguramente no has tenido en cuenta que para que el estado aparezca tienes que tener antes otro estado previo (el cual por cierto no desaparece ni nada, solo hace como de "interruptor" para la condición). En el script se especifica aunque seguramente no queda demasiado bien explicado.
He hecho una versión sin ese requerimiento, es un poco raro que ese estado crítico siempre te aparezca (a cada actor y a cada enemigo) pero quizá a alguien le resulte útil así que aquí esta:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 58. Critical State (*)
# Versión sin requerimiento de estado previo
#------------------------------------------------------------------------------
# Estado que aparece automáticamente si te queda poca vida, y desaparece
# si vuelves a recuperarla
# Nota: He puesto que ocurra solo si ya tiene un estado alterado
#==============================================================================

class Scene_Battle
  alias critical_state_upd update unless $@
  def update
    critical_state_upd
    critical_state = 17 # ID Estado crítico
    #--------------------------------------------------------------------------
    # Efecto de Critical State
    #--------------------------------------------------------------------------
    for member in $game_party.actors + $game_troop.enemies
      if member.exist?
        if member.hp < member.maxhp * 50 / 100
          if !member.state?(critical_state)
            member.add_state(critical_state, true)
            @status_window.refresh
          end
        else
          if member.state?(critical_state)
            member.remove_state(critical_state, true)
            @status_window.refresh
          end
        end
      end
    end
  end
end


Última edición por Wecoc el 2017-05-08, 15:33, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-04-28, 15:29

Ya estan casi todos y ya está todo bien juntado, por ahora me esperaré a ver qué más dices sobre lo arreglado y sobre los demás que te quedaban por comprobar, y a ver si a partir de ahora se puede atar todo bien atado.

De los mencionados dejo para más adelante Blue Magic, Spell Siphon y Mind Charge porque no tengo ni idea de lo que está pasando en esos. Pero quiero comentar que hay otros scripts por ahí que hacen el efecto Blue Magic, podéis echarle una ojeada a éste: Blue Magic y hay uno en el Tons of Add-Ons.

A parte me hicieron dos pedidos especiales que los incluiré como E1 y E2.
No era un topic de pedidos en sí, pero se pueden considerar excepciones.

E1. Poison Spore
Enemigos que al atacarles y aplicarles magias ofensivas te dañan y además pueden envenenarte.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# E1. Poison Spore
#------------------------------------------------------------------------------
# Enemigos que al atacarles y aplicarles magias ofensivas te dañan y además
# pueden envenenarte
#==============================================================================

class Game_Battler
  
  # IDs de los enemigos venenosos
  POISON_SPORE_ENEMIES = [4, 5]
  
  unless $@
    alias poison_spore_ini    initialize
    alias poison_spore_attack attack_effect
    alias poison_spore_skill  skill_effect
  end
  
  attr_accessor :poison_spore
  
  def initialize
    poison_spore_ini
    @poison_spore = false
  end
  
  def attack_effect(attacker)
    if self.is_a?(Game_Enemy) && POISON_SPORE_ENEMIES.include?(self.id)
      poison_spore_effect(attacker)
    end
    return poison_spore_attack(attacker)
  end
  
  def skill_effect(user, skill)
    if self.is_a?(Game_Enemy) && POISON_SPORE_ENEMIES.include?(self.id)
      if skill.power > 0
        poison_spore_effect(user)
      end
    end
    return poison_spore_skill(user, skill)
  end
  
  def poison_spore_effect(attacker)
    #--------------------------------------------------------------------------
    # Efecto de Poison Spore
    #--------------------------------------------------------------------------
    poison_hit = 100 # Proporción de afectación de las esporas
    if rand(100) < poison_hit
      # Fórmula de daño
      damage = attacker.maxhp * 10 / 100
      attacker.damage = damage
      attacker.hp -= damage
      # Aplicar Veneno
      poison_rate = 50 # Proporción de envenenamiento
      if rand(100) < poison_rate
        attacker.poison_spore = true
      end
    end
    #--------------------------------------------------------------------------
    return true
  end
end

class Scene_Battle
  alias battler_damage_pop_phase4_step5 update_phase4_step5 unless $@
  def update_phase4_step5
    for battler in $game_party.actors + $game_troop.enemies
      if battler.exist?
        if battler.damage != nil
          battler.damage_pop = true
        end
        if battler.poison_spore == true
          battler.poison_spore = false
          battler.add_state(3) unless battler.state_guard?(3) # ID Estado Veneno
        end
      end
    end
    battler_damage_pop_phase4_step5
  end
end

E2. Black Resonance
Habilidad ofensiva que hace más daño cuantos más aliados tengan un estado concreto.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# E2. Black Resonance
#------------------------------------------------------------------------------
# Habilidad ofensiva que hace más daño cuantos más aliados tengan un
# estado concreto
#==============================================================================

class Game_Battler
  alias black_resonance_skill skill_effect unless $@
  def skill_effect(user, skill)
    default_power = skill.power
    if skill.id == 7 # ID de la skill Black Resonance
      if user.is_a?(Game_Actor)
        battlers = $game_party.actors
      else
        battlers = $game_troop.enemies
      end
      battlers = battlers.select {|actor| actor.exist?}
      resonance_state = 11 # ID del estado Resonance
      resonance = battlers.select {|actor| actor.state?(resonance_state)}
      #------------------------------------------------------------------------
      # Fórmula de poder de la skill dependiendo de la resonancia de los estados
      #------------------------------------------------------------------------
      resonance_factor = resonance.size ** 2
      factor = 1.0 + (resonance_factor * 0.1)
      skill.power = (skill.power * factor).to_i
      #------------------------------------------------------------------------
    end
    effective = black_resonance_skill(user, skill)
    skill.power = default_power
    return effective
  end
end

Como siempre, aquí me tenéis.


Última edición por Wecoc el 2017-04-28, 17:12, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por BlazeCrimson el 2017-04-28, 16:52

Grande wecoc, ese E1 será ideal para nuestra adorablemente maligna y tóxica seta (?)

_________________
Image and video hosting by TinyPic
avatar
BlazeCrimson
Analista
Analista

0/3

Créditos 1117

Gracias : 109

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por AsFzKakarotto el 2017-05-06, 21:12

He Editado “Mis menciones” con respecto a mi ultimo mensaje escrito.
(Para que el tema no sea tan extenso)
-He borrado las que ya ha solucionado Lord “Wecoc”.
-He añadido las que no se han solucionado
 (Lo se wecoc, haces lo posible por solucionarlas).
-He añadido las que continuo revisando, del 60 en adelante…

Y como siempre, gracias wecoc por tomarte tu tiempo en solucionar estos contra tiempos.

¿Los que tu has revisado ahora ultimo, después lo remuevo de mi lista de menciones?...
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 97

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-05-07, 10:57

¡AAAAHHHHH! ¡Pero si creo que aún hay más que antes! Vaya por Dios, menudo scripter... Después de ésto me meteré en un pozo xD

Te respondí a tu última pregunta por MP. Voy a ir subiendo poco a poco como la otra vez, a ver si ésta vez sí se vence a toda esa munión de bugs.
Varios ya deberían estar resueltos de antes, según parece es porque no actualizaste esos de la lista, porque el texto es el que ya había. Vuelve a revisarlo, por favor. Si alguno aún no te funciona como debería necesitaré que comentes el error con más detalle. Me refiero concretamente a Chaos Bolt, Mending, Critical State, White Wind y posiblemente también Organic Fragment. A éstos por lo tanto por ahora no les haré ningún otro cambio.

7. Death Mark

Buenas aclaraciones, tienes razón. La primera de hecho ya se indica en las instrucciones del script ;) Sobre la segunda lo que propones me parece la mejor forma de evitar problemas, así que por lo que a eso respecta no cambiaré el script. Sweat

14. Black Blood

Arreglado por enésima vez (y eso que era de los sencillos xD). Básicamente el arreglo anterior no era correcto. Ya está bien, y además ahora también puedes definir items con ese efecto a parte de skills, siguiendo tu sugerencia.

45. Greed

Arreglado, no era problema de éste script sinó de una incompatibilidad entre Data Save File y Advanced Scope. Es curioso, diseñé Advanced Scope para ser compatible con Data Save File, pero por lo que sea al final acabó no siéndolo... Si vas al topic de Advanced Scope encontrarás la nueva versión compatible.

48. Mana Bank (*)

No entiendo ese error que dices, no debería haber ningún problema en ese punto. Lo único que se me ocurre es que no cambiaras la ID de estado por la correcta en alguno de los pasos, ya que en ese script concreto esa sustitución ocurre varias veces y quizá no las indiqué todas del todo bien. Aún así a parte de especificarlo mejor decidí tirar por lo seguro en el método que define el SP y usar el alias en vez del nuevo a lo largo del script allá donde sea posible, te agradecería que lo pruebes de nuevo, con suerte tu bug se habrá arreglado.

73. Ally Protect

Ya está arreglado.

------

AsFzKakarotto escribió:No me vas a creer… pero es primera vez que descubro que el estado “Silencio” solo anula las habilidades con la propiedad “Magia F.” (Que ignorancia la mía) estaba justo probando tu tips & tricks cuando me di cuenta.
No suelo ocupar fanáticamente este estado es por ello que no lo note.
Yo pensaba que inhabilitaba todas las habilidades.
Sabes de algún script que con un estado anule el uso de toda habilidad.
Me siento como si me sacaron un sistema importante en el maker.
creo que hay bastantes, pero tu eres el maestro y me dirás el mejor ;)

Cierto, no me acordaba de esa propiedad de "Inhabilitar Magias". (Puedes quitarlo de la lista por cierto porque no es ningún bug de ningún script mío xD).
En realidad las que inactiva son las que 'Ataque F' vale 0, 'Magia F' no tiene nada que ver. El modo en el que el maker define las restricciones de estado no me gusta demasiado pero bueno, eso ya sería otra cuestión.

Puedo hacer un script que las inhabilite todas, no es nada complicado.

E3. Skill Restriction
La restricción por defecto de estado "Inhabilitar Magias" las inhabilita TODAS, no solo las que su Ataque F vale 0 como ocurre por defecto.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# E3. Skill Restriction
#------------------------------------------------------------------------------
# La restricción por defecto de estado "Inhabilitar Magias" las inhabilita
# TODAS, no solo las que su Ataque F vale 0 como ocurre por defecto.
#==============================================================================

class Game_Battler
  alias skill_restriction_fix_use? skill_can_use? unless $@
  def skill_can_use?(skill_id)
    return false if self.restriction == 1
    return skill_restriction_fix_use?(skill_id)
  end
end
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-05-08, 16:24

Éstos que pongo a continuación ya estaban subidos pero he tenido que sacarlos del post original así que los pongo aquí de nuevo.
Disculpen la...

76. Confusion ¿Véis lo que he hecho aquí? xD
Estado que hace que la mitad de las veces los ataques y ciertas habilidades ofensivas se las haga uno mismo.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 76. Confusion
#------------------------------------------------------------------------------
# Estado que hace que la mitad de las veces los ataques y ciertas habilidades
# ofensivas se las haga uno mismo.
# Nota: El estado debe tener la restricción "Atacar aliado" desactivada
#==============================================================================

class Game_Battler
  unless $@
    alias confusion_attack attack_effect
    alias confusion_skill  skill_effect
  end
 
  def attack_effect(attacker)
    if self != attacker && attacker.state?(14) # ID estado Confusión
      prob = 50 # Probabilidad de atacarse uno mismo
      if rand(100) < prob
        return attacker.attack_effect(attacker)
      end
    end
    return confusion_attack(attacker)
  end
 
  def skill_effect(user, skill)
    if self != user && skill.power > 0 && user.state?(14)
      prob = 50 # Probabilidad de atacarse uno mismo
      if rand(100) < prob
        return user.skill_effect(user, skill)
      end
    end
    return confusion_skill(user, skill)
  end
end

77. Skill Overwrite
Al aprender una skill se desaprende otra más débil.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 77. Skill Overwrite
#------------------------------------------------------------------------------
# Al aprender una skill se desaprende otra más débil
#==============================================================================

class Game_Actor < Game_Battler
  # ID nueva skill => IDs de las skills que se desaprenden
  SKILL_OVERWRITE = {3 => [1, 2], 5 => [4], 6 => [5]}
  SKILL_OVERWRITE.default = []
  alias overwrite_skills learn_skill unless $@
  def learn_skill(skill_id)
    overwrite_skills(skill_id)
    for s in SKILL_OVERWRITE[skill_id]
      forget_skill(s)
    end
  end
end

78. Healing Mail
Armadura que por cada paso que haces por el mapa llevándola, cura un poco al que la lleva y sube un poco su inteligencia.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 78. Healing Mail
#------------------------------------------------------------------------------
# Armadura que por cada paso que haces por el mapa llevándola, cura un poco
# al que la lleva y sube un poco su inteligencia
# Nota: El personaje que la lleva tiene que estar vivo
#==============================================================================

class Game_Party
  alias healing_mail_steps increase_steps unless $@
  def increase_steps
    healing_mail_steps
    for actor in @actors
      next if actor.dead?
      if actor.armor3_id == 17 # ID de la armadura Healing Mail
        #-------- Efecto al andar --------------------------------------------
        actor.hp += actor.maxhp / 10
        if @steps % 10 == 0
          actor.int += 1
        end
        #---------------------------------------------------------------------
      end
    end
  end
end

79. Actor Adding Armor
Armadura que añade un actor a la party si otro la lleva equipada, y lo quita si se la quita.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 79. Actor Adding Armor
#------------------------------------------------------------------------------
# Armadura que añade un actor a la party si otro la lleva equipada,
# y lo quita si se la quita
#==============================================================================

class Game_Actor
  alias adding_armor_equip equip unless $@
  def equip(equip_type, id)
    #--------------------------------------------------------------------------
    adding_armor_id = 14 # ID de la armadura Actor Adding Armor
    adding_actor_id = 2  # ID del actor a añadir
    #--------------------------------------------------------------------------
    if @armor4_id == adding_armor_id
      remove_armor_actor = true
    end
    adding_armor_equip(equip_type, id)
    if @armor4_id == adding_armor_id
      add_armor_actor = true
    end
    return if add_armor_actor == remove_armor_actor
    if add_armor_actor
      $game_party.add_actor(adding_actor_id)
    end
    if remove_armor_actor
      $game_party.remove_actor(adding_actor_id)
    end
  end
end

80. Curada
Estado que hace que si atacan al personaje éste no se dañe, pero el HP se reste de una variable. Cuando ésta llega a 0 se desactiva el estado.

Spoiler:
Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 80. Curada
#------------------------------------------------------------------------------
# Estado que hace que si atacan al personaje éste no se dañe, pero el HP se
# reste de una variable. Cuando ésta llega a 0 se desactiva el estado.
# Si se aplica Curada dos veces el efecto es sumado al que ya había
#==============================================================================

class Game_Battler
  unless $@
    alias curada_ini    initialize
    alias curada_skill  skill_effect
    alias curada_remove remove_state
    alias curada_hp_set hp=
  end
 
  attr_accessor :curada_hp
 
  def initialize
    curada_ini
    @curada_hp = 0
  end
 
  def hp=(new_hp)
    hp_damage = (@hp - new_hp)
    if hp_damage > 0
      if @curada_hp >= hp_damage
        @curada_hp -= hp_damage
        new_hp = @hp
      else
        hp_damage -= @curada_hp
        @curada_hp = 0
        remove_state(10) # ID Estado Curada
        new_hp = @hp - hp_damage
      end
    end
    curada_hp_set(new_hp)
  end
 
  def skill_effect(user, skill)
    if skill.id == 14      # ID Skill Curada
      user.add_state(10)    # ID Estado Curada
      user.curada_hp += 500 # HP añadida al efecto Curada
      return true
    end
    curada_skill(user, skill)
  end
 
  def remove_state(state_id, force=false)
    curada_remove(state_id, force)
    if state_id == 10 # ID Estado Curada
      @curada_hp = 0
    end
  end
end

Muy pronto seguiré arreglando los bugs que se hayan encontrado.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Eron el 2017-05-08, 16:43

Foroactivo dando problemas como siempre x'DD

Inspirado por algunos de éstos pequeños scripts de batalla, he hecho uno yo del mismo estilo y que contiene varios =DD
Creo que ninguno de éstos está ya en la lista de Wecoc pero no estoy seguro porque hay tantos...
No me quedó muy límpio, pero intenté ponerle algún comentario que os ayude. No pido créditos, ya conocéis mi magnanimidad x'D

- Aplicar estado solo si el golpe es Critical, solo si es Miss o solo si el daño es mayor que n
- Efectividad del item depende del target (por ejemplo un actor al que el Éter le afecta solo un 10% de la veces, por lo que sea)*
- Efectividad de la skill depende del que la usa (por ejemplo un actor que tiene la habilidad Cura pero no es curandero y solo le sale un 10% de las veces)*
- Ir a Game Over si todos los personajes tienen un estado, por ejemplo si estan petrificados
- Ir a Victoria si todos los enemigos tienen un estado (similar al anterior)

* El valor puede ser dinámico según algún cálculo a parte, podéis hacer además de depender de actor que dependa de otra cosa como el nivel, o una variable...

Código:
#==============================================================================
# [XP] Algunos Edits de Batalla - por Eron (libre de uso)
#------------------------------------------------------------------------------
# Usa los que quieras y borra o desactiva los demás
#==============================================================================

#==============================================================================
''' Aplicar estado solo si el golpe es Critical '''
#==============================================================================

class Game_Battler
  alias eron_critical_skill skill_effect unless $@
  def skill_effect(user, skill)
    result = eron_critical_skill(user, skill)
    if skill.id == 17 # ID Habilidad
      if self.critical == true
        self.add_state(11, true)  # Añadir estado al target
        #user.add_state(12, true) # Añadir estado al user
        return true
      end
    end
    return result
  end
end

#==============================================================================
''' Aplicar estado solo si el golpe es Miss '''
#==============================================================================

class Game_Battler
  alias eron_miss_skill_effect skill_effect unless $@
  def skill_effect(user, skill)
    result = eron_miss_skill_effect(user, skill)
    if skill.id == 17 # ID Habilidad
      if self.damage == "Miss"
        self.add_state(13, true)  # Añadir estado al target
        #user.add_state(14, true) # Añadir estado al user
        return true
      end
    end
    return result
  end
end

#==============================================================================
''' Aplicar estado solo si el daño es mayor que n '''
#==============================================================================

class Game_Battler
  alias eron_greathit_skill_effect skill_effect unless $@
  def skill_effect(user, skill)
    result = eron_greathit_skill_effect(user, skill)
    if skill.id == 17 # ID Habilidad
      if self.damage.to_i > 700 # Valor n
        self.add_state(15, true)  # Añadir estado al target
        #user.add_state(16, true) # Añadir estado al user
        return true
      end
    end
    return result
  end
end

#==============================================================================
''' Efectividad del item depende del target '''
#==============================================================================

class Game_Battler
  alias eron_item_hit_target item_effect unless $@
  def item_effect(item)
    real_item_hit = item.hit
    # ------------- parte configurable -------------------------------
    if item.id == 1 # ID del item
      if self.is_a?(Game_Actor)
        case self.id # IDs de los actores con efectividad modificada
        when 1 # Personaje principal
          item.hit = 50
        #when ...
        end
      elsif self.is_a?(Game_Enemy)
        case self.id # IDs de los enemigos con efectividad modificada
        when 1 # Fantasma
          item.hit = 100
        #when ...
        end
      end
    end
    # ------------- parte configurable -------------------------------
    result = eron_item_hit_target(item)
    item.hit = real_item_hit
    return result
  end
end

#==============================================================================
''' Efectividad de la skill depende del user '''
#------------------------------------------------------------------------------
# (puede hacerse por target, cambia 'user' por 'self' en la p. configurable)
#==============================================================================

class Game_Battler
  alias eron_skill_hit_user skill_effect unless $@
  def skill_effect(user, skill)
    real_skill_hit = skill.hit
    # ------------- parte configurable -------------------------------
    if skill.id == 1 # ID de la skill
      if user.is_a?(Game_Actor)
        case user.id # IDs de los actores con efectividad modificada
        when 1 # Personaje principal
          skill.hit = 50
        #when ...
        end
      elsif user.is_a?(Game_Enemy)
        case user.id # IDs de los enemigos con efectividad modificada
        when 1 # Fantasma
          skill.hit = 100
        #when ...
        end
      end
    end
    # ------------- parte configurable -------------------------------
    result = eron_skill_hit_user(user, skill)
    skill.hit = real_skill_hit
    return result
  end
end

#==============================================================================
''' Ir a Game Over si todos los personajes tienen el estado Petrificado '''
#==============================================================================

class Scene_Battle
  alias eron_petrified_judge_modA judge unless $@
  def judge
    n = 0
    for actor in $game_party.actors
      if actor.exist? && !actor.state?(17) # ID estado Petrificado
        n += 1
      end
    end
    if n == 0 # Todos tienen el estado o estan muertos
      if $game_temp.battle_can_lose
        $game_system.bgm_play($game_temp.map_bgm)
        battle_end(2)
        return true
      end
      $game_temp.gameover = true
      return true
    end
    return eron_petrified_judge_modA
  end
end

#==============================================================================
''' Ir a Victoria si todos los enemigos tienen el estado Petrificado '''
#==============================================================================

class Scene_Battle
  alias eron_petrified_judge_modB judge unless $@
  def judge
    n = 0
    for enemy in $game_troop.enemies
      if enemy.exist? && !enemy.state?(17) # ID estado Petrificado
        n += 1
      end
    end
    if n == 0 # Todos tienen el estado o estan muertos
      start_phase5
      return true
    end
    return eron_petrified_judge_modB
  end
end
avatar
Eron
Principiante
Principiante

0/3

Créditos 1290

Gracias : 54

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-05-08, 20:45

Eron: Gracias por aportar, y además tal como has dicho, tan magnánimamente xD Algunos de esos add-ons los encuentro interesantes, especialmente el primero (que de hecho hay alguno parecido en la lista pero da igual) y el penúltimo. Si tienes otras ideas ponlas.

AsFzKakarotto:
(...) puedes decirme a que beneficia la inteligencia en un personaje del maker, por que en la versión español que tengo no sale este parámetro en ningún lado.
¿A caso es para que la posibilidad de fallar sea menor?
El parámetro 'Magia' en inglés se denomina Intelligence (int), por eso a veces también le llamamos Inteligencia. Es una traducción loca que hicieron en la versión española, supongo que por traducir desde el japonés. La Magia o Inteligencia afecta al daño de las magias, cuanto mayor es más daño hacen, solo eso.
Como no es un fallo de un script en principio creo que puedes quitarlo de la lista esa de menciones.
Aunque este ultimo script mencionado (Restart State Turns) me hubiese gustado mucho si el conteo de turnos hubiese aparecido visualmente en batalla, para que el jugador tenga un poco de orientación y no estar perdido.
Tienes razón, de hecho ese usa los turnos por defecto de los estados, y en muchas ocasiones sería útil que éstos se visualizaran tal como ocurre en VX Ace y MV si no me equivoco. De hecho los estados en XP ni siquiera tienen icono, su visualización en batalla es bastante pobre. Pero todos esos cambios se tendrían que hacer en un script a parte, fuera de los Tips & Tricks. Probablemente ya exista algún script para eso.

-------------------------

64. Undo

No se me ocurre ningún modo eficaz de hacer que no quede tan junto tal como viene la batalla por defecto, así que lo dejaré tal como está. Posiblemente éste tipo de habilidad sea más útil en un sistema de batalla que plantee los turnos de modo distinto.
Lo de la Máquina del tiempo lo he hecho de modo distinto, usando el script Retry Battle de base.

90. Illness

Nada, un pequeño fallo con el alias. Ya funciona bien.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por AsFzKakarotto el 2017-05-12, 04:57

Lo de Inteligencia es el daño de una magia... ok gracias por aclararme esto.
(Este estado en lo videojuegos siempre me genera confusión jejejee)

Con respecto a lo de "Restart State Turns" parase que tu "[XP] State Icons" cumple esa función,
veré si es compatible con estos 2 Script.

E3b. Skill Restriction 2
Estado que restringe toda clase de Habilidades.
Cambia la restricción por defecto de "Inhabilitar Magias" que solo inhabilita las habilidades que su Ataque F vale 0 a un "Inhabilitar Magias" que las inhabilita TODAS, no solo las que su Ataque F vale 0 como ocurre por defecto.

Sabes… me gusto el script… pero yo quería algo así :

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# E3b. Skill Restriction 2
#------------------------------------------------------------------------------
# Estado que restringe toda clase de Habilidades.
# Cambia la restricción por defecto de "Inhabilitar Magias" que solo inhabilita
# las habilidades que su Ataque F vale 0 a un "Inhabilitar Magias" que las
# inhabilita TODAS, no solo las que su Ataque F vale 0 como ocurre por defecto.
#------------------------------------------------------------------------------
# Nota: El estado que inhabilita toda habilidad, debe tener de igual forma
# marcada la opción de "Inhabilitar Magias", Los demas estados con la propiedad
# de "Inhabilitar Magias" con las que su Ataque F vale 0 se puede seguir usando
# de igual forma.
#==============================================================================

class Game_Battler
  alias skill_restriction_fix_use? skill_can_use? unless $@
  def skill_can_use?(skill_id)
    return false if self.state?(17) # ID del estado
    return skill_restriction_fix_use?(skill_id)
  end
end

Jajajajaaaa… lo siento wecoc pero lo adapte para que sea un Estado concreto el que anule todas las habilidades. Se agrádese mucho tu solución pero este era lo que yo quería… de hecho sin tu script no hubiese podido crearlo. No se de script pero le pego a algo.

POR CIERTO MIS MENCIONES YA HAN DE ESTAR ACTUALIZADAS [24-05-2017]
Good Luck Master...
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 97

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-08-15, 13:09

He hecho un pequeño update. No es gran cosa pero bueno, poco a poco.
Por cierto está bien hecho tu script, me alegra que te sirviera mi apaño aunque fuera para hacer éste.

7. Death Mark

Ahora el estado se aplica sólo si la habilidad causó daño (desactivable)

25. Organic Fragment

Nueva versión sólo aplicable en ataques no fallidos

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 25. Organic Fragment (*)
# Versión sólo aplicable en ataques no fallidos
#------------------------------------------------------------------------------
# Habilidad que a parte de golpear "marca" al enemigo.
# Hay que atacarlo tres veces seguidas con la habilidad, si no desaparece el
# efecto. Una vez llegada la tercera, causa una gran cantidad de daño.
#------------------------------------------------------------------------------
# Nota: Hay que definir dos Estados alterados distintos
# Ataque 1 - Añade Estado 1 ('Organic Fragment')
# Ataque 2 - Añade Estado 2 ('Organic Complete')
# Ataque 3 - Causa mucho daño
#==============================================================================

class Game_Battler
 
  ORGANIC_RESET_MISS = true  # Desactivar todo el proceso si se falla
 
  alias organic_des_skill skill_effect unless $@
  def skill_effect(user, skill)
    effective = organic_des_skill(user, skill)
    if skill.id == 17 # ID de la Skill
      # Si no tiene ni el Estado 1 ni el Estado 2
      if !self.state?(11) and !self.state?(12)
        if self.damage == "Miss"
          return true
        end
        # Añadir Estado 1
        add_state(11)
        return true
      end
      # Si tiene el Estado 1
      if self.state?(11)
        if self.damage == "Miss"
          if ORGANIC_RESET_MISS
            remove_state(11)
          end
          return true
        end
        # Quitar Estado 1 y añadir Estado 2
        remove_state(11)
        add_state(12)
        return true
      end
      # Si tiene el Estado 2
      if self.state?(12)
        if self.damage == "Miss"
          if ORGANIC_RESET_MISS
            remove_state(11)
            remove_state(12)
          end
          return true
        end
        # Quitar Estado 2 y hacer mucho daño (Definir aquí la fórmula de daño)
        remove_state(12)
        damage_extra = self.damage * 5
        self.damage += damage_extra
        self.hp -= damage_extra
        return true
      end
    end
    return effective
  end
end


62. Convert

Aparecía "Miss" pese a aplicarse el efecto, ahora ya no.

Por ahora eso es todo.

Ya que estoy comentaré por encima lo que hace Chaos Bolt, porque es un poco complejo.
Compararé una habilidad normal con Chaos Bolt.

Habilidad por defecto:
Daño base, probabilidad de fallo por defecto.
Probabilidad crítico: 4 * Destreza atacante / Agilidad target
Daño crítico: Daño base * 2


Habilidad Chaos Bolt:
Daño base, probabilidad de fallo por defecto.
Probabilidad crítico: 100
Daño crítico: Daño base * (4 * Destreza atacante / Agilidad target) / 100


La fórmula es personalizable pero el resultado viene a ser que cuanto mayor es la destreza del usuario y menor la agilidad del target, más alto es el daño.
Esos dos parámetros por defecto no afectan al daño, solo a la probabilidad de crítico.
Se recomienda que el daño base de la habilidad sea alto (testead para lograr configurar el daño deseado).

En realidad la idea detrás de Chaos Bolt es dar una plantilla para crear habilidades con fórmulas de daño totalmente distintas, podéis usarlo de referencia para otros que tengan las fórmulas que queráis.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-08-15, 16:08

Wecoc, no puedo agradecerte lo suficiente por todos estos scripts. No exagero, pero estuvo buscando por años scripts para crear abilidades que los tuyos permiten.  

Sin embargo, debo reinterar las observaciones de AsFzKakarotto acerca del Plague Script. Lo probé tanto en mi proyecto como en uno nuevo y no parace funcionar, a pesar de que lo configuré como éste lo indica.

---------------------

Edit: Probé el script y ahora funciona como es debido.
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-08-23, 02:08

Lamento el double post pero me entró una duda acerca del Healing Mail script. ¿Habría una manera de hacer una version que recupere SP al caminar? Si es así, ¿Se podría usar los dos scripts para crear una armadura que recupere HP y SP al caminar?
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-08-23, 16:20

Solo tienes que modificar la parte donde pone "Efecto al andar", que ya está pensada para que la modifiquéis a vuestro gusto.

Ésto es el HP que es recuperado, que en el ejemplo es 1/10 del HP máximo.
actor.hp += actor.maxhp / 10

Debajo puedes poner lo mismo para SP
actor.sp += actor.maxsp / 10

Puedes cambiar los valores como quieras, por ejemplo puedes poner un valor fijo en vez de basarlo al HP máximo:
actor.hp += 5

Debajo además pone que cada 10 pasos la int (parámetro Poder Mágico) suba 1. Puedes quitarlo y/o usarlo de referencia para saber cómo hacer algo solo cada n pasos.
Si quieres más de un equipo cada uno con su efecto de éstos, debajo del "bloque" que corresponde al if actor.armor3_id == 17 pones otro bloque igual pero con la nueva ID y con el tipo de protector que es: weapon_id, armor1_id, armor2_id, armor3_id o armor4_id y dentro su efecto. Si quieres más de un protector con el mismo efecto puedes usar if actor.armor3_id == 17 or actor.armor3_id == 18 como condición, por ejemplo. No hay mucho más a considerar en ese script.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-08-24, 12:26

Ya veo, es mucho más sencillo de lo que me imaginaba.

Gracias por aclarar mi duda.
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-09-10, 11:26

Lamento el double post pero enconté un error en el script de slip cure. Si creas una armadura que te da el efecto, ésta te causa daño en el campo ya que el juego actua como si estuvieses envenenado.

También intenté modificar el sciprt para crear un estado que te recupere SP de la misma manera en que lo hize con el script de healing armor pero no me funcionó. Snif
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-09-10, 16:47

Hay varios modos de cubrir ese problema, por eso el script está centrado en su efecto básico en batalla. En mapa he hecho algunos 'tips' a parte para poder darle más efectos al estado veneno, mira por ejemplo el tutorial Efectos de estados al andar por el mapa.

Igualmente supongo que el modo más simple de afrontar ese problema en éste caso es haciendo exactamente lo mismo que se hizo en batalla, pero en mapa, como una segunda parte del script.

Te lo pongo aquí:

Código:
#==============================================================================
# ** [XP] Wecoc's Tips & Tricks Battle Collection
#------------------------------------------------------------------------------
# 34b. Slip Cure
#------------------------------------------------------------------------------
# Estado similar a Veneno pero que cura en vez de dañar.
# Nota: En las propiedades hay que definirlo como si fuera Veneno
#==============================================================================

#==============================================================================
# a) Efecto en batalla
#==============================================================================

class Game_Battler
  def slip_damage_effect
    #--------------------------------------------------------------------------
    self.damage = self.maxhp / 10 # Fórmula de daño por defecto
    #--------------------------------------------------------------------------
    if self.state?(3) # Estado Slip Cure
      if defined?(BLACK_BLOOD_ID) != nil && self.state?(BLACK_BLOOD_ID)
        self.damage = self.maxhp / 10  # Fórmula de daño (Black Blood)
      else
        self.damage = -self.maxhp / 10 # Fórmula de curación
      end
    end
    #--------------------------------------------------------------------------
    # Añade aquí todos los estados que tengan más prioridad que el Slip Cure
    #--------------------------------------------------------------------------
    if self.state?(2) # Estado Veneno
      self.damage = self.maxhp / 10 # Fórmula de daño
    end
    #--------------------------------------------------------------------------
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    self.hp -= self.damage
    #--------------------------------------------------------------------------
    return true
  end
end

#==============================================================================
# b) Efecto en mapa
#==============================================================================

class Game_Party
  def check_map_slip_damage
    for actor in @actors
      check_actor_slip_damage(actor) if actor.hp > 0
      $game_temp.gameover = $game_party.all_dead?
    end
  end
  def check_actor_slip_damage(actor)
    for i in actor.states
      if $data_states[i].slip_damage
        if i == 3 # Estado Slip Cure
          if defined?(Game_Battler::BLACK_BLOOD_ID) != nil &&
            actor.state?(BLACK_BLOOD_ID)
            # Fórmula de daño (Black Blood)
            actor.hp -= [actor.maxhp / 100, 1].max
            # Flash rojo
            $game_screen.start_flash(Color.new(255,0,0,128), 4)
          else
            # Fórmula de curación
            actor.hp += [actor.maxhp / 100, 1].max
            # Flash verde
            $game_screen.start_flash(Color.new(0,255,0,128), 4)
          end
        else
          # Fórmula de daño por defecto
          actor.hp -= [actor.maxhp / 100, 1].max
          # Flash rojo
          $game_screen.start_flash(Color.new(255,0,0,128), 4)
        end
      end
    end
    $game_system.se_play($data_system.actor_collapse_se) if actor.hp == 0
  end
end


Última edición por Wecoc el 2017-09-10, 18:58, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-09-10, 18:50

Lo probé y ahora tengo este error:

avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-09-10, 18:58

Ah ya ya, prueba otra vez Sweat

Por cierto no sé mucho a qué te referías en ese caso con lo del SP pero donde pone lo de modificar la fórmula supongo que podrías cambiarla para que afecte al SP, de modo similar al otro script. Si lo que quieres es juntar ámbas propiedades de esos scripts en una debería ser suficiente usar la misma ID para ámbos efectos... aunque no sé si son compatibles o no.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-09-10, 19:40

Lo probé otra vez y cosas my curiosas suceden:

- El personaje aparece como envenenado pero recupera HP en el campo y en batalla.
- Si le quitamos el "slip damage" al estado de Slip Cure, este actua como un venemo normal en batalla y fuera de ésta.
- Si hacemos que el estado de Venom tenga más prioridad que el slip cure, el personaje no sufre daño en el campo pero si en la batalla.

Aquí va una vez que illustra lo primero:

avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Wecoc el 2017-09-10, 23:01

Eso es lo que tiene que pasar. Supongo que el "problema" ahí está en que tienes como envenenado el estado de ID 3, cuando no es el que te interesa que sea el curativo. Para arreglar eso solo tienes que cambiar la ID en el script, tal como indican los comentarios de script. No tiene nada que ver con las prioridades de estado en realidad... tal como funciona el script más bien va por ID, siendo el de ID más alta el que muestra el efecto en pantalla pese a funcionar ambos.

Supongo que el método por defecto del maker de entender los venenos es algo limitante, pues no contempla la posibilidad de varios venenos a la vez en la party (aún menos si fueron modificados para verse distinto). Igualmente como dije hay otras opciones de ampliación del sistema por ahí, tendrás que buscar un poco si es que quieres algo más complicado. Yo no creo que pueda hacer más al respecto, eso va más allá de lo que pretendía abarcar ese script.
avatar
Wecoc
Administrador
Administrador



Créditos 9218

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Lance Amano el 2017-09-11, 01:31

Lo entiendo. Veré que puedo modificar del script con lo que sé de Ruby.

Gacias por aclarar las dudas.
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 205

Gracias : 20

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Colección de Tips & Tricks de Wecoc

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Volver arriba


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