Registrarse

[RH - Scripting] Cambiar un mini con Flag

Estado
Cerrado para nuevas respuestas.

Miikel

Amante de los Pkmn Tipo Dragón
Estoy desde ayer aprendiendo sobre los scripts, mi duda es...
Como puedo hacer que cambie un mini despues de activar una flag?
Quiero por ejemplo que antes de la flag el mini tenga el sprites numero 10 y despues de la Flag tenga el sprites numero 20.

Se puede?
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Muy buenas, amigo. Qué bueno que hayas decidido adentrarte en el mundo del scripting.

Veamos... Lo que planteas exactamente como lo planteas... No, es imposible.
Lo que podemos hacer es esto: al activar la flag el mini que tiene el sprite número 10 desaparecerá y aparecerá otro que tiene el sprite número 20.

¿Más despacio?
¡Con gusto! Abriremos A-Map y pondremos dos overworlds distintos en la pestaña de eventos. Uno tendrá el número de sprite 10 y el otro el 20. Te dejo unas capturas del A-Map, como notarás están puestos exactamente en el mismo sitio.

Parece que estuviera seleccionado el mismo sprite, ¿no? Bueno... No es eso, sólo que hay uno encima del otro (fíjate que el "Person event no" es diferente). Puedes configurarlo como quieras todos los campos excepto el Person ID. Allí le pondremos un número de flag a cada uno (que sean distintas entre sí). ¿Es necesario que sean dos flags distintas? Sí. Eso es lo que nos permitirá esconder a uno y mostrar al otro. Yo, por ejemplo, le pondré la flag 0x200 al mini que tiene el sprite 10 y 0x201 al que tiene el sprite 20. Presta atención a ese campo que dije:

Bien... ¿Cómo hacer para ocultar uno y mostrar el otro desde un script?
Te explico: Las ROMs que editamos tienen un sistema armado que oculta automáticamente al mini si la flag que tiene en el campo Person ID está activada y lo muestra si no lo está.
Entonces... Lo primero que queremos es que el mini con el sprite número 20 esté escondido desde el principio. Usaremos el número que pusimos en su campo Person ID (0x201) y tomaremos cualquier script que suceda antes de llegar a ese mapa. Puede ser un script de nivel ni bien empezar, una charla que suceda en un mapa anterior, un gatillo... Lo que tú quieras, el único requisito es que sea anterior a eso.
Y en ese script, además de todo lo que queremos ponerle, agregaremos esta línea:
[script]setflag 0x201[/script]

Ahora, si llegamos al mapa nos encontraremos con que el mini del sprite número 20 está oculto y sólo veremos al del sprite número 10.

¿Cómo hacemos para cambiar el mini que se está mostrando?
En el script que fuera que quisieras hacer ese cambio pondremos las siguientes líneas:
[script]setflag 0x200
clearflag 0x201[/script]

La primera es para ocultar al mini del sprite número 10. En mi caso es la flag 0x200 pero tú puedes ponerle la que más te guste.
La segunda línea, se encarga de que el otro mini deje de estar oculto. Así habremos invertido la rueda.

El cambio no sucede inmediatamente luego del script sino que tengo que caminar por el mapa para que suceda
Bien. Si el script para hacer ese cambio está en el mismo mapa, es probable que suceda eso. ¿Cómo lo solucionamos? Tendremos que ir más lejos y usar los siguientes comandos:
[script]hidesprite 7
showsprite 3[/script]

La primera línea oculta al instante al mini número 7 (en mi caso es el que tiene el sprite 10) y la segunda muestra al mini número 3 (que en mi caso es el que tiene el sprite 20).

¿Y de dónde saco esos números (3 y 7)?
Mira en el A-Map donde pusimos la flag, verás que tenemos un campo llamado Person event no. Ese es el número que tenemos que poner en estos últimos comandos.
Si miras mis capturas, verás que el que tiene el sprite número 10, en la casilla Person event no dice 7 y el que tiene el sprite número 20, 3.


¡Eso es todo! Si he sido lo suficientemente claro explicándolo y tú lo has seguido al pie de la letra, ya tendrás el cambio de mini listo.
Si algo no lo he dejado muy claro, si no estás seguro o si tienes algún problema al intentarlo, ¡avisa! Que no muerdo. Volveré a explicártelo con mucho gusto ^^
 

Miikel

Amante de los Pkmn Tipo Dragón
Muy buenas, amigo. Qué bueno que hayas decidido adentrarte en el mundo del scripting.

Veamos... Lo que planteas exactamente como lo planteas... No, es imposible.
Lo que podemos hacer es esto: al activar la flag el mini que tiene el sprite número 10 desaparecerá y aparecerá otro que tiene el sprite número 20.

¿Más despacio?
¡Con gusto! Abriremos A-Map y pondremos dos overworlds distintos en la pestaña de eventos. Uno tendrá el número de sprite 10 y el otro el 20. Te dejo unas capturas del A-Map, como notarás están puestos exactamente en el mismo sitio.

Parece que estuviera seleccionado el mismo sprite, ¿no? Bueno... No es eso, sólo que hay uno encima del otro (fíjate que el "Person event no" es diferente). Puedes configurarlo como quieras todos los campos excepto el Person ID. Allí le pondremos un número de flag a cada uno (que sean distintas entre sí). ¿Es necesario que sean dos flags distintas? Sí. Eso es lo que nos permitirá esconder a uno y mostrar al otro. Yo, por ejemplo, le pondré la flag 0x200 al mini que tiene el sprite 10 y 0x201 al que tiene el sprite 20. Presta atención a ese campo que dije:

Bien... ¿Cómo hacer para ocultar uno y mostrar el otro desde un script?
Te explico: Las ROMs que editamos tienen un sistema armado que oculta automáticamente al mini si la flag que tiene en el campo Person ID está activada y lo muestra si no lo está.
Entonces... Lo primero que queremos es que el mini con el sprite número 20 esté escondido desde el principio. Usaremos el número que pusimos en su campo Person ID (0x201) y tomaremos cualquier script que suceda antes de llegar a ese mapa. Puede ser un script de nivel ni bien empezar, una charla que suceda en un mapa anterior, un gatillo... Lo que tú quieras, el único requisito es que sea anterior a eso.
Y en ese script, además de todo lo que queremos ponerle, agregaremos esta línea:
[script]setflag 0x201[/script]

Ahora, si llegamos al mapa nos encontraremos con que el mini del sprite número 20 está oculto y sólo veremos al del sprite número 10.

¿Cómo hacemos para cambiar el mini que se está mostrando?
En el script que fuera que quisieras hacer ese cambio pondremos las siguientes líneas:
[script]setflag 0x200
clearflag 0x201[/script]

La primera es para ocultar al mini del sprite número 10. En mi caso es la flag 0x200 pero tú puedes ponerle la que más te guste.
La segunda línea, se encarga de que el otro mini deje de estar oculto. Así habremos invertido la rueda.

El cambio no sucede inmediatamente luego del script sino que tengo que caminar por el mapa para que suceda
Bien. Si el script para hacer ese cambio está en el mismo mapa, es probable que suceda eso. ¿Cómo lo solucionamos? Tendremos que ir más lejos y usar los siguientes comandos:
[script]hidesprite 7
showsprite 3[/script]

La primera línea oculta al instante al mini número 7 (en mi caso es el que tiene el sprite 10) y la segunda muestra al mini número 3 (que en mi caso es el que tiene el sprite 20).

¿Y de dónde saco esos números (3 y 7)?
Mira en el A-Map donde pusimos la flag, verás que tenemos un campo llamado Person event no. Ese es el número que tenemos que poner en estos últimos comandos.
Si miras mis capturas, verás que el que tiene el sprite número 10, en la casilla Person event no dice 7 y el que tiene el sprite número 20, 3.


¡Eso es todo! Si he sido lo suficientemente claro explicándolo y tú lo has seguido al pie de la letra, ya tendrás el cambio de mini listo.
Si algo no lo he dejado muy claro, si no estás seguro o si tienes algún problema al intentarlo, ¡avisa! Que no muerdo. Volveré a explicártelo con mucho gusto ^^
Amigo esta mas que bien, jajaja y eso que soy torpe para entender, pero si, entendí perfectamente todo. Gracias por tomarte la molestia, me servirá.

Saludos!
 
Estado
Cerrado para nuevas respuestas.
Arriba