qna_rh
Thread Id: 29068
Thread Name: [Duda Script] Problema con msgbox y fanfare
#0
Friki_nls 28766
Hola y muy buenas a todos.
He estado buscando por el foro pero no encuentro nada que me ayude a entender donde es el fallo de mi script.

Aquí os dejo la única parte que falla:

#org @combate4
trainerbattle 0x3 0x011 0x0 @fraseperder
setflag 0x217 'Numero de medalla ganadas
goto @ganar

#org @ganar
fanfare 0x13E
msgbox @obtenermedalla 0x6
setflag 0x820 'FLAG MEDALLA
waitfanfare
waitmsg
msgbox @explicamedallaymt 0x6 'Escribir que ventajas otorga la medalla y frase antes de regalar la MT
giveitem 0x147 0x1 0x0
msgbox @MT 0x6'Explicación de la MT
release
end

Esta parte consiste en que, nada más acabado el combate, suene un fanfare (de cinco segundos por si os interesa) mientras el msgbox se mantiene en pantalla.
El problema es que mientras suena, si presionamos "A" o "B" el mensaje se cierra, el personaje sigue bloqueado y hasta que no acaba el fanfare el script no continua.
Mi intención es que ese msgbox quede abierto y no pueda cerrarse hasta que el fanfare acabe.

Aquí dejo el Script completo por si el fallo no se debe a la falta de un comando que no conozco si no de otra parte del script.


Muchas gracias y espero que me podáis ayudar.
#1
Cheve_X 15014
Puedes hacer dos cosas, de las cuales te voy a recomendar intentes la segunda:

1º Opción: Luego del Msgbox y del fanfare, pones un Pause 0xYY, donde YY es el valor del Delay (32 en Decimal, 20 en Hex, es el equivalente a un segundo)

2º Opción: Cambias el tipo de Msgbox a 0x4, y luego del "waitfanfare", que está excelentemente usado, pones un "closeonkeypress", que será lo que te cierre el msgbox 0x4
#2
Friki_nls 28766
Iniciado por Cheve_X
Puedes hacer dos cosas, de las cuales te voy a recomendar intentes la segunda:

1º Opción: Luego del Msgbox y del fanfare, pones un Pause 0xYY, donde YY es el valor del Delay (32 en Decimal, 20 en Hex, es el equivalente a un segundo)

2º Opción: Cambias el tipo de Msgbox a 0x4, y luego del "waitfanfare", que está excelentemente usado, pones un "closeonkeypress", que será lo que te cierre el msgbox 0x4


La primera opción la pensé nada más ver el fallo y la probé, pero solo creaba una espera mayor entre cuando paraba el fanfare y hasta el próximo texto, no solucionaba el poder cerrar el que debía mantenerse en el fanfare.

La segunda opción ha sido la perfecta, pero no me ha hecho falta el "closeonkeypress", he mantenido el "waitmsg" y cambiando el tipo de msgbox ha sido suficiente (¿para que se usa el 04 exactamente?).

Y otra preguntita, así de gratis:

¿Hasta cuantos msgbox puedo meter dentro del trainerbattle cuando pierde?
Me refiero, ¿Podría meter esa parte del msgbox y el fanfare durante la derrota del enemigo, cuando sale su sprite y el de mi pokemon?

Se que con Brock en rojo fuego lo hacen, pero no lo mantienen en los siguientes líderes... no he sido capaz de entender como lo hacen.
#3
Cheve_X 15014
El tipo 0x4 de Msbgox es el que queda abierto hasta que lo cierras con un Waitmsg (No se me había ocurrido) o con el closeonkeypress

Y sobre la pregunta gratis (? te refieres a hacer un script cuando pierdes ¿No? si es eso, se hace cambiando el tipo de TrainerBattle, si sabes Inglés el archivo de ayuda del XSE tiene toda la información que necesitas. :)

Editado: Aquí encontré un post viejo en el que traduje una parte de lo que dice XSE

http://wahackforo.com/218574-post2.html
#4
Friki_nls 28766
Iniciado por Cheve_X
El tipo 0x4 de Msbgox es el que queda abierto hasta que lo cierras con un Waitmsg (No se me había ocurrido) o con el closeonkeypress

Y sobre la pregunta gratis (? te refieres a hacer un script cuando pierdes ¿No? si es eso, se hace cambiando el tipo de TrainerBattle, si sabes Inglés el archivo de ayuda del XSE tiene toda la información que necesitas. :)


Me refiero a otra cosa...

Te explico:
Cuando te enfrentas a Brock en RF al acabar el combate, después de la frase típica de derrota, continua hablando, aparece un mensaje con un fanfare (que hasta que no acaba el fanfare no puedes quitar el mensaje) y después continua, y el último mensaje es el money que ganas.

Entonces, probando he visto que al final del comando "trainerbattle" no se puede añadir tantos msgbox como parecen y mucho menos un fanfare lo que quiere decir que los inserta dentro del msgbox de la derrota, ¿no?

No soy muy bueno analizando scripts y creo que es la razón por la que no lo saco del script original de Brock.

Aquí te dejo un vídeo de youtube donde aparece lo que yo te digo:


#5
Cheve_X 15014
Iniciado por Friki_nls
Me refiero a otra cosa...

Te explico:
Cuando te enfrentas a Brock en RF al acabar el combate, después de la frase típica de derrota, continua hablando, aparece un mensaje con un fanfare (que hasta que no acaba el fanfare no puedes quitar el mensaje) y después continua, y el último mensaje es el money que ganas.

Entonces, probando he visto que al final del comando "trainerbattle" no se puede añadir tantos msgbox como parecen y mucho menos un fanfare lo que quiere decir que los inserta dentro del msgbox de la derrota, ¿no?

No soy muy bueno analizando scripts y creo que es la razón por la que no lo saco del script original de Brock.

Aquí te dejo un vídeo de youtube donde aparece lo que yo te digo:




¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥



Bueno! Mientras lo traducía me reía, ya que dice exactamente lo que tu preguntas xDD
La lista a la que se refiere, es la de las Songs, que seguro que por aquí anda alguna, y si no puedes buscar la que tu queras con Sappy :)
#6
Friki_nls 28766
Iniciado por Cheve_X
¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥



Bueno! Mientras lo traducía me reía, ya que dice exactamente lo que tu preguntas xDD
La lista a la que se refiere, es la de las Songs, que seguro que por aquí anda alguna, y si no puedes buscar la que tu queras con Sappy :)


¡OH DIOS MÍO!
Me tiré horas buscando algo parecido y creía estar loco... imaginaba que era ese codigo ya que era lo único en el script de Brock que tenía sentido pero no sabía usarlo y ¡bualah!

Muchisisisisisísimas gracias.
#7
Friki_nls 28766
Iniciado por Cheve_X
¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥



Bueno! Mientras lo traducía me reía, ya que dice exactamente lo que tu preguntas xDD
La lista a la que se refiere, es la de las Songs, que seguro que por aquí anda alguna, y si no puedes buscar la que tu queras con Sappy :)


He probado el código y funciona exactamente como dice la teoría: reproduce el sound elegido pero ni para la musiquita del final del combate para dejar que suene solo la que quieres, y tampoco hace como el "waitfanfare + waitmsgbox", que hasta que no acaba tu musiquita no puedes pasar el mensaje...

En conclusión: las dos melodías se traspapelan y el mensaje puede pasarse, no se mantiene durante el fanfare (y si se quita, el fanfare también se va).

¿Como puedo solucionarlo? Estoy mirando y haciendo pruebas con el código de Brock, si veo que saco algo, edito el post...

EDITO:

Vale, este es el mensaje con el correspondiente fanfare y pausa de musica de fondo además del bloqueo de mensaje del script de Brock:
\c\h06Á¡[player] obtuvo la MEDALLA ROCA!\c\h17\c\h0BÇÀ\c\h08\n\c\h08[Ke]\c\h18\p\c\h06Ç

Lo he separado en colorines para que sea más agradable a la vista y diferenciar mejor los códigos. Voy a ir probando a ver que tal...

Voy a ir poniendo lo que parece que hace cada cosa según las pruebas que estoy haciendo:
\c\h17 >>> Para la música de fondo (Aunque realmente creo que la silencia, o sea, que sigue en reproducción pero no se escucha).
\c\h0BÇÀ >>> Hace sonar el fanfare
\c\h08\n >>> Equivale a un "pause" (de mas menos 5 segundos) provocando que el mensaje se espere hasta el final del fanfare para continuar el texto.(si pones uno más largo, continuara el fanfare y podrás seguir con el texto, y si es más corto tendrás que esperarte) Sin el "\n", la próxima línea aparece automáticamente encima de la que se esta mostrando con el fanfare.
\c\h18 >>> Hace volver a sonar la musiquita de fondo (pero creo que lo hace , no desde el punto en el que lo ha dejado sino, como si hubiera seguido en reproducción pero silenciada).

Entonces todo el resto del código creo que sirve para ajustar lo que \c\h17 y \c\h18 hacen.



Conclusión: El codigo final sería el siguiente.
TEXTOANTERIOR\p\c\h06ÁTEXTOFANFARE\c\h17\c\h10\hXX\hYY\c\h08\n\c\h08[Ke]\c\h18\p\c\h06ÇTEXTOSIGUIENTE


Y se sustituye de la siguiente forma:
TEXTOANTERIOR >>> Lo que vaya antes, como "¡Toma tu medalla!"
TEXTOFANFARE >>> El texto que se muestra durante el fanfare "¡Obtuviste tal medalla!"
TEXTOSIGUIENTE >>> El texto que va después del fanfare "¡Esta medalla hace tal tal tal..."
XX & YY >>> Si el fanfare que vas a poner es (0)104 (hexadecimal), lo separáis en dos cachos: 01 y 04, y se sustituyen las YY por los dos primeros y las XX por los dos últimos.

Lo último que falta averiguar es como editar el tiempo de pausa del \c\h08\n para hacerlo más largo o corto según la necesidad de cada uno (aunque uno muy largo puede cansar al jugador).