Registrarse

[Duda][SOLUCIONADO] Mi script no funciona correctamente y corregirlo me podria servir a futuro

Estado
Cerrado para nuevas respuestas.

Lunos

Enfrentando a La Organización
Miembro insignia
Holi.
Queria intentar ayudar a el usuario "cristofers" con su problema pero me veo incapaz.
Ya que Fel!x aportó una solución con Variables, yo queria aportar una con Flags, pero algo está saliendo mal y no entiendo muy bien el qué :/

El script como tal, es el siguiente:
#dynamic 0x0800000

#org @inicio
lock
faceplayer
checkflag 0x820 <-- Comprueba el estado de la Flag de la Medalla de Brock
compare LASTRESULT 0x1 <-- Si está Activada..
if 0x1 goto @premio <-- El script te enviará a la sección "@premio"
msgbox @hola 0x6 <-- Si no, el script seguirá normalmente.
release
end

#org @premio
checkflag 0x8D3 <-- Comprueba el estado de la Flag 8D3 que por defecto está libre.
compare LASTRESULT 0x1 <-- Si está activada..
if 0x1 goto @medallaconseguida <-- El script te enviará a la sección "@medallaconseguida"
msgbox @regalo 0x6 <-- Si no, el script seguirá normalmente.
giveitem 0x1 0x1 MSG_OBTAIN
msgbox @suerte 0x6
closeonkeypress
setflag 0x8D3 <-- Aqui es cuando se activa la Flag, cosa que si ya has accedido a esta parte una vez, no podras volver a acceder nunca mas, ya que todo el rato deberias estar siendo enviado a la sección "@medallaconseguida"
release
end

#org @medallaconseguida
msgbox @hola2 0x6
release
end

#org @hola
= Hola [player].

#org @regalo
= Tienes la Medalla de Brock.

#org @suerte
= Buena suerte en tu viaje.

#org @hola2
= Hola [player].

Ahora bien.. el efecto es sencillo de explicar:
Parte 1:
Comprueba si el jugador tiene o no tiene la Medalla de Brock.

Parte 2:
Si la tiene, se activará un msgbox, se entregará un objeto y se activará la Flag 8D3 que repito, por defecto está libre.
Si no la tiene, se activará un msgbox y acabará el script.

Parte 3:
Si se vuelve a interactuar con el NPC, automaticamente deberia ser enviado a "@medallaconseguida" todo el tiempo.

Pero algo está saliendo mal y no entiendo el qué ;_; ...
Siempre se activa el msgbox "@hola", como si ignorase totalmente el checkflag, el envio de secciones dentro del propio script, es como tener un hijo en su etapa de rebeldia.. creo.. ;_; ..

Y quisiera ayuda con esta tonteria para referencias futuras, principalmente xD

De antemano muchisimas gracias <3

EDITO:
Odio. A los malditos. Taggeos de usuarios que arruinan la lectura del script.
;_; ..
 
Última edición:

HangedFaus

El Colgado
Re: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

¿Va junto a otro Script? Porque no veo que se activase en algún momento la Flag 820
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

¿Va junto a otro Script? Porque no veo que se activase en algún momento la Flag 820
._. ...
Lo expliqué muy claramente en el post principal.
La Flag 820 es la Flag de la Medalla de Brock.

Por ende, solo se puede acceder a la seccion "@premio" una vez hayas obtenido la Medalla.
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Tu script sería así:

checkflag 0x8D3
if 0x1 goto 0xOFFSET 1
checkflag 0x820
if 0x1 goto 0xOFFSET 2
msgbox 0xTEXTO SI NO TIENES MEDALLA 0x2
end

org 0xOFFSET 1
Aquí haces el script por defecto del NCP una vez que ya le has enseñado la medalla

org 0xOFFSET 2
Script al comprobar que si tienes la medalla
giveitem 0xObejto 0xCantidad 0x0
setflag 0x8D3
end
El truco está en comparar primero la flag 8D3 antes que la medalla.
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Primero dos cosas.

1. Los checkflag se comparan con un "if", el Lastresult no funciona con flags.
2. Las flags libres seguras de usar son 0x200 a 0x2FF, nada cuesta usar flags seguras.

Estoy seguro que en eso fallas
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

El truco está en comparar primero la flag 8D3 antes que la medalla.
Muchisimas gracias por la ayuda, pero me sigue sin funcionar ;_;

#dynamic 0x0800000

#org @inicio
lock
faceplayer
checkflag 0x8D3
compare LASTRESULT 0x1
if 0x1 goto @medallaconseguida
checkflag 0x820
compare LASTRESULT 0x1
if 0x1 goto @premi o
msgbox @hola 0x6
release
end

#org @premi o
msgbox @regal o 0x6
giveitem 0x1 0x1 MSG_OBTAIN
msgbox @suerte 0x6
closeonkeypress
setflag 0x8D3
release
end

#org @medallaconseguida
msgbox @hola 2 0x6
release
end

#org @hola
= Hola [player].

#org @regal o
= Tienes la Medalla de Brock.

#org @suerte
= Buena suerte en tu viaje.

#org @hola 2
= Hola [player].

EDITO:
Primero dos cosas.

1. Los checkflag se comparan con un "if", el Lastresult no funciona con flags.
2. Las flags libres seguras de usar son 0x200 a 0x2FF, nada cuesta usar flags seguras.

Estoy seguro que en eso fallas
8D3 siempre me ha servido tanto en FireRed como en Ruby en incontables ocasiones.
Ahora.. lo primero si que tiene mas sentido xD..
Lo intentaré.

EDITO2:
Nada, eso te lo corrige el XSE automaticamente al compilar el script.

EDITO3:
Y nada, reemplazando el Flag 8D3 tanto en el setflag como en el checkflag por el 200, no tiene diferencia alguna.
 

Adke

weeeh
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Prueba a poner un clearflag 0x8D3 en un NPC antes de activar el script. Igual puede ser que la tengas activada (aunque esté libre por defecto) nunca se sabe.
Si no es eso, no se me ocurre nada más, no le veo fallos al script D:
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Prueba a poner un clearflag 0x8D3 en un NPC antes de activar el script. Igual puede ser que la tengas activada (aunque esté libre por defecto) nunca se sabe.
Si no es eso, no se me ocurre nada más, no le veo fallos al script D:
Ya lo probé y nada, no es eso.

De todos modos hubiese sido imposible que esa haya sido la causa ya que la ROM está limpia y la ultima flag utilizada segun la preciosa lista en la Sección de "Ayuda" del XSE, es la 8C3, es decir, hay otras 10 flags libres de por medio.

Igualmente gracias por ayudar u.u
 

Cheve

MoonLover~
Miembro de honor
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Pregunta: ¿Como haz activado la Flag de Brock? Si ves tu tarjeta entrenador, aparece allí al medalla?
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Pregunta: ¿Como haz activado la Flag de Brock? Si ves tu tarjeta entrenador, aparece allí al medalla?
Bold: En las primeras pruebas añadí un NPC que me diera un Charizard Lv80 y la Medalla de Giovanni, cosa que derrotase a Brock de 1 hit.
Luego pensé en que seria mas facil que dicho NPC me diera la Medalla de Brock directamente y ya está.. soy un poco tonto xD
Y sobre el metodo, "setflag 0x820" y ya está, facil y sencillo.

Bold + Red: Si.
 
Última edición:

Cheve

MoonLover~
Miembro de honor
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

8D3 siempre me ha servido tanto en FireRed como en Ruby en incontables ocasiones.
Ahora.. lo primero si que tiene mas sentido xD..
Lo intentaré.

EDITO2:
Nada, eso te lo corrige el XSE automaticamente al compilar el script.

EDITO3:
Y nada, reemplazando el Flag 8D3 tanto en el setflag como en el checkflag por el 200, no tiene diferencia alguna.
A mi no me lo corrige ._.

checkflag 0xFLAG
if 0x1 call @...
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

A mi no me lo corrige ._.

checkflag 0xFLAG
if 0x1 call @...
Lo miré tan rapido que me habia parecido que si, mil disculpas D:
Ya eliminé ambos "compare LASTRESULT 0x1", compilé y funciona perfectamente..
Debí haber mirado con mas calma, perdon y muchisimas gracias @#BloodMoon y @~Ruki! <3
 
Última edición:

Jo7a

Kiero mi nick amarillo D:
Respuesta: [Duda] Algo me está saliendo mal en este script, no se lo que es, y podria servirme a futuro xD

Muchisimas gracias por la ayuda, pero me sigue sin funcionar ;_;

#dynamic 0x0800000

#org @inicio
lock
faceplayer
checkflag 0x8D3
compare LASTRESULT 0x1
if 0x1 goto @medallaconseguida
checkflag 0x820
compare LASTRESULT 0x1
if 0x1 goto @premi o
msgbox @hola 0x6
release
end

#org @premi o
msgbox @regal o 0x6
giveitem 0x1 0x1 MSG_OBTAIN
msgbox @suerte 0x6
closeonkeypress
setflag 0x8D3
release
end

#org @medallaconseguida
msgbox @hola 2 0x6
release
end

#org @hola
= Hola [player].

#org @regal o
= Tienes la Medalla de Brock.

#org @suerte
= Buena suerte en tu viaje.

#org @hola 2
= Hola [player].
Ese no es mi script xD
En ningún momento dije que usases el compare LASTRESULT, ya que no sirve en estos casos. Bueno, pero veo que ya has solucionado la duda, así que cierro el tema No tengo nada más que aportar.
 
Estado
Cerrado para nuevas respuestas.
Arriba