qna_rh
Thread Id: 22676
Thread Name: ¿Flag o variable?
#0
Pacodelopio 26193
Buenas a ver... pos estaba haciendo un script gatillo,
pero cuando quería que no se volviera a repetir, se repetía
y me di cuenta que era por que en vez de flag había usado un check item, luego quise poner un flag pero me di cuenta que los que abía usado el del menú y el de que te salga "pokemon" en el menu ya los había usado, y no quería tocar ninguno de las medallas, solo quería hacer que cuando ya te hayan dado el objeto, no te lo vuelvan a dar ni el script vuelva a suceder, ya había hecho mas pero con flags, y luego vi que se pueden usar variables en vez de flags de una manera parecida, pero que numero le pongo a un variable? es como los flags que hay unos eventos asignados? por que no voy a inventarmelos, hay alguna lista que diga a que corresponde cada flag?
#1
Tito Sayer301 26309
Las variables son de la 40FF para abajo en FR, en ruby no lo se pero imagino que sera para lo mismo. Aun asi tambien hay una lista de flags muy bonita del tutorial de mew2

Iniciado por Macrotutorial Hacking desde 0
Desde la 0x200 hasta la 0x29F
Desde la 0x500 hasta la 0x79F
Desde la 0x1000 hasta la 0x109F

#2
Pacodelopio 26193
No entiendo mucho lo de Iniciado por Marotutorial, que son las variables libres del Ruby?
Mersi por responder igualmente, pero si yo cojo una variable libre, como hago que esa variable detecte por ejemplo que tengo una pocion en mi equipo, y que si no tengo ninguna no me deje pasar, ya se que tengo que hacer un script gatillo, pero por ejemplo si fuera con un flag haría 0x801 para ver si tiene la pokedex y si no pos no pasa, pero por ejemplo con los variables como hago que 0x200 (por ejemplo) corresponda a un item no se si me explico bien...
#3
Javi4315♪ 13374
A ver, un script de gatillo puedes evitar que se siga ejecutando con una flag o cualquier otra condición. Por ejemplo, imagínate que después del script activas la flag 0x200 (o la que sea). Entonces pones al principio del script un checkflag que te lleve a un puntero llamémosle "vacío":

[...]
checkflag 0x200
if 0x1 goto @fin
[...]
#org @fin
end
[...]

De esa manera, cuando pisas y ya está activada la flag, el script termina sin hacer nada. Claro que esta es la forma chapucera. Notarás que al pisar se te quedará como bloqueado, muy, muy poco tiempo, pero se queda porque lee el script. Entonces eso no queda profesional, lo suyo es hacerlo con variables.

Cuando configuras el script de gatillo, tienes que poner una variable y un valor (en advance map) para que se ejecute. Lo que tienes que hacer es asignar una variable, imagínate que es la 0x40FF. Si no la has utilizado antes, tendrá por defecto el valor 0. Así que configuras el script con la variable "40FF" y el valor "0000" ¿Bien hasta ahí?

Eso lo que quiere decir básicamente es que siempre que la variable 0x40FF tenga el valor 0x0 se ejecutará el script. Pero si tiene uno distinto, no lo hará. Por ejemplo, si en un momento determinado haces un setvar y le cambias el valor de la variable, por ejemplo, a 1, ya no se ejecutará el script ¿Entiendes?

Entonces, la forma de hacerlo es poner al final del script un setvar, un addvar o algún comando de esos para cambiar el valor a la variable, de tal forma que no se vuelva a repetir el script al pisar.
#4
Pacodelopio 26193
Muchas gracias Javi, justo ayer por la noche Sayer me pasó tu Macrotutorial, y ya lo pude hacer con lo de 0x200, es que no sabía que era así de simple, pensaba que tendría que configurar el flag de una manera mas complicada, pero ya vi que era tan simple como poner setflag 0x(el numero libre que hayas elegido) y para que no se repita checkflag 0x(el mismo numero) y luego seguir el script con if 0x1 goto @yalohahecho y luego del script,
#org @yalohahecho
release
end
De todas formas gracias a los 2 por ayudarme y a ti Javi Macrogracias por el Macrotutorial :)
#5
Tito Dafting301_4315♪ Kuchiki 24341
Badabín badabún~