qna_rh
Thread Id: 24906
Thread Name: Problema con un script
#0
DannyDirnt 28229
Hola! Estoy intentando hacer un script de gatillo en el que al llegar a la salida de la casa tu madre te pare y te de un Pokémon.

Este es el script:



Todo funciona a la perfección, excepto por el detalle de que cuando me pregunta si quiero ponerle un mote a Electrike, si le digo 'No' se ejecuta el @talk2 pero si le digo 'Sí' entonces le pongo el mote y cuando termino el mini de la madre se queda uno o dos segundos parado y se salta el @talk2 pasando directamente al @mov2... Alguien sabe qué está mal? Al principio pensé que podía deberse a que en lugar de gosub hubiese utilizado goto, pero cuando fui a comprobarlo todo estaba bien.

No sé por qué en el spoiler sale [MENTION=24618]Nick[/MENTION] name' pero en el script lo tengo junto.
#1
Javi4315♪ 13374
Claro, el return de "@nick name" te devuelve al gosub que te mandó allí, por eso se ejecuta esa parte. Lo que tienes que hacer es cambiar el return por un goto/call para mandar a otro sitio, creo que es lo más fácil.
#2
DannyDirnt 28229
Iniciado por Javi4315♪
Claro, el return de "@nick name" te devuelve al gosub que te mandó allí, por eso se ejecuta esa parte. Lo que tienes que hacer es cambiar el return por un goto/call para mandar a otro sitio, creo que es lo más fácil.


Y cómo tendría que hacer eso? Es que aprendí a hacer scripts ayer, así que no se usar call muy bien. Después de calmbiar gosub por goto qué cambio tendría que hacer? Dónde y cómo pongo el call?
#3
Javi4315♪ 13374
Sí, mira, tú has puesto esto:

#org @Nick name
special 0x9E
return


Como te he dicho, ese return vuelve hacia atrás. Entonces, puedes quitar ese return y seguir directamente el script ahí, o poner un goto/call a otro pointer. Funciona así:

goto @(pointer)

Es sencillo, aunque si no tienes experiencia con los scripts, quizás cueste un poco.
#4
DannyDirnt 28229
Iniciado por Javi4315♪
Sí, mira, tú has puesto esto:



Como te he dicho, ese return vuelve hacia atrás. Entonces, puedes quitar ese return y seguir directamente el script ahí, o poner un goto/call a otro pointer. Funciona así:

goto @(pointer)

Es sencillo, aunque si no tienes experiencia con los scripts, quizás cueste un poco.


Es que lo que no sé hacer es poner el call. O sea, eso quedaría así?

#org [MENTION=24618]Nick[/MENTION]name
special 0x9E
goto @talk2

Y el call dónde y cómo lo pongo? Es que el call creo que se pone callxoffset y no se que offset poner ahi, ni donde poner el call. Digamos que no entiendo cómo se conectan el goto y el call.
#5
Javi4315♪ 13374
Iniciado por DannyDirnt
Es que lo que no sé hacer es poner el call. O sea, eso quedaría así?

#org [MENTION=24618]Nick[/MENTION]name
special 0x9E
goto @talk2

Y el call dónde y cómo lo pongo? Es que el call creo que se pone callxoffset y no se que offset poner ahi, ni donde poner el call. Digamos que no entiendo cómo se conectan el goto y el call.


Vamos a ver. El call y el goto son comandos distintos, pero que funcionan prácticamente igual, por eso digo que puedes usar el que quieras de los dos. Pero es que me estás liando, si quieres que se vea el msgbox @talk2, entonces deja el return ¿No?
#6
DannyDirnt 28229
Iniciado por Javi4315♪
Vamos a ver. El call y el goto son comandos distintos, pero que funcionan prácticamente igual, por eso digo que puedes usar el que quieras de los dos. Pero es que me estás liando, si quieres que se vea el msgbox @talk2, entonces deja el return ¿No?


Es que tal y como está debería funcionar, con el gosub y el return. De hecho en otro script que había usado como prueba sí que funcionaba perfectamente.


#7
Tito Sayer301 26309
bueno, yo basandome en tu script inicial, no en el ultimo que has puesto he dado con lo que creo que es la clave.



Se ve claramente el XXXXXXX en rojo no?
Pues hay dos opciones, como no lo tengo muy claro del todo tendrás que probar a ver con cual te funciona.

Prueba a sustituir el XXXXX por uno de estos dos comandos:

-Closeonkeypress

-Nop

Prueba uno y luego otro, no los dos juntos ehh. De todas formas tienes muy raro lo del mote, creo que como lo haces, al abrir la pantalla del mote ¿no te sale la imagen del pokemon no?
#8
DannyDirnt 28229
Iniciado por Sayer Conflow!
bueno, yo basandome en tu script inicial, no en el ultimo que has puesto he dado con lo que creo que es la clave.

[...]


Pues ninguno de los dos comandos me ha funcionado =/ no cambia nada en el juego. Si le digo que sí a ponerle mote, cuando salgo de la pantalla de mote el mini de la madre se queda parado mirando al jugador hasta que le doy a la A y entonces se aplica el applymovement y vuelve a moverse a donde estaba al principio del script. Pero sin decir el segundo texto...

Respecto a tu pregunta, sí, en la pantalla del mote me sale la imagen del Pokémon.
#9
cosarara97 12296
Necesitas un waitspecial.
PD: Para otra vez, la mejor fuente siempre son los scripts originales, en este caso los del laboratorio en el ROM de FR:

#org 0x1a74eb
fadescreen 0x1
special 0x9e
waitspecial
return
#10
Cheve_X 15014
Puedes usar un waitspecial como dice cosarara o un waitstate también deberia funcionar :) Es que sino la Rom sige ejecutandose en vez de esperar a que le des el nickname de tu pokémon ;)
#11
DannyDirnt 28229
Con el waitspecial el XSE 1.1.1 me dice 'Palabra clave desconocida "waitspecial" en la linea 39'... El waitstate me lo reconoce pero no funciona T_T
#12
cosarara97 12296
No se como se llama en xse, puedes usar "#raw 0x27"
#13
Cheve_X 15014
Se llama waitstate ._. xD

Y pues si no es eso no me doy cuenta de qué es :C
#14
cosarara97 12296
Prueba a añadir un closemsg (que no se si se llama así en xse, es el 0x68) después del waitstate. Es lo que hace el script del profesor con un salto en medio.