De Wahackpedia
| Como funcionan y se crean los scripts que se ejecutan al entrar en un mapeado | |
| Base | |
Un script de nivel es una serie de comandos/ordenes que se ejecutan en el mapa justo al entrar en el mapa, o después de entrar en él.
Los scripts de nivel, es como uno otro cualquiera, salvo que se almacena en el cabezal del mapa.
Sobre este manual
En este manual aprenderéis como funcionan y se crean los scripts de nivel. Es el segundo tutorial después del tutorial que escribió Baro (enlace: inicio scrips nivel) que fue el primero de toda la red sobre poke-scripts de nivel.
¿Qué se necesita para crear un script de nivel?
Se necesitan las siguientes cosas:
- Advance Map 1,92
- Exreme Script Editor (XSE)
- Imaginación y conocimientos avanzados
Usando esto, puedes dar por hecho que sabrás hacer un buen script de nivel.
Bueno, ahora ya empezaremos a crear nuestro script de nivel, para eso tenemos que ir al cabezal del mapa, donde veremos esto:

Una vez en el cabezal del mapa, vamos a la parte que nos interesa, que es a la sección map script, allí podemos observar las siguientes cosas:
Script no: Esto es el nº de script que ocupa en el cabezal. Un cabezal de mapa, puede tener varios scripts de nivel.
Script type: Esto define el tipo de script, que será nuestro script de nivel.

Los tipos de scripts que hay son:

No scripts: Si ponemos este tipo de script, no habrá ningun script en el mapa, ya que estamos diciendo que no habrán scripts.
Setmaptile script: Estamos definiendo que nuestro script de nivel, será un setmaptile. Para configurar este script en el AM, solo habrás de poner una dirección (también llamadas "offset"), que se colocará en el offset1.
On entering map/not on menu close: Este tipo de script, se usa para que el script esté siempre activo. Se ejecute en tiempo real, y no solo al entrar en el mapa. Si no siempre.
Solo se pone un offset, que como en setmaptile se colocará en el offset1.
Validates values, loads handler to 0x03000EB0: Este tipo de script, es utilizado, cuando queremos que se ejecute un script, y queremos que se ejecuten en el una gran variedad de comandos, no se ejecuta en tiempo real, y solo es al entrar en el mapa.
Para configurarlo, has de asignar una flag, value y un offset2 (que será el offset nucleo).
Validates Values, loads handler to 0x03000F28: Al igual que el anterior, este tipo de script de nivel se ejecuta luego de haber cargado el mapa, por lo que existe una gran variedad de comandos para utilizar.Para configurarlo, es idéntico al anterior.
Explicación de cada apartado de un script de nivel:
Script Offset: Aquí es donde suele ir el script núcleo, es decir aquí habrás de poner los offsets que usarás, en caso de que tu script de nivel sea un setmaptile, o on entering map/not on menu close.Si tu script de nivel, NO es ninguno de esos nombrados, el advance map, te otorgará un offset automaticamente. Que más tarde nos servirá, ya que contiene los datos del script del mapa (flag, value, offset2)
Script Offset2: Aquí es donde va el offset para los scripts de nivel que no los mencionados arriba, es decir todos los que sean Validates values, loads handler to 0xoffset. Así que aquí si hacemos un script de ese tipo, habremos de otorgar el Offset nucleo de nuestro script.
Flag: En este campo, has de poner la flag (variable) que usarás en tu evento, como suelen ser variables, usa de la 40FF, hacia atrás.
Value: En este campo, has de colocar, a que valor ha de estar la variable, para que se ejecute el script. Si quieres que se ejecute nada más entrar, colocale "0000" y si es determinado alguna acción pon el valor que quieres que tenga la variable.
Bien sigamos..
Botones (Save map script, open script, remove, add)
Save map script:Este botón sirve para cuando has acabado de editar los scripts de nivel en el cabezal del mapa, pues que guarde los cambios.
Open script:Sirve para visualizar el contenido del script, con el compilador asignado al Advance map.
Remove:: Sirve para borrar un script del cabezal del mapa.
Add:: Sirve para añadir un script al cabezal del mapa. (Contra menos añadamos mejor, ya que así el cabezal del mapa no estará tan saturado.)
Ahora una vez todo explicado, pasaremos a explicar un par de ejemplos. Pero antes de nada..
Inicio= #org
Suceso= cadena de comadnos (msgbox, applymovement, trainerbattle, lo que sea.)
Condicion = Checkflag 0xflag & if 0x1 goto 0xdirección & setflag 0xflag ...
Final = Release & end
Explicación: El comando "darken" es un comando que oscurece todo la pantalla, como si estubiese todo oscuro. Entonces en este script, hasta que no se active una flag (condición) el mapa se verá todo oscuro. En cuanto se cumpla esa condición el mapa se verá completo.
¿Fácil no?
#org 0xoffset Darken 0x0 Checkflag 0xflag del evento del que dependa if 0x1 goto 0xoffset si está activada release end #org 0xsi está activada darken 0x4 return
(Como puedes observar es siempre igual, "inicio + suceso + condición + final + inicio + suceso + final")
Ejemplo de script "setmaptile"
Explicación: Este tipo de script, es un setmaptile, por lo tanto su estructura será:
(Inicio + condición + final + inicio + suceso + final) [Aunque también puede ser al revés]</`>
#org 0xoffset checkflag 0xflag del evento if 0x1 goto 0xoffset release end #org 0xoffset setmaptile 0x1E 0x21 0x170 0x1 setmaptile 0x1E 0x21 0x170 0x1 release end
<a name="script8"></a>
Ejempo de script "Validates values, load handler to 0x03000EB0
Explicación: Este tipo es un script, en el que puedes añadir cualquier comando que hayas aprendido. Su estructura es: (Inicio + condición + suceso + final + inicio + final)
#org 0xoffset checkflag 0xflag if 0x1 goto 0xdirección vací applymovement 0xmini 0x8 offset applymovement waitmovement 0x0 msgbox 0x8offset texto callstd 0x3 setflag 0xmisma flag evento setvar 0xmisma flag evento 0x+1 releasea end
<a name="script9"></a>
Aclaraciones: En el setflag, has de poner la misma que en el checkflag. En el setvar has de poner 0x"flag" 0xvalor inicial variable +1. Es decir si el valor de la variable 40FF es 1. habrás de poner: "setvar 0x40FF 0x2". Para que así al entrar en el mapa, no se ejecute. Este script, tiene un problema, como puedes observar, tienes que asignar el offset núcleo, en el offset nº2, y el offset normal, se pone uno al azar. Bien, pues una vez compilador tu script de nivel, con el XSE, habrás de abrir tu editor hex, e ir a la dirección que te muestra el offset normal, por ejemplo:"6B3100". Cuando vayas allí verás una cadena de números, que si te fijas bien, son la flag + value + offset2.. Osea que si nuestra flag es "40FF" y la variable la queremos a "0000", y nuestro offset es "6F3A10" veremos en hex lo siguiente:
FF 40 00 00 10 3A 6F 08 FF FF FF FF FF FF FF FF
He marcado con colores lo que es cada cosa, para que se entienda mejor, los bytes en azul, son la flag. Los bytes en verde, son el valor. Los bytes en rojo, es el offset. Y lo demás el espacio libre.
(Cabe recordar, que está todo permutado, es decir que se lee de derecha a izquierda cada conjunto de bytes. Por ejemplo: 40FF normal, en un editor hex es FF40.)
Bueno prosigamos, una vez localizado nuestro script offset1, tendremos que hacerle una pequeña edición, que es la siguiente:
FF 40 00 00 10 3A 6F 08 00 00 FF FF FF FF FF FF
Los nuevos cambios realizados, están de color morado. Comparad con el de arriba, y se podrá apreciar el cambio y es que los dos "FF" después del "08", son dos "00"
Relacionado
- Scripts de nivel - El tutorial original, El tutorial original de baro
- Script de nivel - 02 Validates Values
Dudas

- Si has seguido el manual y no entiendes alguna parte, cuéntanoslo en la página de discusión.
- Pero antes:
- Busca en toda Wah
- Vuelve a seguir los pasos
- Toma alguna captura o imagen del error para facilitar a quien te responda.