qna_rh
Thread Id: 7621
Thread Name: [General] Flags
#0
Hikary 12850
Hola!
Bueno tengo una duda que la tengo desde hace tiempo, y sin esto no puedo avanzar en nada, ya que en las guias no veo que expliquen esto.

Estube tratando de entender la guia de scripts, luego de leer miles de veces sigo sin entender algo que creo que no esta, o que yo entiendo mal:

En la guia de la pagina dice:




Hasta ahi todo bien, entiendo para que sirven y todo lo demas, pero lo que no entiendo es esto:

Ajam, entiendo.. pero.. donde estan las flag exactamente, por que ahi dice que hay muchas flags libres, pero donde veo si hay flags libres?. Osea no se si me explico, lo que quiero saber como hago para poner una flag si no se que numero poner despues de "Checkflag 0x" ¿y aca que numero pongo?, y ponele que ponga los numeros libres que dicen ahi(del 1200 al 3000), bueno lo pongo a alguno, ¿y que hago con eso?

Espero que se haya entendido mi duda, trate de hacerla lo mas entendible pero creo que no me salio bien, aclaro que ya lei todas las guias posibles y no logro encontrar eso, y sin eso no puedo seguir, y como entre hace unos dias al foro no me puedo meter a ninguna escuela ya que tengo pocos post.
Hay otras cosas que me dan duda pero ya eso seria que me den una guia y aca no se puede.
Saludos y gracias de antemano ^^.
#1
~Criisss 12272
Supongo que lo que quieres hacer es evitar que un evento se repita.


#org 0x800000
checkflag 0x1234 ->chequea el valor de la flag 1234
if 0x1 goto 0x810000 -> si hay un 1 (si esta activada) va al script que no hace nada.
--
Acá irian los comandos que producen tu evento
--
setflag 0x1234 -> activas la flag 1234
release
end

El checkflag lo unico que hace es ver el estado de una flag (ver si tiene un 1 o un 0) con esto evaluas, si tiene un 1 es que el evento ya se ejecutó, en caso se que haiga un 0 se ejecuta el evento. Entonces luego de ejecutar el evento activas la flag con setflag, ahi le pones un 1.

Ahora, debes usar una flag diferente para cada evento, es la que pusiste en el setflag (1234) y debes checar la flag del evento en este caso la 1234 checkflag 0x1234

Hay una manera de saber si una flag esta activada o no, debes asignarsela en a-map a un mini, si el mini no esta en el juego quiere decir que esta activada, si esta, esta desactivada

Recuerda, va la misma flag en los dos comandos.

Si no te quedo claro me avisas...
#2
Hikary 12850
Con eso me sacaste una duda, pero hay algo que todavia no entiendo.
Estoy tratando de explicarte a que me refiero, por que si no, no se va a entender lo que digo.



Entiendo, chequea la flag si se activo o no.
Pero dice "chequea el valor de la flag 1234", ahora que hace esa flag 1234, por que si creo un script con lo que entiendo en la parte de check flag pondria cualquier numero, por que no se para que sirve ese numero que pongo.
Si, ya se, sirve para chequear el valor de la flag del numero que ponga, pero el numero de la flag seria como una direccion o algo asi, pero... ¿direccion a donde?, supongo que una flag de numero 1121 no es lo mismo que otra de numero 1553, pero ¿que es la flag numero 1121 y la 1553?, ¿es la direccion a que cosa?.

Eso no entiendo, pero el problema que no encuentro la forma de explicarlo, estoy hace 20 min tratando de explicar lo que no entiendo y de la forma que lo explico no se si se entiende :S.
Tambien explicar por aca es complicado, seria mejor en forma de chat.
Saludos y disculpa que moleste tanto, me cuesta mucho entender esto n.n y de la forma que tengo para explicar las cosas se hace mas dificil la ayuda.
#3
Landey 12387
Son las mismas flags xD
Flag 0001,Flag 0002....van ennumeradas..
el manual dice:
"1200 hasta la 3000" osea las flags 1200,1201,1202 y asi sucesivamente hasta la 3000 estan libres.

Osea que puedes usar cada una de esas para tus scripts..

apuesto a que mas de uno te pedira el msn "para explicarte"...buitres ¬¬ xDDD
#4
Hikary 12850
Iniciado por ~Cross.Core..

Son las mismas flags xD
Flag 0001,Flag 0002....van ennumeradas..
el manual dice:
"1200 hasta la 3000" osea las flags 1200,1201,1202 y asi sucesivamente hasta la 3000 estan libres.

Osea que puedes usar cada una de esas para tus scripts..

apuesto a que mas de uno te pedira el msn "para explicarte"...buitres ¬¬ xDDD


xDD

Sisi, eso entendi, pero esos numeros es la direccion de que cosa?.
Osea si yo te digo barrio San Martin, casa numero 1201, el 1201 es la direccion de la casa.
Y el numero de la flag direccion a que cosa es? (ya se que es la direccion de una flag ¬¬), pero ¿que hace ese numero de flag?
Soy re mala para decir las cosas :/
Saludos.
#5
Landey 12387
Ahhmm..creo que ya se a que vas

Cada flag tiene 2 estados,no es direccion a nada...solo dice Activado/Desactivado
y tienes flags desde 1200 hasta la 3000 para tus scripts...
osea,cuentas con 2800 interruptores de Si/no
#6
Hikary 12850
Iniciado por ~Cross.Core..

Cada flag tiene 2 estados,no es direccion a nada...solo dice Activado/Desactivado
y tienes flags desde 1200 hasta la 3000 para tus scripts...
osea,cuentas con 2800 interruptores de Si/no


Osea que.. cuando pongo:
#org 0xAc94E0 (script del offset1)
checkflag 0x1234 o 1265
if 0x1 goto 0x ¿Aca iria la direccion del otro script que no sea el de arriba? (AC94EO)
msgbox 0xAc92D0 (script del offset2)
callstd 0x2
setflag 0x1234
release
end

El "if 0x1 goto 0xNumeroDeScript" dice que si esta activada valla al script de ese numero
Y el "if 0x0" el "0x0" ¿significa que el evento se ejecuta?
Bueno tengo otras dudas pero ya me parece que yo tengo que releer algo para terminar de comprender bien.
Bueno gracias por las respuestas, si tengo una duda despues de releer los molesto de nuevo :S
Saludos.
Iniciado por vediel
no son direcciones de barrios ellas no funcionan asi ay unas direcciones que ya estan ocupadas como la flag de la pokedex ya conosida pero las libres se usan para no repetir o encadenar scripts no tienen que ver con casas bueno chau aver si te sirve ^^
Ya se ¬¬ lo de las direcciones era un ejemplo, no soy tan tonta xD, aparte en el juego hay pueblos, no barrios =P.
Bay.
#7
Landey 12387
Hare un mini script para explicarte,lo que tenemos que hacer es hablar primero con "B" persona para luego poder hablar con "A" persona (es un ejemplo)

script de A

#org 0xoffsetinicial / Offset inicial
checkflag 0xflag /comprueba si la flag esta activada o desactivada
if 0x1 goto 0xoffsetdesi / Si esta activada nos mandara a otro punto,
msgbox 0xoffsetdemsg1 ox2 / Un msgbox normal
release / Quita el lock
end / termina

#org 0xoffsetdesi / llegaremos aqui si la flag anterior estaba activada
msgbox 0xoffsetdemsg2 0x2 /otro msgbox
release / quita el lock
end / termina

#org 0xoffsetdemsg1
= Si quieres que te hable primero habla con "B"

#org0xoffsetdemsg2
= Bien,ahora puedo hablarte


Hasta donde vamos primero verificara si la flag esta activa,entonces no nos hablara hasta que la activemos...

script de "B"

#org 0xoffset
checkflag 0xflag2 / comprobara una flag que usaremos adelande
if 0x1 goto 0xoffset2 /si esta activada nos mandara a otro punto
msgbox 0xoffsetdemsg1 /un msgbox
setflag 0xflag / ahora activara la flag para que "A" quiera hablarnos
setflag 0xflag2 / ahora activa la flag para que la proxima vez que hablemos con "B" no se repita lo que hablamos
release
end

#org 0xoffset2 /aqui llegaremos si la flag esta activada
msgbox 0xoffsetdemsg2 0x2 /otro msgbox
release
end

#org 0xoffsetdemsg1
= Dile a "A" que vas de mi parte y querra hablarte

#org 0xoffsetdemsg2
= Hola,que tal?


Es un claro ejemplo de como usar las flags,
Las flags son interruptores, Checkflag es un comando que checa el valor de la flag
"If 0x0 goto" se traduce = Si esta desactivada ire a..
"If 0x1 goto" idem a la anterior,solo que activada
Setflag activa la flag,


Cualquier cosa pregunta...xD
post copiado de WOPH,en un tema parecido...el post es mio :P
#8
Hikary 12850
Aaahh!.. Graciaas! creo que entendi todo, ahora lo trato de armar =)
Gracias y disculpa por molestar ^^
Saludos!
#9
Landey 12387
Activar el Menu Pokemon:
Iniciado por ~Criisss

En este caso puedes usarlo asi:

setflag FR_PKMNMENU

O sino de la manera normal el numero es 0x828

setflag 0x828

Los archivos que vienen cos XSE son muy utiles, deberian verlos de vez en cuando :P


:sleepy:

Medallas FR:
Iniciado por ~Criisss

Men, esto viene con el XSE:


#define FR_BADGE1 0x820
#define FR_BADGE2 0x821
#define FR_BADGE3 0x822
#define FR_BADGE4 0x823
#define FR_BADGE5 0x824
#define FR_BADGE6 0x825
#define FR_BADGE7 0x826
#define FR_BADGE8 0x827


Lo puedes usar asi:

setflag 0x820

O sino:

setflag FR_BADGE1

de las dos maneras deberia funcionar...