Registrarse

[RH - Scripting] [ESCUELA DE SCRIPTS] Trainers / WildBattle

Estado
Cerrado para nuevas respuestas.

Xabier2012

Usuario mítico



Entrenador normal

Entendemos por entrenador normal aquel que nos reta cuando entramos en su campo de visión, es decir, un entrenador cualquiera de una ruta cualquiera que anda hacia ti y te reta.

Primero veamos como se configura en AM:



1-El evento en AM será de tipo "gente"

2-Esta casilla siempre activada

3-Todos ponen 03 aquí, aunque si dejas igual no suele pasar nada

4-Tipo de movimiento del minisprite

5-Lógicamente como nuestro minisprite es entrenador, esta casilla la activaremos

6-Distancia a la cual te ve. Si pones 1, te retará cuando estés a un paso de él. Si pones 2, cunado estés a dos pasos de él, y así sucesivamente.

7-Offset de nuestro script compilado.

Una vez tenemos a nuestro minisprite listo, vamos a explicar el código del script.

Durante este tutorial, me oiréis hablar sobre la id_entrenador. Esto es un número que tiene cada entrenador, y el cual es necesario saber para hacer cualquier comando de batalla contra un trainer. Este id se puede ver si abrimos nuestra rom con la herramienta PET.



Como podéis ver, si queremos hacer una batalla con el entrenador EARL, necesitaremos su id que será "2CA".

Bien, ahora veamos un script de un entrenador normal.

Código:
#org 0x160571
trainerbattle 0x0 0x66 0x0 0x81722C7 0x81722F9
msgbox 0x8172315 MSG_NORMAL '"Ssh! You'll scare the bugs away.\n..."
end


'---------
' Strings
'---------
#org 0x1722C7
= Hey! You have POKéMON!\nCome on!\lLet's battle 'em!

#org 0x1722F9
= No!\nCATERPIE can't hack it!

#org 0x172315
= Ssh! You'll scare the bugs away.\nAnother time, okay?
Lo primero, es poner el código que hará que luchemos, el trainerbattle, el cual tiene este formato:

Código:
trainerbattle 0x[tipo de lucha] 0x[id_entrenador] 0x0 0x[mensaje1] 0x[mensaje2]
Los entrenadores normales siempre tienen en tipo de lucha un 0. La is_entrenador es la que miramos en PET, lo siguiente en 0x0 por defecto, y vemos que hay dos mensajes. El primer mensaje es el que nos dirá cuando nos vea y nos rete, y el segundo es el que nos dirá justo después de ser derrotado.

Entonces un posible código de entrenador sería este:

Código:
#dynamic 0x800000

#org @inicio
trainerbattle 0x0 0x66 0x0 @msg1 @msg2
end

#org @msg1
= ¡Te he visto!

#org @msg2
= ¡Me has ganado!
Con este código lucharemos contra el primer cazabichos del bosque verde.

Pero nos falta algo para acabar, y es el mensaje que se tiene que mostrar cuando vuelves a hablar con él en otro momento. Y esto es simple, solo hay que poner un msgbox normal.

Código:
#dynamic 0x800000

#org @inicio
trainerbattle 0x0 0x66 0x0 @msg1 @msg2
msgbox @texto 0x6
end

#org @msg1
= ¡Te he visto!

#org @msg2
= ¡Me has ganado!

#org @texto
= No volveré a combatir contra ti\nnunca más.
Ahora sí que ya tenemos completo nuestro código listo para compilar.


Entrenadores de evento

Nos referimos con entrenadores de evento a aquellos contra los que se lucha mediante un script de la historia, o que no queremos que nos rete con la mirada. Estos son por ejemplo tu rival, donde primero se ejecuta una parte del código, luego luchamos, y por último se ejecuta la última parte del código. Con este tipo de entrenador nos aseguramos de que se ejecutará el código que se ponga después del comando trainerbattle, ya que con lo visto anteriormente después de la batalla no se ejecutaría más código.

La diferencia con lo anterior es mínima, solo cambia el tipo el tipo de lucha y la cantidad de mensajes.

Código:
*Código antes de luchar*
trainerbattle 0x3 0x66 0x0 @msg1
*Código después de luchar*
Como veis, el tipo de combate ahora es 0x3, y solo tenemos un mensaje. Esto es porque como no te retan con la mirada, no hace falta poner un mensaje de lo que te dicen cuando te retan, entonces solo hace falta el mensaje de justo después de que lo derrotes.


Seguir aunque pierdas

Para los trainers de evento, al menos en Fire Red, podemos hacer que no perdamos y continuemos el script aunque nos derroten.

Simplemente el tipo de lucha y el tercer número que poníamos por defecto hay que cambiarlo así:

Código:
trainerbattle 0x9 0x66 0x3 @msg1 @msg2
Pero, ¿Por qué ahora tenemos dos mensajes si sigue siendo un entrenador de evento? Fácil. Porque puedes ganar o perder. Si ganas, el mensaje que dirá tu rival al perder será el @msg1 y si pierdes dirá el @msg2.

OJO Este tipo de batalla está hecho para que el primer combate contra el rival, donde el profesor Oak te da instrucciones sobre combatir. Y siempre que utilicéis esto saltará Oak dándote consejos. Si quireis quitar esos mensajes, vuestro hilo es este: Quitar mensajes de Oak


Líder de GYM

Los líderes tienen su propio tipo de batalla, y aunque no me gusto mucho y no es estrictamente necesario utilizarlo (ya que haciendo un entrenador de evento y luego activando la medalla con setflag se puede hacer perfectamente), es mi deber explicároslo.

Código:
trainerbattle 0x1 0x66 0x0 @msg1 @msg2 @seguir
El tipo de lucha cambia a 0x1, y ahora tenemos tres punteros. El primero es un mensaje, el que se mostrará antes de luchar. El segundo es otro mensaje, este se mostrará justo después de ser derrotado. Y el tercero en una dirección offset, no un mensaje, y el la dirección a la cual irá en caso de que lo derrotemos. Pongo un ejemplo:

Código:
#dynamic 0x700000

#org @inicio
trainerbattle 0x1 0x66 0x0 @msg1 @msg2 @seguir
msgbox @texto 0x6
waitmsg
end

#org @seguir
msgbox @texto2 0x6
waitmsg
giveitem 0x121 0x1 MSG_OBTAIN
setflag 0x820
end

#org @msg1
= Hoy líder. Luchemos

#org @msg2
= He perdido...

#org @texto1
= ¿Te ha servido mi MT?

#org @texto2
= Ahora te daré la MT1 y también una\nmedalla
Cuando le derrotamos, irá al @seguir, y nos dará la MT1 y nos activará la primera medalla con el setflag. Una vez que volvamos a hablar con él, se ejecutará el texto de después del trainerbattle.


Otros comandos

Existen algunos comandos útiles en cuanto a luchar contra entrenadores se refiere, y os voy a explicar dos:

Código:
settrainerflag 0xID_Entrenador
Este comando hace que podamos volver a luchar contra el entrenador de cual tenga la id que hemos puesto en el código.

Código:
cleartrainerflag 0xID_Entrenador
Y este hará que el ya no nos pueda retar el entrenador que esta la id_entrenador que hayamos puesto.


Lucha contra pokémon salvajes

Esto es un código sencillo que no tiene mucha complicación:

Código:
wildbattle 0xNúmero de pokemon en pokédex 0xnivel 0xobjeto equipado
Recordad poner el número de vuestro pokémon en HEX, es decir que si queremos luchar contra un rattata (19 en pokédex), en el código ponemos 13, ya que 19 en HEX es 13.

Código:
wildbattle 0x1 0x5 0x0
En este caso lucharemos contra un bulbasaur nivel 5 sin ningún objeto equipado.

@Tervaxx @Toni @rdoble @AwesomeCS @RafaSc3 @LluviaElemental @AlexanderWWE @Axnez @ZeonElMagnífico @jfem
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba