Registrarse

[Essentials] Tutorial Básico Para Hacer Efectos Secundarios de Movimientos

Diego Mertens

Dartrix Joven
¡Alola!
Hoy les voy a mostrar cómo agregar nuevos efectos secundarios para nuevos movimientos. Sin más que decir, ¡Empezemos!

Bien, primero hay que buscar un movimiento que se parezca al movimiento que quieras hacer, yo les voy a poner un movimiento como ejemplo y para explicar.

En el editor de Scripts; ir hasta el Script "PokeBattle_MoveEffects"
E ir hasta el fondo.



Código:
class PokeBattle_Move_159 < PokeBattle_Move
  def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
    if !attacker.pbCanIncreaseStatStage?(PBStats::ATTACK,attacker,false,self) &&
       !attacker.pbCanIncreaseStatStage?(PBStats::SPATK,attacker,false,self) &&
       !attacker.pbCanIncreaseStatStage?(PBStats::SPDEF,attacker,false,self) &&
       !attacker.pbCanIncreaseStatStage?(PBStats::DEFENSE,attacker,false,self) &&
       !attacker.pbCanIncreaseStatStage?(PBStats::SPEED,attacker,false,self) && 
      @battle.pbDisplay(_INTL("¡Las estadísticas de {1} no van a subir más!",attacker.pbThis))
      return -1
    end
    @battle.pbDisplay(_INTL("¡{1} siente que su fuerza evolutiva lo motiva a seguir!",attacker.pbThis))
    pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
    showanim=true
    if attacker.pbCanIncreaseStatStage?(PBStats::ATTACK,attacker,false,self)
      attacker.pbIncreaseStat(PBStats::ATTACK,6,attacker,false,self,showanim)
      showanim=false
    end
    if attacker.pbCanIncreaseStatStage?(PBStats::SPATK,attacker,false,self)
      attacker.pbIncreaseStat(PBStats::SPATK,6,attacker,false,self,showanim)
      showanim=true
    end
   if attacker.pbCanIncreaseStatStage?(PBStats::SPDEF,attacker,false,self)
      attacker.pbIncreaseStat(PBStats::SPDEF,6,attacker,false,self,showanim)
      showanim=false
    end
   if attacker.pbCanIncreaseStatStage?(PBStats::DEFENSE,attacker,false,self)
      attacker.pbIncreaseStat(PBStats::DEFENSE,6,attacker,false,self,showanim)
      showanim=true
    end
   if attacker.pbCanIncreaseStatStage?(PBStats::SPEED,attacker,false,self)
      attacker.pbIncreaseStat(PBStats::SPEED,6,attacker,false,self,showanim)
      showanim=false
    end
    return 0
  end
end

Ahora pasaré a explicar que significan cada parte del script.
Código:
class PokeBattle_Move_159 < PokeBattle_Move
Éste es para definir qué número de efecto es. Se puede ocupar desde el 159.
Código:
pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
    if !attacker.pbCanIncreaseStatStage?
Chekea si pueden subir las stats, y tambien se puede poner para que no reproduzca su respectiva animación.
Código:
attacker.pbIncreaseStat(PBStats::ATTACK,6,attacker,false,self,showanim)
      showanim=false
    end
Si la estadística aún puede subir, subirá la estadística indicada con letras mayúsculas. Las stats que pueden subir o bajar son:
ATTACK=Ataque
DEFENSE=Defensa
SPATK=Ataque Especial
SPDEF=Defensa Especial
SPEED=Velocidad
ACCURACY=Precisión
EVASION=Evasión

Código:
      showanim=false
Si es true, mostrará la animación del siguiente cambio de estadísticas del Pokémon, si es false, no lo hará. Si sólo hay uno, o es el último, no cambia poner false o true, pero recomiendo dejarlo en false de ser así.
Código:
    @battle.pbDisplay(_INTL("¡{1} siente que su fuerza evolutiva lo motiva a seguir!",attacker.pbThis))
Es un texto que se mostrará al efectuar el movimiento, el "{1}" es el nombre del Pokémon, o su mote, en caso de tener uno.
Código:
    @battle.doublemoney=true
Ésto hace que el movimiento duplique la ganancia del combate.
Código:
    @battle.field.effects[PBEffects::ElectricTerrain]=0
    @battle.field.effects[PBEffects::GrassyTerrain]=0
    @battle.field.effects[PBEffects::MistyTerrain]=5
Éstos son los campos que se pueden poner en un movimiento, Campo Eléctrico, Campo de Hierba y Neblina.
Código:
    attacker.pbOpposingSide.effects[PBEffects::StickyWeb]=true
Éste hace que el campo se cubra de una Red Viscosa.
Código:
    @battle.field.effects[PBEffects::FairyLock]=2
Éste hace que ningún Pokémon pueda huir en la cantidad de turnos que indique el número al lado del igual.
Código:
    if opponent.damagestate.calcdamage>0 && opponent.isFainted?
Si el oponente se debilita, pasará lo que siga en el Script, sino, no ocurrirá.
Código:
    if opponent.damagestate.calcdamage>0
      hpgain=(opponent.damagestate.hplost*3/4).round
Calcula el daño hecho, para devolver ése daño en vida para el usuario.
el 3/4 son que recuperas tres cuartos del daño inflingido. Puedes editarlo para obtener más o menos vida de la que has quitado.
Código:
    @battle.field.effects[PBEffects::IonDeluge]=true
Hace que "lluevan electrones" y los movimientos de tipo normal sean eléctricos.
Bien, hay varias cosas que no sé que son, o cómo modificarlas, como la siguiente:
Código:
,attacker,false,self,
El cual no sé qué significa, si ustedes saben, ¿podrían hacerme el favor de decirme para qué se usan?
Así que, si les gustó o sirvió, denme un +Gracias y ¡Hasta la Próxima!
¡ALOLA!
 
Última edición:

Sergiofr_18

En el sendero de la vida
La verdad es que te has dejado mucho por explicar. No sirve de mucho saber cómo subir la velocidad o el ataque sin dar condiciones para que ocurra. Básicamente, con lo que has explicado podríamos hacer ataques como Gruñido, Danza Espada...

Debido a esto, deberías explicar los if, los end, when, etc. Lo cual sería dar clases de Ruby directamente xD

Sin embargo, eres de los pocos RPG Makers promedio que se atreve a crear nuevos movimientos, lo cual está bien, y con el tiempo irás aprendiendo y posiblemente expandiendo este tutorial. El problema está en que hay movimientos que NO tienen efectos parecidos a los de otros movimientos y los tendrás que crear de 0, lo cual es más difícil...

Sea como sea, espero ver cada vez más completo este tutorial!

Saludos~
 

Katherine

Omnipresente
Miembro de honor
Bueno, es un tutorial que está bien, que aunque no comente demasiado a fondo las cosas si que sirve para que alguien le pueda hacer algunos movimientos con algunos cambios. Sin embargo, creo que deberías haberte informado un poco más antes de hacer un tutorial, o al menos haberlo explicado más a fondo. Alguien cómo yo, que todavía no se metió en el scripting de RPG, tampoco no entenderá mucho, como me ha pasado a mí, que me ha resultado bastante confuso.

Bueno, en vez de hablarme así, podrías decirme cómo funcionan esas cosas en vez de criticarme, pero bueno, al menos yo me atrevo a probar diferentes cosas y estoy seguro que con originalidad y sabiendo esto, uno puede hacer muchas cosas en el juego, ¿no crees?
Por cierto, deberías saber aceptar más las críticas, él te ha hablado con mucho respeto, no entiendo tu reacción. Te lo dice alguien que sabe más que tú, cosa que deberías respetar mínimamente algo para así poder mejorar y corregir el tutorial. Se ve de lejos que su comentario no es con mala intención, vaya.

¡Nos vemos! Au revoir~.
 

Diego Mertens

Dartrix Joven
Ok, creo que exagere un poco, pero bueno, borré el mensje e igual gracias, tambien edite el tutorial incluyendo más cosas y nunca dije que era el unico, pero bueno, no importa.
Chau
 
Arriba