Registrarse

[Scripting] Scripting sencillo en NDS

B!ack~

NDS Hacker retirado
Hola a todos! Hoy os traigo como hacer un script basico a ver si con esto hago que mas gente se anime con NDS. Para hacer un script solo necesitais el SDSME(Spiky´s DS Map Editor). Vamos a hacer un script parecido a este
Aqui os dejo el tutorial:
Vamos a hacer un script sencillo para iniciarse en los scripts de NDS. Yo no se scriptear en GBA pero se que los scripts en NDS se parecen mucho a los de GBA. Asique, por ejemplo, los flags se usan de la misma forma que en GBA. Primero abrimos el SDSME y le damos a Abrir ROM (arriba a la derecha). Elegimos una Rom D/P y esperamos unos segundos. Aparecera una ventana diciendo los headers encontrados. Le damos a aceptar. Ahora nos vamos a "Matrices" donde veremos el mapa de la region. (Aclaro que desde aqui se hacen las conexiones entre mapas). Nuestro script lo haremos en el mapa de Pueblo Hojaverde, que viendo el mapa sabremos que es este:

Le damos doble click y nos llevara a la pestaña headers al numero 411. Aqui tenemos los datos de Pueblo Hojaverde. Ahora siguendo la linea veremos que pone 389 antes del nombre del pueblo. Este numero corresponde a los eventos:

Le daremos doble click al numero y se abrira una ventana donde podemos controlar los eventos de este mapa. Iremos a "overworlds" y veremos una lista de 8 overworlds donde el 3º corresponde a el rival. Nosotros usaremos el segundo que corresponde a uno de los minis del pueblo que se encuentra cerca de la casa del player. Ahora vamos a "Triggers" y seleccionamos el Trigger 2. Este corresponde al script del rival. En los apartados X e Y ponemos 116 y 887, respectivamente. Estas coordenadas corresponden a dos puntos justos delante de la puerta de la casa del player. Ya que no podemos hacer que se inicie automaticamente porque no se pueden editar todavia los scripts de nivel. Le damos a Guardar Actual. Ahora que hemos modificado el trigger volvemos a overworlds. Vamos al segundo overworld y nos fijamos en el ID, es el numero 1. Acordaros de este numero a la hora de hacer el script. Finalmente cerramos la ventana y nos fijamos en el numero 978 en la fila del pueblo. Este corresponde al archivo de scripts. Le damos doble click y no llevara a la pestaña "Scripts" Aqui tenemos la lista de scripts que contiene este mapa. El Script numero 2 es el script del rival. Este es el que vamos a modificar. Lo borramos todo excepto el nombre(Script #2) y el End. Dejando un espacio entre ellos. Ahora finalmente vamos a empezar con el Script.
Empezamos asi:
Script #2

LockAll
End

De esta manera bloqueamos el juego.Ahora vamos a ponerle movimiento a el overworld de antes poniendo el comando seguido de 0xID del overworld
Script #2

LockAll
ApplyMovement 0x1 Movement_#1
End

Ahora para editar el movimiento nos vamos a la pestaña movimientos.
Borramos el primero dejando el nombre y el End separados un espacio y escribimos el movimiento. Para escribirlo os recomiendo que tengais la ROM abierta en un emulador y conteis los pasos que tiene que dar el overworld.
Primero pondremos una exclamacion. En este caso lo ponemos asi:
Movement #1

Exclamation 0x1
WalkRightFast 0x8
(Esto es el numero de pasos)
WalkUpFast 0x1
End
Ahora volvemos a Scripts. Ahora ponemos un WaitMovement detras del ApplyMovement. Añadiremos un mensaje asi:
Script #2

LockAll
ApplyMovement 0x1 Movement_#1
WaitMovement
Message 0x0(Esto corresponde al numero del mensaje)
WaitButton
CloseMessageOnKeyPress
End

Ahora le dais a Guardar Actual Abajo a la Izquierda. Para editar el texto volvemos a Headers y le nos fijamos en el numero 498 en la fila del pueblo. Corresponde al archivo de textos. Le damos doble click y nos habra llevado a la pestaña "Textos" Ahora vereis todos los textos del mapa. Vamos a editar el numero 0 que es el que pusimos en el script. Podeis escribir lo que querais. El comando \r sirve para cambiar de linea mientras que el comando \n sirve para empezar nuevo parrafo (Si no me entendeis probadlo en el juego). Le dais a Guardar Actual y volvemos a la pestaña Scripts y seguimos con nuestro script. Ahora haremos que el overworld vuelva a su sitio pero que nos lleve con el. Para ello lo pondremos asi:
Script #2

LockAll
ApplyMovement 0x1 Movement_#1
WaitMovement
Message 0x0
WaitButton
CloseMessageOnKeyPress
ApplyMovement 0x1 Movement_#2
ApplyMovement 0xFF Movement_#3
WaitMovement
End

El Segundo ApplyMovement lleva el 0xFF que corresponde al player.
Ahora le dais a Guardar Actual y nos vamos a movimientos, borramos los movimientos 2 y 3 dejando los nombres y los End
Ahora ponemos estos movimientos:
Movement #2

WalkDownFast 0x1
WalkLeftFast 0x9
SeeUp 0x1
End


Movement #3

WalkDownFast 0x2
WalkLeftFast 0x8
SeeUp 0x1

Aclaro que el comando See(Up, Down, Right o Left) es para que el overworld mire hacia un lado. Ahora que los movimientos ya estan le damos a Guardar Actual. Volvemos a Scripts. Ahora podriamos seguir añadiendo mas pero prefiero que lo practiqueis vosotros. Para acabar el script le añadimos un ReleaseAll:
Script #2

LockAll
ApplyMovement 0x1 Movement_#1
WaitMovement
Message 0x0
WaitButton
CloseMessageOnKeyPress
ApplyMovement 0x1 Movement_#2
ApplyMovement 0xFF Movement_#3
WaitMovement
ReleaseAll
End

Pues ya esta :) Podeis subir si quereis videos a este tema de como os ha quedado el script y podeis añadirle algun mensaje mas o algun movimiento mas. Espero que os haya gustado;). Cualquier duda preguntad :)
 
Última edición por un moderador:

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [Tutorial] Como hacer un script sencillo en NDS

Muy buen tutorial amigo, se ve medio complicado pero igual gracis por poner avances en el NDS hacking, talvez slgun dia me decida a trasladarme al NDS hack, pero ese no es el tema y espero sigas aportando para que mas gente se lanze a hackear NDS.
 

Fran

Profesional de WaH
Una pregunta (Sé que Black no me va a contestar pero capaz algun otro hacker NDS) ¿Esto es universal o solo sirve para alguna ROM en especifico?
Y aunque Black no esté por estos lares hay que decir que es un buen tutorial como para tener un comentario :/

Edit: Vale, recién leí el "Una ROM D/P"
 
Última edición:

BagBoy

3D Artist | NDS Hacker
Una pregunta (Sé que Black no me va a contestar pero capaz algun otro hacker NDS) ¿Esto es universal o solo sirve para alguna ROM en especifico?
Y aunque Black no esté por estos lares hay que decir que es un buen tutorial como para tener un comentario :/
Él ha usado una ROM de Diamante/Perla para hacer el script, pero también sirve para Platino, HGSS, BW/BW2 ya que comparten los mismos comandos para crear scripts.
La única diferencia es que con DPPt/HGSS necesitas unas herramientas para poder hacer los scripts, y para BW/BW2 necesitas tanto herramientas como métodos diferentes. Para hacer scripts en BW/BW2 te recomiendo que veas este videotutorial, que descargues todo lo necesario, y lo pruebes por ti mismo.

Ánimo y mucha suerte, que DS no es tan difícil como parece :)

Att:
BagBoy
 

Driox24

Usuario de platino
Respuesta: NDS | Scripting | Scripting sencillo en NDS

Hola, no se si alguien responderá a esto, pero, como se saben las coordenadas para poner el trrigger??

Gracias por la atención.
 

BagBoy

3D Artist | NDS Hacker
Respuesta: NDS | Scripting | Scripting sencillo en NDS

Hola, no se si alguien responderá a esto, pero, como se saben las coordenadas para poner el trrigger??

Gracias por la atención.
El truco que yo recomiendo usar es guardar la partida dejando tu personaje justo encima del sitio en el que quieres que vaya el trigger. Entonces, cuando ya hayas guardado, extraes un .sav de esa misma partida guardada y lo abres en el Pokesav correspondiente a la ROM con la que estés trabajando. Y una vez abras el .sav en ese programa, aparecerán las coordenadas y la ID del mapa en el que estás. Esas coordenadas son las que tienes que escribir luego para que el trigger aparezca en el sitio en el que quieres que funcione.
 

Retx

Pequeño saltamontes
El truco que yo recomiendo usar es guardar la partida dejando tu personaje justo encima del sitio en el que quieres que vaya el trigger. Entonces, cuando ya hayas guardado, extraes un .sav de esa misma partida guardada y lo abres en el Pokesav correspondiente a la ROM con la que estés trabajando. Y una vez abras el .sav en ese programa, aparecerán las coordenadas y la ID del mapa en el que estás. Esas coordenadas son las que tienes que escribir luego para que el trigger aparezca en el sitio en el que quieres que funcione.
Existe un Pokesav para B2/W2?
 
Arriba