Registrarse

[RH - Scripting] Movesprites permanente

Estado
Cerrado para nuevas respuestas.

Miikel

Amante de los Pkmn Tipo Dragón
Si creo un script que al activar una flag se mueva a otra direccion con el movesprites, como hago para que eso sea permanente? que no se mueva mas del sitio al que se movio, aun si refresco el mapa...?
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Bueno, bueno, bueno... Esa es una duda muy frecuente e interesante.

Aclarémonos
Más allá de todo lo que te diga la guía del XSE y HackMew (su creador), ni el comando movesprite ni el movesprite2 son permanentes. En ambos, el minisprite afectado regresará a su posición oficial al recargar el mapa.

¿Cómo haremos entonces para moverlo?
Cada vez que entras a un mapa, existe un tipo de script especial que es ejecutado: los scripts de nivel. ¿Conoces los scripts de gatillo que se activan al pisarlos? Pues estos son parecidos, con la pequeña diferencia de que se activan al entrar al mapa.
Lo que necesitas ahora es crear un script de nivel. Eso puedes hacerlo en el mismo XSE, como cualquier script normal, quedándote algo así:
[script]#dynamic 0x800000
#org @start
movesprite 5 0x12 0x20
end
[/script]

¿Cómo asignar el script a un mapa?
Entraremos al A-Map e iremos a la pestaña Cabezal o Header (la última).

Aquí, como ves en la imagen, tenemos que darle al botón Add, seleccionar en Script Type la opción Validates values, loads handler to 0x03000EB0 (playback) [02] y poner el offset del script que acabamos de compilar en el campo Script offset 2.

¿Es suficiente una flag?
Este es otro punto a tratar sobre los scripts de nivel. A diferencia de hacer desaparecer o aparecer minis (por arte de magia), estos scripts no requieren de flags sino de variables. Puedes aprender más sobre variables en el último capítulo de mi tutorial de scripts.

¿Cómo configurar la variable en el script de nivel?
Aquí te cambiaré un poquito las cosas. Como un script de nivel se ejecuta siempre que la variable tenga cierto valor y dejar una variable en un valor fijo durante todo el juego es un verdadero desperdicio, hagamos esto: Pon al minisprite en la posición que quieres que quede luego y en el script le pones un movesprite hacia donde estará antes. Es un poco hacerlo al revés pero creeme que conviene.
Ahora sólo debemos modificar un poquito el script (no el de nivel que puse arriba, sino el que ajustará el valor de la variable, o el que en tu ejemplo activaría la flag), agregando esto:
[script]addvar 0x40FF 1[/script]

Yo usaré la variable 0x40FF como ejemplo, puedes usar la que gustes.
Ahora vas al A-Map y llenas los campos Flag y Value con el número de la variable (0x40FF) y 0 respectivamente.



¡Eso es todo! Espero haberme explicado bien y haber sido de ayuda. Si aún te queda alguna duda o necesitas que me explique mejor en algún punto, ¡me avisas! ¡Suerte! ;)
 
Estado
Cerrado para nuevas respuestas.
Arriba