Registrarse

Ayuda con este script

Estado
Cerrado para nuevas respuestas.
Buenass, soy nuevo y me gustaría que me dijeseis si este script tiene algun fallo:
#dynamic 0x800000

#org @start
lock
checkflag 0x2AD
if 0x1 goto @FlagUsada
msgbox @mensaje1 MSG_YESNO
compare LASTRESULT 0x1
if 0x1 goto 0x8809DB1
if 0x0 goto 0x8809D70
setflag 0x2AD
release
end


Pues quiero que solo se reproduzca una vez pero no hay manera, y la flag sé que no está usada.
 
Última edición:

Lunos

Enfrentando a La Organización
Miembro insignia
Ese script claramente no está completo, quieres que te redirija a ciertos puntos dependiendo de si el jugador responde Si o No a una pregunta, y no parece que hayas escrito dichos puntos.
Ademas, ¿Te acordaste de ponerle 2AD como el PersonID a "la persona" a la que le hayas dado el script?
 
No si comleto lo tengo, me falta poner los mensajes y punto, el problema es que no lo tengo en una persona, sino que en un objeto con script de poste.
'---------------
#org 0x809D47
lock
checkflag 0x2AD
if 0x1 goto 0x8809E24
msgbox 0x8809E2D MSG_YESNO
compare LASTRESULT 0x1
if 0x1 goto 0x8809DB1
if 0x0 goto 0x8809D70
setflag 0x2AD
release
end

'---------------
#org 0x809E24
msgbox 0x8809EED MSG_NORMAL
'---------------
#org 0x809DB1
msgbox 0x8809E94 MSG_NORMAL
givepokemon 0x72 0x1E 0x0 0x0 0x0 0x0
countpokemon
compare LASTRESULT 0x6
if 0x1 goto 0x8809DEA
closeonkeypress
msgbox 0x8809DF5 MSG_YESNO
compare LASTRESULT 0x1
if 0x1 call 0x8809E13
return

'---------------
#org 0x809D70
msgbox 0x8809F17 MSG_NORMAL
msgbox 0x8809E94 MSG_NORMAL
givepokemon 0x61 0x1E 0x0 0x0 0x0 0x0
countpokemon
compare LASTRESULT 0x6
if 0x1 goto 0x8809DEA
closeonkeypress
msgbox 0x8809DF5 MSG_YESNO
compare LASTRESULT 0x1
if 0x1 call 0x8809E13
return

'---------------
#org 0x809DEA
msgbox 0x8809EA7 MSG_NORMAL
release
end

'---------------
#org 0x809E13
countpokemon
subvar LASTRESULT 0x1
copyvar LASTRESULT LASTRESULT
special 0x9E
release
end

Ya puse mensajes de prueba y funciona bien, lo que pasa es que el mensaje que tiene que decir despues de que la flag haya sido usada no lo dice, y me repite todo siempre.
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
No si comleto lo tengo, me falta poner los mensajes y punto, el problema es que no lo tengo en una persona, sino que en un objeto con script de poste.

(...)

Ya puse mensajes de prueba y funciona bien, lo que pasa es que el mensaje que tiene que decir despues de que la flag haya sido usada no lo dice, y me repite todo siempre.
Acabo de probar tu script y la verdad que lo que falla es tu scripting, se te repetirá constantemente puesto que nunca se activa la flag, pero además tienes otros errores que noe ntiendo cómo no has visto si lo has probado a fondo.

Paso a detallarlos en rojo:

Código:
'---------------
#org 0x809D47
lock
checkflag 0x2AD
if 0x1 goto 0x8809E24
msgbox 0x8809E2D MSG_YESNO 
compare LASTRESULT 0x1
if 0x1 goto 0x8809DB1
[COLOR=red]if 0x0[/COLOR] goto 0x8809D70
[COLOR=Red]setflag 0x2AD
release
end
[/COLOR]

'---------------
#org 0x809E24
msgbox 0x8809EED MSG_NORMAL 
'---------------
#org 0x809DB1
msgbox 0x8809E94 MSG_NORMAL 
givepokemon 0x72 0x1E 0x0 0x0 0x0 0x0
countpokemon
compare LASTRESULT 0x6
if 0x1 goto 0x8809DEA
[COLOR=Red]closeonkeypress[/COLOR]
msgbox 0x8809DF5 MSG_YESNO 
compare LASTRESULT 0x1
if 0x1 call 0x8809E13
[COLOR=Red]return[/COLOR]

'---------------
#org 0x809D70
msgbox 0x8809F17 MSG_NORMAL 
msgbox 0x8809E94 MSG_NORMAL 
givepokemon 0x61 0x1E 0x0 0x0 0x0 0x0
countpokemon
compare LASTRESULT 0x6
if 0x1 goto 0x8809DEA
[COLOR=Red]closeonkeypress[/COLOR]
msgbox 0x8809DF5 MSG_YESNO 
compare LASTRESULT 0x1
if 0x1 call 0x8809E13
[COLOR=red]return[/COLOR]

'---------------
#org 0x809DEA
msgbox 0x8809EA7 MSG_NORMAL 
release
end

'---------------
#org 0x809E13
countpokemon
subvar LASTRESULT 0x1
[COLOR=Red]copyvar LASTRESULT LASTRESULT[/COLOR]
special 0x9E
release
end
  1. El if 0x0 es innecesario, puesto que solo llegará a este punto si no se cumplió lo anterior.
  2. Como pasamos a otra dirección, no llegamos en ningún momento al punto en que pusiste el setflag, el release y el end.
  3. Ese closeonkeypress no funciona mucho en esta ocasión, al querer keypressear para cerrarlo siempre termino volviendo a empezar el script.
  4. No estoy seguro de que este return funcione, pero si volviéramos, es probable que luego se ejecutara el segundo goto de la primera sección del script, por lo que es mejor poner aquí release y end. También podríamos poner aquí el setflag.
  5. Los siguientes dos errores igual que los anteriores.
  6. El último, no tendría sentido en absoluto lo que hiciste. Restaste a la variable 0x800D (o bien, LASTRESULT) 1 y luego copiaste en esa variable el contenido que ya tenía.
    Lo correcto es copiar en la variable 0x8004, la 0x800D, para el special 0x9E.
  7. Nota extra: Si el pokémon va a la computadora no le pones un mote. Además haces el countpokemon después del give, por lo que también al recibir el sexto iría a esa dirección. (Si era lo que querías, pues no es un error xD)

Obviamente te propongo que en vista de esta lista de errores intentes tú mismo ir arreglando el script por ensayo y error.
Sin embargo, por si acaso y porque algún día esta duda será un tema cerrado en nuestro querido subforo, dejo un script correcto y testeado que funciona. Pero no te recomiendo verlo hasta que hayas corregido tú mismo el tuyo.

Código:
[PLAIN]
#dynamic 0x800000

'---------------
#org @start
lock
checkflag 0x2AD
if 0x1 goto @snippet1
msgbox @texto1 MSG_YESNO '"Hola dime, ¿Pokeyes o Pokeno?"
compare LASTRESULT 0x1
if 0x1 goto @snippet2
goto @snippet3

'---------------
#org @snippet1
msgbox @texto2 MSG_NORMAL '"Ya te di tu pokemon."
release
end

'---------------
#org @snippet2
countpokemon
copyvar 0x4001 LASTRESULT
msgbox @texto3 MSG_NORMAL '"Hola, soy un mensaje."
givepokemon 0x72 0x1E 0x0 0x0 0x0 0x0
setflag 0x2AD
compare 0x4001 0x6
if 0x1 goto @snippet4
msgbox @texto4 MSG_YESNO '"¿Mote o no mote? (2)"
compare LASTRESULT 0x1
if 0x1 goto @snippet5
setvar 0x4001 0x0
release
end

'---------------
#org @snippet3
msgbox @texto5 MSG_NORMAL '"Hola, dijiste que no."
msgbox @texto3 MSG_NORMAL '"Hola, soy un mensaje."
countpokemon
givepokemon 0x61 0x1E 0x0 0x0 0x0 0x0
setflag 0x2AD
compare LASTRESULT 0x6
if 0x1 goto @snippet4
msgbox @texto4 MSG_YESNO '"¿Mote o no mote? (2)"
compare LASTRESULT 0x1
if 0x1 goto @snippet5
setvar 0x4001 0x0
release
end

'---------------
#org @snippet4
setvar 0x4001 0x0
msgbox @texto6 MSG_YESNO '"Hola. Tienes 6 pokemons. ¿Quiere m..."
if 0x0 goto @snippet1
special 0x166
release
end

'---------------
#org @snippet5
countpokemon
subvar LASTRESULT 0x1
copyvar 0x8004 LASTRESULT
special 0x9E
release
end


'---------
' Strings
'---------
#org @texto1
= Hola dime, ¿Pokeyes o Pokeno?

#org @texto2
= Ya te di tu pokemon.

#org @texto3
= Hola, soy un mensaje.

#org @texto4
= ¿Mote o no mote? (2)

#org @texto5
= Hola, dijiste que no.

#org @texto6
= Hola. Tienes 6 pokemons. ¿Quieres mote o no?
[/PLAIN]
Por cierto, el setvar 0x4001 0x0 es para liberarla luego de usarla temporariamente para comparar los pokemons que tenías.
Podrías usarla en lugar de la flag como condición para que se ejecute o no el script, según lo que quieras hacer.

Agradecimiento: A Sonicarvalho (o como se escriba) por haber posteado en el foro el método para poner mote al pokémon cuando es enviado a la PC.
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba