qna_rh
Thread Id: 28952
Thread Name: ¿Uso de flags?
#0
Mr Game Dan 29148
Bueno, hice un script donde hago checkflags, movimientos etc. etc. Me quedo así
'---------------
#org 0xE3D22B
checkflag 0x6A6C
if 0x1 call 0xE3D22C
call 0xE3D22D
end

'---------------
#org 0xE3D22C
release
end

'---------------
#org 0xE3D22D
lock
playsong 0x12E 0x33
applymovement 0x1 0xE3D22E
pause 0x40
msgbox 0xE3D22F MSG_FACE '"Oh, [player]...! Our neighbor, PRO..."
setflag 0x862
setflag 0x130
setflag 0xD8
fanfare 0x13E
setflag 0x6A6C
msgbox 0xE3D230 MSG_FACE '"Oh, [player]...! Our neighbor, PRO..."
msgbox 0xE3D231 MSG_FACE '"Oh, [player]...! Our neighbor, PRO..."
special 0x9D
msgbox 0xE3D232 MSG_FACE '"Oh, [player]...! Our neighbor, PRO..."
applymovement 0x1 0xE3D233

'---------
' Strings
'---------
#org 0xE3D22F
= ¡Ah,[player]...!\pNuestro vecino, el Profesor Elm,\nte estaba buscando.\lDijo que quería que le hicieras un\lfavor.\l¡Ah!¡Casi se me olvida! Ya han\ltraído tu Pokénav del taller.\l¡Aquí tienes!

#org 0xE3D230
= [player] recibió Pokénav

#org 0xE3D231
= El Pokémon Navigator o sólo\nPokénav.\lEs básico si quieres ser un buen\lentrenador.\l¡Ah! Falta la hora.\l¡No olvides ponerlo!\l¿Qué hora es?\l

#org 0xE3D232
= Vuelve a casa para cambiar de hora\nel reloj.\lSupongo que debes saber manejar el\ltelefono ¿Verdad?\l¿Recuerdas que hay que encender\le Pokénav y elegir el telefono?\lLos números están en la memoria.\lElige el nombre que quieras\l¿No te parece estupendo?

'-----------
' Movements
'-----------
#org 0xE3D22E
#raw 0x2 'Face Left
#raw 0x56 'Exclamation Mark (!)
#raw 0x9 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0xE3D233
#raw 0x8 'Step Down (Normal)
#raw 0x1 'Face Right
#raw 0xFE 'End of Movements

pero luego de compilarlo con XSE y abrir de nuevo el script, este queda así
'---------------
#org 0xE3D22B
checkflag 0x6A6C
end

alguien puede decirme que estoy haciendo mal :(
#1
Powergirl 28584
porque lo que estas compilando es la primera parte, intenta con esto (no pondre los textos)


#2
Mr Game Dan 29148
Bueno, gracias pero ahora el script se volvió así
'---------------
#org 0xE3D22B
checkflag 0x26C
end
#3
Decidme_un_nick_4315♪Kuchiki 28197
Ehm... ¿Con los checkflag no se ponía "goto" en vez de "call"?
Si me confundo que me digan :D
#4
Tito Sayer301 26309
Iniciado por Yo tampoco.
Ehm... ¿Con los checkflag no se ponía "goto" en vez de "call"?
Si me confundo que me digan :D


Eso depende de la funcion, en este script esta muy bien hecho para que funcione asi.
Goto te hace ir a un pointer, pero no vuelves
con Call vas a ese pointer y al terminarlo con un return, vuelves al punto donde estabas antes.

El unico fallo que veo es que usas un checkflag 0x6000 y las flags no son esas!!


Iniciado por Comisión anti flags erróneas de Javi y Sayer
Las flags que deben ser utilizadas para evitar errores son las siguientes:

Desde la 0x200 hasta la 0x29F
Desde la 0x500 hasta la 0x79F
Desde la 0x1000 hasta la 0x109F
#5
Mr Game Dan 29148
Gracias por su ayuda, pero mi script sigue volviendose en esto
'---------------
#org 0xE3D22B
checkflag 0x26C
end
#6
Tito Sayer301 26309
Iniciado por Mr Game Dan
Gracias por su ayuda, pero mi script sigue volviendose en esto
'---------------
#org 0xE3D22B
checkflag 0x26C
end


Probaste tu script original pero con las flags que te indiqué?
¿que Rom base usas?
¿porque un offset taaan lejano?
#7
Mr Game Dan 29148
Bueno, yo utilizo el rom de pokémon esmeralda en español, para hacer un remake de Pokémon Oro
Rom Name: POKEMON EMER
Rom Type: BPE
Rom Language: S
Rom version: 1.0
#8
G0LD_ZTHVARD0X! 27515
Primero debes saber que cuando haces uso del comando "call" este se cierra con un "return" no con un "end" ya que al ser una llamada a un pointer el script debe regresar a su pocision original, osea asi

'---------------
#org 0xE3D22B
checkflag 0x6A6C
if 0x1 call 0xE3D22C
call 0xE3D22D
end
'---------------
#org 0xE3D22C
release
return

Aunque mas creo que es por direcciones erroneas, mira que el primer call es a 0xE3D22C cuyo script pesa 2 bytes (release y end/return) y el otro esta a 1 byte, osea en 0xE3D22D, prueba ponerlo en 0xE3D22F o superior.
#9
cosarara97 12296
'---------------
#org 0xE3D22B

'---------------
#org 0xE3D22C

'---------------
#org 0xE3D22D

Gente, nadie lo ve? (Bueno, ahora Franco se ha adelantado)

A ver, estás sobreescribiendo lo de una parte el script con lo de otra. Cambia todos esos offsets absoultos por etiquetas dinámicas, o aprende a dejar algo de margen entre las cosas.
#10
G0LD_ZTHVARD0X! 27515
Prueba usando #dynamic, quedaria mas o menos asi

'---------------
#dynamic 0xE3D22B
#org @start1
checkflag 0x200
if 0x1 goto @start2
goto @start3
end
'---------------
#org @start2
release
end
'---------------
#org @start3
lock
playsong 0x12E 0x33
applymovement 0x1 0xE3D22E
pause 0x40
msgbox 0xE3D22F MSG_FACE '"Oh, [player]...! Our neighbor,
PRO..."
setflag 0x862
setflag 0x130
setflag 0xD8
fanfare 0x13E
setflag 0x6A6C
msgbox 0xE3D230 MSG_FACE '"Oh, [player]...! Our neighbor,
PRO..."
msgbox 0xE3D231 MSG_FACE '"Oh, [player]...! Our neighbor,
PRO..."
special 0x9D
msgbox 0xE3D232 MSG_FACE '"Oh, [player]...! Our neighbor,
PRO..."
applymovement 0x1 0xE3D233

No tiene logica que uses call porque te hara regresar al script principal y se ejecutara estando activada o desactivada la flag

Mas o menos asi, me falto el start3, pero si no quieres usar el #dynamic deberias calcular el peso de cada subscript y sumarselo a la direccion principal, aunque si no eres pro en esto no lo recomiendo