Hola, creo que muchos han probado a hacer un script de nivel, pero alguna vez nos encontramos con varios problemas:
- Me salen letras raras
- No entiendo el manual de Baro
- En todos los sitios están las mismas guías (exceptuando escuelas en las que no he encontrado tutos diferentes aún) y hay dudas que no me resuelven.
Yo pasé por esto, es de las cosas que al principio cuestan pero que, al final, es una tontería. Para acabar de una vez con todas las dudas y, de paso, para aquellos que no lo entienden bien he decidio hacer mi propio tutorial de scripts de nivel, es fácil, paso a paso y muy entendible. Empiezo a explicar:
¿Qué necesito?
- Advance Map 1.90 o superior (aconsejable tener versiones superiores ya que tienen menos fallos).
- Un ROM a editar (aconsejable que sea inglesa y sin MUGS ya que no dan muchos problemas)
- XSE
- Un emulador (recomiendo Visual Boy Advance)
- Atención, que el tuto es sencillito.
Pasos:
1º Hacemos nuestro script normal. Por ejemplo este:
'-----------------------
#org 0x1655ED
msgbox 0x817D72C '"Mejor me voy más tarde..."
callstd 0x6
applymovement MOVE_PLAYER 0x8165705
waitmovement 0x0
setvar 0x4033 0x1
release
end
'-----------
' Movements
'-----------
#org 0x165705
#raw 10 'Step Down (Normal)
#raw FE 'End of Movements
'---------
' Strings
'---------
#org 0x17D72C
= Mejor me voy más tarde...
Recomiendo que pongáis el setvar para que no se repita el script de nivel. Si lo que queréis es que se repita hasta hacer otro evento quitadlo y ponedlo en ese otro evento (si no se repetiría :mrgreen: ).
2º Toca abrir el rom con nuestro Advance Map. Pulsamos a ver cabezal y borramos los eventos originales de Nintendo pulsando "remove".
3º Ahora, pulsamos "Add" para añadir la pestaña donde irá nuestro evento.
4º Pinchamos en "Script Type" y seleccionamos el tipo. Para un script normal, pulsad en el 02 "validates value...".
5º En Flag ponemos la flag usada en el script (lógico) y ponemos 0000 en Value si antes pusistes 0x1 en la parte de setvar de tu script.
6º Ya falta poco, en "Script Offset 2" colocamos la dirección de nuestro script.
7º Pinchamos a la pestañita de "Ver Mapa" y seleccionamos nuestro script. En "Var Number" colocamos la flag que usamos anteriormente (en mi caso, 4033, podéis usar esta pero para los demás deberéis buscar otras libres
). En Var Value ponemos 0000 (los que hayan puesto 0x1 en "Setvar" de vuestro script). En "Script Offset" colocáis la dirección del Script.
8º A probarlo en el emulador
Dudas frecuentes:
- Se me repite el script, ¿cómo hago para que no se repita?
Has olvidado poner el "Setvar" en tu offset. Corrígelo.
- He hecho el script, pero salen unas letras raras y al darle al A salen una y otra vez.
Bien, esto es probablemente lo que más suele pasar. Personalmente, me costó mucho trabajo solucionar el error ya que no aparecía bien detallado. Nos os apuréis, traigo la solución (digamos que esto es como 1/3 del manual).
¿Por qué sucede?
El AM escribió sobre espacios FFFF y al hacerlo causa este error (debe hacerlo en 00). Vamos a solucionarlo:
- Pincha en Cabezal y pulsa Ctrl+H, de esta forma, activarás la vista profesional.Vamos a "Map Script Offset" y copiamos la dirección. La abrimos en XSE. Pulsamos el botón "Script de Nivel" y volvemos a descompilar. Ahora prestad atención, aquí está el fallo:
'-----------------------
#org 0x71A594
#raw 02
#raw pointer 0x871A59F
#raw 00
'-----------------------
#org 0x71A59F
#raw word 0x3001
#raw word 0x1
#raw pointer 0x81655ED
#raw word 0xFFFF <=Aquí está el fallo. Tiene fácil arreglo. Quitamos los FFFF por 00
'-----------------------
#org 0x1655ED
msgbox 0x817D72C '"Mejor me voy más tarde..."
callstd 0x6
applymovement MOVE_PLAYER 0x8165705
waitmovement 0x0
release
end
'-----------
' Movements
'-----------
#org 0x165705
#raw 10 'Step Down (Normal)
#raw FE 'End of Movements
'---------
' Strings
'---------
#org 0x17D72C
= Mejor me voy más tarde...
Ahora lo probamos en el emulador. Listo, ya no hay problemas.
¿Por qué debemos poner en el comando "setvar 0x1"? ¿No hay más números?
Si, hay más numeros, pero este es el más fácil, puedes poner 0x2 o 0x3, pero es más aconsejable usar el 0x1.
En Script Type, ¿para qué sirven los demás?
El 02 es para un script normal, por eso recomiendo usar este, aunque los demás se pueden usar para otros eventos, pondré sus utilidades:
00 No Scripts (no lo uses, es de tontos si vas a usar un script, eso lo anula).
01 "setmaptile script" (no sé mucho sobre él, al parecer se usa para cuando quieres cambiar un tile con su comando, como ocurre con la cueva cambiante en Pokémon Esmeralda)
03 "On entering map/not on close menu" (esto se usa para cuendo entrabas en una casa, no sé muy bien para qué sirve, cuando sepa más sobre el comando lo pondré)
04 (No sé cómo llamarlo, ni sé para que se usa, pero dicen que es útil, traeré más información cuando sepa para qué sirve)
05 "On entering map/on close menu" (muy parecido al 03)
07 (bastante similar al 05, aunque mejor usar el citado anteriormente)
Por último, quiero dar las gracias a BARO por su tutorial de WAH (que aunque no me sirvió mucho, él es quien hizo el primer tuto y a quien se lo debemos), a ~Kurotopi por su tutorial de la comunidad WAH, entendí mucho sobre script de nivel y a ~Vincent (no es de este foro) por su tutorial en inglés ya que en él acabé de entender lo demás y lo de los fallos en el script de nivel. Bueno, os deseo mucha suerte en vuestros hack roms. Las dudas que tengáis no os cortéis y posteadlas, trataré de resolverlas. Salu2