You are on page 1of 17

INICIACIÓN EN SCRIPTS

Hola a todos amigos míos, he visto que mucha gente no sabe scriptear, ni siquiera sabe
por dónde empezar, así que he decidido “tirar la casa por la ventana” y hacer, atentos,
porque esto que voy a decir es importante: ¡Un manual absolutamente completo
sobre cómo scriptear! Pero esto no va a ser un manual cualquiera, no señor, este
manual te va a enseñar las siguientes cosas:

- Cómo preparar el Advance Map y asignar el editor de script


- Cómo actualizar el XSE
- Cómo “montar” un script paso por paso
- Cómo compilar un script
- Cómo asignarle el script a un mini
- Vídeo demostrativo en el que se hace absolutamente todo, y paso por paso
- Comprobación en vídeo del script

Como podéis comprobar, esto es un auténtico chollo, porque os voy a dejar la


preparación de un script machacadita y es posible que sea uno de mis manuales más
completos y largos, por lo que ahora mismo os diré qué necesitaremos:

- XSE
- Advance Map
- Visual Voy Advance
- Paciencia, más fácil no puedo explicarlo

Bueno, ni hace falta decir que este manual está a la plena disposición de cualquier tipo
de rom hacker (y con tipo me refiero al nivel como rom hacker), aunque va
especialmente dirigido a los auténticos novatos en la materia.

Bien, este manual se va a dividir en distintas partes:

1. Asignar el editor de script al Advance Map


2. Actualizar el XSE
3. Crear nuestro script en el XSE
4. Compilar el script en el XSE
5. Asignar el Offset en el Advance Map
6. Probar el script en el Advance Map

Así que agarraos, ¡despegamos!


1. Asignar el editor de script al Advance Map

Bien, seguramente al decirte “asigna el editor de scripts” puedes quedarte así: O.O.
Bien, pues en ese caso iremos paso por paso en la explicación, primero voy a explicar
qué es cada cosa:

O.O: Es un emoticono (carita), no tiene más complicación.


Offset: Son direcciones dentro del juego, que contienen la informacion de este,
constan de dos números hexadecimales. Por ejemplo: AE. En esta ocasión,
trabajaremos con offsets que contienen 6 números hexadecimales. Por ejemplo:
8923AF
Advance Map: Es una herramienta empleada para modificar los mapas de un juego de
Pokémon de GBA; concretamente, Pokémon Rubí, Zafiro, Esmeralda, Rojo Fuego y
Verde Hoja.
XSE: Es una herramienta empleada para editar, borrar o crear scripts.
Script: Es un guión que contiene un conjunto de comandos con funciones diversas en
el rom.
Rom: Es el juego que estamos editando; concretamente, Pokémon Rubí, Zafiro,
Esmeralda, Rojo Fuego y Verde Hoja.

Vale, ahora que ya tenemos todo muy clarito procederemos a asignar el editor de
scripts. Para ello, seguiremos los pasos que dejaré a continuación:

1º Abrimos el Advance Map


2º Pinchamos en la pestañita “Opciones”
3º En la pestañita “Opciones” encontraremos una gran cantidad de opciones. Nosotros vamos
a pinchar en “Choose script editor”
4º Una vez pinchado en “Choose script editor” nos aparecerá una pequeña ventanita. Lo que
debemos hacer es buscar la carpeta donde hemos guardado el XSE mediante la ventanita
pequeña
5º Cuando lo encontremos, le hacemos dos clicks al programa XSE

¡Y listo! Ya tenemos asignado el programa XSE como nuestro editor de scripts. Si hay alguna
duda también podéis mirar el vídeo (pero tened en cuenta que el vídeo más que explicativo es
demostrativo, así que hará las cosas directamente).
2. Actualizar el XSE

Bien, ahora que tenemos asignado nuestro editor de scripts podríamos pasar
directamente a hacer nuestro primer script. ¿Pero qué pasa? Que el XSE que
normalmente descargamos no está actualizado, y sólo por ese detalle ya cambia la
forma de expresar los comandos. Así que vamos a ahorrarnos problemas y vamos a
actualizar el XSE. Sigue estos pasos y la actualización será coser y cantar:

1º Abre el XSE (pincha dos veces sobre XSE.exe)


2º Ahora pincha sobre la pestaña “Ayuda”.
3º Una vez la pinches, aparecerán varias opciones. De momento, pincha en la pestaña
“Actualizar”.
4º Ahora te aparecerá una pequeña ventanita. Tú lo que tienes que hacer es pinchar
en el botón donde pone “Siguiente>>”.
5º La ventanita ahora mostrará un mensaje. Podrás apreciar que hay dos apartados,
“Tu versión: 1.0.0” y “Nueva versión: 1.0.1”. ¿Qué significa esto? Que tu versión, valga
la redundancia, está desactualizada.
6º En esa ventanita debes pinchar sobre el botón “Siguiente>>”.
7º Una vez lo hagas, el programa comenzará a descargar los archivos necesarios para
realizar la actualización. Una vez haya terminado de actualizarse (te aparecerá un
mensaje en el que pone “Descarga de 879,44 KB completa”), pincha en el botón
“Finalizar”.

Bien, pues ahora sí que estamos listos para preparar nuestro scripts (imagínate que yo
lo estoy haciendo al mismo tiempo que tú, como si estuviera metido en el vídeo).
3. Crear nuestro script en el XSE
Bien, ¡por fin hemos preparado lo que teníamos que preparar! ¡Ahora sí que empezamos a
preparar el script! Pero antes, tenemos que abrir el XSE. Podríamos abrir el XSE y, una vez
abierto, abrir el rom, pero como es algo muy lento y, además, necesitamos también el Advance
Map, vamos a hacerlo de otra forma. Sigue estos pasos:

1º Abre el Advance Map


2º Dale a la Pestaña “Archivo”. Aparecerán varias opciones, pero la que nos interesa es sólo
una, así que dale a la opción “Cargar Rom”.
3º Se te abrirá una pequeña ventanita (lo mismo que pasó la otra vez). Lo que tienes que hacer
es abrir el rom mediante esa ventanita (buscando, obviamente, la carpeta donde está
guardado).
4º Una vez abierto el Rom, vamos a coger un mapa cualquiera. Yo estoy utilizando un rom de
Pokémon Fire red (Pokémon Rojo Fuego en inglés), así que yo voy a abrir la carpeta
“ALABASTIA”, concretamente, el mapa “ALABASTIA (4.0)”, porque como es un mapa donde
empezamos a jugar pues lo tendremos muy cerquita (si tienes la misma rom que yo es mejor
que abras el mismo mapa que yo, así será más difícil que te confundas).
5º Ahora vamos a darle a la pestañita “Ver eventos” y, por ejemplo, vamos a pinchar sobre el
mini de la madre del prota (esa P amarilla sobre un fondo verde).
6º A la derecha veremos una buena cantidad de partes. Nosotros, de momento, vamos a darle
al botoncito donde pone “Open script”.

Bien, ahora que hemos pulsado sobre ese botón… ¡pum, aparece una ventana con un montón
de comandos muy rara! Una ventana que, seguramente, te está dando en este mismo
momento un mareo de campeonato con esos comandos tan raros. No te preocupes, porque
algún día vas a entenderlos todos (eso espero). Nosotros vamos a seleccionarlo todo (como si
fuera un bloc de notas) y… ¡bórralo todo, que no quede nada escrito! ¿No te caen bien esos
comandos, verdad? ¡Pues bórralos, mándalos a paseo!

Bien, una vez que nos hemos desahogado con esos pobres e indefensos comandos nos
encontramos con la misma ventana de antes, pero esta vez no tiene nada escrito. Pues bien,
ahora es el momento, vamos a empezar a preparar el script. En este caso, vamos a hacer un
script muy sencillo, uno en el que tu madre te mire y te diga alguna tontería. Pues bien, vamos
a ir preparándolo poco a poco. Por si acaso, te voy a motivar un poco:

¡DESPIERTAA!
Bien, ahora que estás espabilado sí que vamos a comenzar. Voy a empezar diciéndote
que existen tres formas de hacer un script. Una es en plan chapucero editando uno ya
existente (no lo recomiendo, lo digo por experiencia personal), otra es buscando el
espacio vacío (en plan “pringao”, un método algo cansado, lo sé, pero a veces no
queda más remedio) y otro es contar con la ayuda de nuestro amigo, el comando
DYNAMIC. Te preguntarás: ¿eh, qué es eso? Pues ESO es un comando. ¿Y qué tipo de
comando? Pues es un comando “tan bueno, tan bueno, tan bueno” que él se va a
encargar de buscar el espacio en blanco por ti (fíjate, eso sí que es un chollo). Así que,
de momento, podemos mandar a paseo el problema del espacio. Bien, pues ahora voy
a explicar la estructura de DYNAMIC:

#DYNAMIC 0x(offset)

Como offset puedes coger el que se te antoje, pero yo te recomiendo el 800000,


porque a partir de ese offset hay mucho espacio en blanco y no habrán problemas a la
hora de jugar al rom (que si hay fallos, que si se me cuelga, etc.). Así que vamos a
escribir lo siguiente:

#DYNAMIC 0x800000

Ahora vamos a escribir el siguiente comando, es un comando muy importante que


siempre encabeza el script, es el comando org. ¿Cómo se escribe? De esta forma:

#org @(…)

¿Qué es eso del paréntesis con puntos suspensivos? Pues eso quiere decir que puedes
poner lo que se te antoje siempre que no lleve espacios. Voy a poner un ejemplo de
cómo se escribe mal y de cómo se escribe bien:

MAL
#org @hola que tal =>

#org @holaquetal => BIEN

Bueno, y yo he puesto “holaquetal”, pero podría haber puesto “haba”, “pluma”,


“árbol”, “coche”, etc. Bueno, pues yo no quiero complicarme, así que lo que yo voy a
hacer será poner “inicio”, porque así me lío menos. Así que escribimos:

#org @inicio

Pero MUCHO OJO, hay que escribirlo debajo de “#DYNAMIC 0x800000”:

#DYNAMIC 0x800000
#org @inicio

Fíjate lo importante que es colocarlo de esa manera que hasta lo he subrayado y todo.
Bueno, pues así hay que hacerlo con todos los comandos. Bien, una vez que me he
puesto a resaltar algo muy importante (y que me provocará un ataque de nervios si lo
haces mal), podemos seguir con nuestro script. Ahora, vamos a poner un comando
para paralizar a los minis, podríamos no ponerlo, que también estaría bien, pero como
nosotros queremos hacerlo en condiciones pues vamos a poner ese comando. ¿Y cuál
es el comando? Pues ese comando es “lock”. El comando se escribe tal cual:

lock
Bien, pues lo colocamos:

#DYNAMIC 0x800000
#org @inicio
lock

Bueno, ahora vamos a colocar un comando que hará que la madre del protagonista
nos mire cuando le hablamos (hay que programarle modales, jejeje). Ese comando es
“faceplayer”. El comando faceplayer se escribe tal cual:

faceplayer

Bien, pues lo colocamos:

#DYNAMIC 0x800000
#org @inicio
lock
faceplayer

Bien, ahora viene el comando más significativo, es el comando que provoca la


aparición de un mensaje de texto. Ese comando es “msgbox”. El comando msgbox se
escribe de la siguiente manera:

Msgbox @(lo que sea pero sin espacios) 0x(tipo de msgbox)

Bien, detrás del @ podéis poner lo que queráis pero sin espacios. ¿Y qué pasa con el
segundo parámetro (vulgarmente dicho, el segundo “0x”)? Pues bien, el paréntesis
debemos sustituirlo por un número. ¿Y qué número? Pues eso varía según el tipo de
msgbox que quieras hacer (los hay de señales, de pregunta de sí o no, normal, etc.).
Nosotros vamos a usar el msgbox tipo 6, es decir, el normal. Por ejemplo, vamos a
poner detrás del @ la palabra “mensaje”, pues lo escribiríamos así:

msgbox @mensaje 0x6

Se ve fácil, ¿verdad? Pues ahora lo colocamos:

#DYNAMIC 0x800000
#org @inicio
lock
faceplayer
msgbox @mensaje 0x6

Muy bien, pues ahora vamos a poner un comando para desbloquear el movimiento del
mini. ¿Cuál es ese comando? Pues ese comando es “release”. El comando se escribe tal
cual:

release
Fácil, ¿no? Pues ahora vamos a añadirlo a nuestro script:

#DYNAMIC 0x800000
#org @inicio
lock
faceplayer
msgbox @mensaje 0x6
release

Por último, añadimos un comando para que termine el script, el comando “end”. El
comando “end” se escribe tal cual:

end

Pues ahora que sabemos cómo se escribe, lo vamos a añadir:

#DYNAMIC 0x800000
#org @inicio
lock
faceplayer
msgbox @mensaje 0x6
release
end

Bien, y ahora… ¿hemos terminado? ¡Pues no! Ahora hay que colocar el mensaje del
msgbox. En este caso, la estructura es la siguiente:

#org @(lo que escribiste en el @ del msgbox)


= (…)

Bien, podemos observar dos paréntesis, uno con un mensaje y otro con tres puntos
suspensivos. No te preocupes, te voy a explicar qué significa cada uno. El primer
paréntesis debes sustituirlo por aquello que hayas escrito en el @ que incluía el
msgbox. En este caso, hemos escrito “mensaje”, así que lo ponemos de esta manera:

#org @mensaje
= (…)

Ya no parece tan lioso, ¿verdad? Pues ahora te explicaré qué significa el paréntesis con
los puntos suspensivos. Ese paréntesis debes sustituirlo por el mensaje que quieras
que aparezca. Puedes poner lo que te de la gana, yo por ejemplo escribiré esto: “Hola
hijo, anda, ve a la frutería y cómprame una calabaza. ¡No te olvides!”. Pues vamos, lo
escribimos:

#org @mensaje
= Hola hijo, anda, ve a la frutería y cómprame una calabaza. ¡No te olvides!
¿A que parece que está bien hecho, a que sí? ¡Pues no, está incompleto! Si lo hacemos
de esa manera, una parte del mensaje se va a “montar” encima de otra, y no
queremos que pase eso, ¿verdad? Pues ahora te voy a enseñar algo que nos ayudará
durante muchas ocasiones, las partículas. ¿Qué son? Son elementos que empleamos
para pasar a otro renglón o a otro párrafo. Vamos a ver los distintos tipos:

\n => Sirve para pasar al segundo renglón. Sólo se puede usar una vez por cada
párrafo.
\l => Si ya usaste \n, \l sirve para pasar al renglón de abajo. Mucho cuidado, \l sólo se
puede usar si ya usaste la partícula \l en el párrafo actual.
\p => Sirve para cambiar de párrafo.

¿Entendido? Pues ahora vamos a escribir nuestro mensaje:

#org @mensaje
= Hola hijo, anda, ve a la\nfrutería y cómprame una\lcalabaza.\p¡No te olvides!

¿Qué cómo se ve el mensaje cuando se prueba el script? Así:

Hola hijo, anda, ve a la


frutería y cómprame una
calabaza.

¡No te olvides!

Pues bien, ahora lo añadimos al script:

#DYNAMIC 0x800000
#org @inicio
lock
faceplayer
msgbox @mensaje 0x6
release
end

#org @mensaje
= Hola hijo, anda, ve a la\nfrutería y cómprame una\lcalabaza.\p¡No te olvides!

¿Por qué no lo he escrito todo “junto”? Porque @mensaje es un offset aparte, y tiene
que estar separado del otro offset. ¡Pues bueno, hasta aquí la preparación del script!
4. Compilar el script en el XSE

Bueno, ahora que ya has realizado el script te preguntarás: “¿y ahora qué hago?”
Tranquilo/a, porque he dedicado un solo apartado para enseñarte cómo se compila
un script, así que no te agobies. Aunque esta sea una parte muy sencilla y rápida,
voy a profundizar muchísimo, voy a profundizar tanto que hasta voy a añadir
imágenes. Fíjate, lo he dejado tan, tan, tan claro y masticado que sólo se necesita
tener un cerebro, manos móviles, el Microsoft Word y manos/extremidades
móviles y que puedan teclear y hacer click con el ratón para hacer esta parte. Bien,
antes de explicarte cómo compilar el script, quiero asegurarme de que lo estás
haciendo bien, esto es lo que llevamos hecho hasta ahora:

Vamos bien, ¿verdad? Pues ahora presta mucha atención, porque es muy
importante que esto quede MUY, pero que MUY claro. ¿Ves el botón con dos
tuercas que he señalado con azul? Pues, bien, lo he señalado MUY pero que MUY
grande para que sepas perfectamente cuál es ese botón (sé que puedo parecer
exagerado, pero luego incluso me besarás los dedos cuando funcione el script).
Esta parte es muy importante, así que me permitiré el lujo de volverlo a repetir:

IMPORTANTE
Debes pinchar sobre el botón con las dos tuercas, y, tras eso, te aparecerá una
ventanita. La ventanita es ESTA:

¿Qué aún no está muy clara? No te preocupes, voy a añadir OTRA flechita:
¿Cómo, que me he olvidado el nombre? No te preocupes, le pongo ahora mismo el
nombre:

Sé lo que estás pensado, no, no eres estúpido/a, es que le pongo MUCHO énfasis,
pero OJO, no es DEMASIADO, una cosa es MUCHO y otra cosa es DEMASIADO,
demasiado es que sobra, y aquí está estupendo, aunque sea mucho. ¿Cómo dices?
¿Qué te gustaría ver la ventanita un poco más grande? Pues sí, tienes razón,
pondré sólo a la ventanita. Lo repetiré una vez más:

SÓLO VENTANITA
Se observa claramente la ventanita, ¿verdad? Pues ahora que tenemos esta imagen
por delante, vas a hacer lo siguiente:

1º Pincha en la zona enmarcada con el color azul (se corresponde con el número 1).
2º Una vez has pinchado en la zona que está dentro del cuadrito azul (sí, esa donde
pone “@inicio”), pinchas en el botoncito “Copiar”, el botón que está dentro del
cuadrado hecho con color rojo (ese que tiene un 2 al lado).
3º Ahora pulsa en el Botón “Cerrar” (sí, sí, ese botoncito que está dentro del marco de
color negro, el que tiene un 3 arriba).

Tras eso, se te habrá cerrado la ventana. No te preocupes, es normal. Bueno, y ahora


te preguntarás esto: ¿qué hemos hecho? Pues no te preocupes, te lo voy a decir:

- Cuando pulsaste en la zona del rectángulo azul, seleccionaste uno de los dos
offset, concretamente, has cogido el primero, o lo que es lo mismo, has
seleccionado el principal. Al lado puedes ver el offset vacío que buscó DYNAMIC
para compilar el script. Es decir, el offset para “@inicio” es ni más ni menos que
el offset “800000”.
- Después, cuando pinchaste en el botón que está dentro del marco rojo lo que
hiciste es copiar el offset; en este caso, el offset que hemos copiado es el
“800000”.
- Finalmente, cuando pinchaste en el Botón que está dentro del rectángulo
negro lo que hiciste es cerrar esa ventanita porque ya no nos sirve abierta.
Pues bueno, pues algo tan corto ha ocupado 4 páginas. Es fuerte, ¿eh?
5. Asignar el Offset en el Advance Map
Bien, pues una vez que hemos re-re-redesmenuzado el procedimiento para compilar el script
(si no lo entiendes es “pa pegarte”), pues ahora va siendo hora de asignar el script, mejor
dicho, es hora de asignar el offset al mini de la madre del protagonista (si estás usando
Pokémon Ruby/Emerald, al mini que hayas elegido). Pues bien, lo primero que vamos a hacer
es volver a la ventanita del Advance Map, si usas Pokemon Fire Red, a exactamente el mismo
mapa que dije antes. ¿Qué no te acuerdas? ¡Pero si lo tienes abierto!

Bueno, una vez en el mapa, aunque sé que pinchamos antes en el min, por si acaso le damos
un click otra vez (y no he dicho que le demos dos click, SOLO UNO). Bien, una vez ahí, podemos
ver el siguiente “panorama”:

Pues bueno, el mapa es muy bonito y todo eso, pero a mí no me interesa la parte de la
izquierda, porque el mini ya lo hemos seleccionado (la P amarilla con el fondo de color
verde) y ya no tengo que hacer nada más ahí (de momento), así que voy a poner una
imagen sólo con la parte de la izquierda:
Está muy clarito, ¿no? Y ahora te preguntarás: ¿qué es eso que está dentro del marco
de color negro? Pues esa es la parte que nos interesa, así que ahí va OTRA imagen:
Bien, y ahora te preguntarás: ¿qué es esa cosa? ¿Y por qué le has puesto tantas
flechitas? Pues en primer lugar, le he puesto todas esas flechas porque es AHÍ donde
vamos a efectuar los cambios. Así que lo repito otra vez:

¡¡¡¡¡¡AHÍ!!!!!!
Bueno, aún no he resuelto la otra pregunta: ¿qué es eso? Bueno, en primer lugar, eso
es un rectángulo. ¿Qué tipo de rectángulo? Pues un rectángulo blanco. ¿Y para qué
sirve? Pues es ahí donde tenemos que pegar el offset que copiamos antes. ¿Y cómo lo
hacemos? Pues, en primer lugar, seleccionamos los números hexadecimales que están
detrás del símbolo del dólar (el “$”). ¿Qué no lo entiendes? ¡Pues otra imagen!

Sí, sé lo que estás pensando, estás mirando la imagen como un pasmarote con la
siguiente pregunta en la cabeza, es obvio: ¿¡Cómo es que ahora hay más flechitas?!
Pues hay más flechitas para que no te despistes y prestes mucha atención a esto. ¿Qué
hacemos ahora? Pues ahora borramos la parte que hemos seleccionado (esa parte que
está en azul… ¡no, el cielo no, el offset!).
Ahora seguramente te ha salido esa ventanita. ¿Qué por qué me ha salido a mí más a
la derecha y a ti justo en medio? ¿Por qué va a ser? ¡Porque la he movido para que
quepa en la imagen! Bueno, esa ventana es normal que salga, simplemente pulsas en
el botón “Aceptar” (ese que está dentro del marco de color negro). Bien, pues ahora
pinchas en la parte de detrás del símbolo del dólar (“$”) PERO con el botoncito
derecho del mouse. ¿Qué cuál es? No te preocupes, yo te lo señalo:

¡Vaya! ¿Cómo se me ha podido colar esa imagen? Lo siento, aquí pongo la de verdad:

Bueno, pues ahora que le hemos dado con el botón derecho del mouse, nos
aparecerán varias opciones. Tú pincha en la opción “Pegar”. Bueno, una vez hecho eso,
nos ha quedado así:

Si te ha quedado así es que lo has hecho bien. Bien, pues ahora pincha en la pestaña
del Advance Map donde pone “Archivo”. Tras eso, aparecerán diversas opciones, tú
pincha en aquella donde pone “Guardar”. Y, por fin, una vez has hecho esto, ya has
atribuído el offset que copiaste de la ventanita pequeñita del XSE al mini (en mi caso y
en el tuyo si usas la rom de Pokemon Fire Red, la madre del protagonista). Bien, pues
sólo queda una cosa, ¡probarlo!
6. Probar el script en el Advance Map

Bien, pues una vez que hemos guardado los progresos en el Advance Map, tenemos
que probar el script para comprobar si funciona o no. Bien, pues con nuestro emulador
(Visual Voy Advance, ese programita que usas para jugar a los juegos de la Game Boy
Advance en el ordenador, obviamente) probamos el juego y nos vamos al lugar donde
está el mini con el offset nuevecito (ese que copiaste de la ventanita pequeña del XSE),
nos ponemos delante de él y pulsamos el botón A.

¿Te ha salido? ¡Enhorabuena, has hecho por fin tu primer script, y lo mejor de todo es
que funciona!

Bueno, ahora te preguntarás: ¿qué hago ahora? Pues ahora que ya te has iniciado en
este tipo de scripting deberás aprender nuevos comandos, hacer mucha práctica y,
sobretodo, tener aún más paciencia y voluntad. Y, ahora, sólo me queda decirte una
cosa:

¡Bien hecho! ^^

Manual redactado por Rey Boo


Imagen de Mickey Mouse: Walt Disney
Imagen del mouse: de su propietario
Agradecimientos:
- al foro de PHO, de no ser por uno de sus manuales aún seguiría sin saber
hacer scripts.
- a ese creador del manual de scripts de nivel, de cuyo nombre no me acuerdo
- a Derv1205, gracias a sus sencillos manuales pude aprender más cosas
- a Eing15, de no ser por él muchas de mis dudas no hubieran sido resueltas, ha
sido una pieza clave
- a Diegoisawesome, su manual de scripts es formidable
- a HackMew y LU-HO por crear estas geniales herramientas
- y, también, gracias a ti por leer mi manual

You might also like