Registrarse

[Scripting] Eventos básicos

Hola a todos, bienvenidos a mi tuto de scripting :

Bueno comencemos.... Vamos a utilizar un programa llamado "Xtreme Script Editor" Blog del tutorial con el link de descarga el cual nos ofrece mucho en esto del ROM Hacking...

Vamos a hacer 3 cosas (hoy)

- Hacer que un NCP te hable

- Hacer que un NCP te de un Pokémon/Item

- Hacer que un NCP se mueva y que no se sigan ejecutando comandos hasta que deje de moverse.

Para estas cosas necesitamos primero asignar el XSE (Xtreme Script Editor) al Advance Map...

Tenemos que ir a "Configuración" o "Settings" y a la opción de "Choose Script Editor" o "Cambiar Editor de Script" (dependiendo el idioma elegido para Advance Map).
A continuación hay que agregar una persona.
Entonces vamos a la pestaña de eventos y miramos todas las opciones que hay a la derecha... Entre ellas vamos a ver una que dice "Numero de personas..." o "Number of person events" con un numero al lado y sus flechitas de arriba y abajo. Aumentamos la cantidad en un +1 y hacemos clic en "Cambiar Eventos" o "Change Events" y enseguida (en la parte superior izquierda) les va a aparecer un cuadrado con una "P" y lo arrastran al lugar que quieran.
Perfecto, tenemos la persona... Pero es un cuadrado... Entonces para ver quien es tocamos en la cara de "Bruno" el protagonista del Pokémon Ruby/Zafiro/Esmeralda y vemos que el cuadrado es un mini... El de Red en mi caso... Para cambiarlo tenemos centrarnos en las opciones de la derecha y cambiar el numero de Sprite o el numero de Picture (que por defecto estará en 0...

-Hacer que nos hable:

Abrimos el XSE y ahí abrimos la ROM

Escribimos

#dynamic 0x800000

#org @inicio
lock
faceplayer
msgbox @frase 0x6
release
end

#org @frase
Y acá el texto, que se introduce pulsando ctrl + T y se va a abrir un cuadro en el cual podemos escribir lo que quieras que el personaje diga después hacer clic en convertir e insertar.

¿Qué es esto?

#dynamic 0x800000 Es la dirección en el cual empieza a buscar el programa un espacio libre (escribirlo siempre)

#org @inicio Es el inicio del Script

Lock Bloquea el mini

faceplayer Permite que el mini mire al protagonista

msgbox @frase 0x6 Es la caja donde se muestra el mensaje

release Evita que el mini se mueva (en el caso de que lo esté haciendo)

end Acá termina el Script

#org @frase Indica donde va la frase

- frase

Terminado esto lo compilamos haciendo clic en los dos engranajes que están en la parte superior del programa y se va a abrir una venta. Haces clic en "copiar" y listo.
A continuación van al Advance Map con el NPC (o mini) que hicieron, le hacen clic y en la barra derecha buscan donde dice "Script offset" y sustituyen por lo que copiaron (manteniendo siempre el "$" y si lo prueban funcionará.


-Hacer que nos de algo:

Un Pokémon

Es lo mismo... Pero Vamos a utilizar este comando llamado givepokemon 0x0 0x0 0x0 0x0 0x0 0x0 el cual permite entregar que Pokémon, a que nivel y con que objeto equipado.

Script completo:

#dynamic 0x800000

#org @inicio
lock
faceplayer
msgbox @frase 0x6
givepokemon 0x0 0x0 0x0 0x0 0x0 0x0
setflag 0x828
release
end

#org @frase
-frase

givepokemon tiene 6 "0x0" y vamos a usar los 3 primeros.

1er 0x0 es el numero de Pokémon según la pokedex en Hexadecimal, para averiguarlo podemos hacer ctrl + O e ir a la carpeta de XSE.

Hay 3 archivos importantes. Para los items, para los ataques y para los Pokémon.

Entramos al de los Pokémon y buscamos el que queremos, copiamos el 2A de Zubat que dice "0x2A" y reemplazamos el 2do 0 del "0x0" por el numero copiado

El 2do 0x0 se refiere al nivel del Pokémon, para esto necesitamos convertir un numero decimal al hexadecimal (usamos la calculadora de la derecha)

Y el 3er 0x0 es para el objeto/item que querés que lleve el Pokémon... Podemos hacer lo mismo que el de los Pokémon pero con su respectivo archivo.

comando:

givepokemon 0x2A 0x9 0x2 0x0 0x0 0x0

Nos van a dar un Zubat (0x2A) al nivel 9 (0x9) con una ultraball equipada (0x2)
El comando "setflag 0x828" lo que hace simplemente es activar la opción Pokemon dentro del menú.

Item/Objeto

#dynamic 0x800000

#org @inicio
lock
faceplayer
msgbox @frase 0x6
giveitem 0x0 0x0 0x0
release
end

#org @frase
- frase

giveitem es un comando que te permite recibir un objeto

El primer 0x0 es el numero de objeto a recibir. Deberemos mirar el archivo que viene en la carpeta del XSE para los items.

El segundo 0x0 es la cantidad de objetos a recibir.

Y el tercer 0x0 determina el tipo de mensaje, debes poner un 0x1 si es para una pokeball tirada por ahí o un 0x0 si alguien te da el objeto.
Todo en hexadecimal.


-Applymovement y Waitmovement

Applymovement: Sirve para hacer que un NCP o mini se mueva.

Waitmovement: Sirve para indicar que no se siga leyendo el script hasta que el mini no haya terminado sus movimientos.

Para esto necesitamos un programa llamado "Move it" que nos determina los movimientos en un simple código

[Descargar Move It|]Move It! 1.3

Script Completo

#dynamic 0x800000

#org @inicio
lock
faceplayer
msgbox @frase 0x6
applymovement 0x0 @movimiento1
waitmovement 0x0
release
end

#org @frase
-frase

#org @movimiento1

El 0x0 del Applymovement y Waitmovement es para el numero de gente que representa el NCP que quieren que se mueva (en hexadecimal) para esto tienen que ir al Advance Map y fijarse en el "Nro de Gente".

Y para los movimientos tenemos que abrir el Move It e ir al Advance Map, ir a opciones y activar la opción que dice "Grilla"

Volvemos al Move It, nos dirigimos a la pestaña "caminar" y seleccionamos que queremos hacer (cada clic es una acción, si le demos clic dos veces al "paso abajo" el NCP va a dar 2 pasos para abajo).

Teniendo los movimientos que queremos hacer, en el Move it vamos a la pestaña que dice "especiales", y seleccionamos "Finalizar movimientos" , después editar y copiar todo.
Y lo pegamos al final del Script (después de #org @movimiento1)

Esto es todo por ahora :)
 
Última edición por un moderador:

FelixTheCat

Profesional de WaH
Respuesta: [GBA] Scripting: Eventos básicos

¡Hola! Se agradecen tus ganas de aportar a la comunidad, pero me temo que ya hay muchos tutoriales de scripting '^^
Como el de C!ro y el de Xabier2012, igualmente, sigue actualizando si te apetece. Tal vez tu forma de explicar le sirva a algún novato poco entendido en esto. Como gustes :3



Arrivederci~
 

ed_115

little rookie
yo pienso que están incompletos givepokemon y giveitem ya que no has puesto comandos para que el evento no se repita, ya que sin ellos cada vez que hables con el NPC te dará el mismo pokemon. además el propio xse tiene una guía (creo que apretando F2 en el teclado)donde puedes aprender lo basico.pero si lo actualizas seria way.:);)
 
Arriba