Registrarse

[Duda Script] Problema con msgbox y fanfare

Estado
Cerrado para nuevas respuestas.
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:

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

#org @ganar
[B]fanfare 0x13E
msgbox @obtenermedalla 0x6
setflag 0x820 'FLAG MEDALLA
waitfanfare
waitmsg[/B]
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.
Código:
#dynamic 0x800000

#org @inicio
checkflag 0x820  'FLAG MEDALLA
if 0x1 goto @frasemini
lock
faceplayer
msgbox @antes 0x6
msgbox @antes2 0x5
compare LASTRESULT 0x1
if 0x0 goto @NO
msgbox @antesSI 0x6
checkflag 0x216 'NUMERO DE MEDALLAS 6>7
if 0x1 goto @combate4
checkflag 0x215 'NUMERO DE MEDALLAS 5>6
if 0x1 goto @combate3
checkflag 0x214 'NUMERO DE MEDALLAS 4>5
if 0x1 goto @combate2 
goto @combate1 'NUMERO DE MEDALLAS 0>1

#org @NO
msgbox @antesNO 0x6
release
end

#org @combate1
trainerbattle 0x3 0x00F 0x0 @fraseperder
setflag 0x211 'Numero de medalla ganadas
goto @ganar

#org @combate2
trainerbattle 0x3 0x010 0x0 @fraseperder
setflag 0x215 'Numero de medalla ganadas
goto @ganar

#org @combate3
trainerbattle 0x3 0x010 0x0 @fraseperder
setflag 0x216 'Numero de medalla ganadas
goto @ganar

#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

#org @frasemini
msgbox @frasefinal 0x6
release
end

#org @antes 'Frase antes de luchar, explicando quien es el líder
= ¡Bienvenido joven entrenador!\p¡Mi nombre es FLINT y soy el\nLÍDER del GIMNASIO de PLATEADA!\p¡Mi pasión son las rocas!\p¡Son resistentes y duras además\nde majestuosas y perpetuas!\p¡Por eso, todos mis POKéMON son de\ntipo ROCA!

#org @antes2
= ¿Aún crees que podrás vencer al\nmayor experto en tipo ROCA?

#org @antesNO
= ¿Ahora te echas atrás?\n¡Que blando eres!

#org @antesSI
= ¡Pues veamos quién es más duro!

#org @fraseperder 'Tambien debe otrogarse la medalla en cuestión
= ¡Que firmeza!¡Que fuerza!\p¡Aquí tienes la MEDALLA ROCA que\ndemuestra lo duro que eres!

#org @obtenermedalla
= ¡[player] obtuvo la MEDALLA ROCA!

#org @explicamedallaymt 'Escribir que ventajas otorga la medalla y frase antes de regalar la MT
= ¡Con la MEDALLA ROCA encima la\nfuerza de tus POKéMON aumentará!\p¡Y se te permitirá usar DESTELLO\nfuera de combate!\p¡Y por tu gran combate,\nacepta esta MT como regalo!

#org @MT
= ¡La MT incluye un ataque que\npuede ser enseñado a los POKéMON!\p¡Pero sólo puedes usarla una vez!\p¡Así que elige con cuidado a qué\nPOKéMON se la enseñas!\p¡La MT39 contiene TUMBA ROCAS!\p¡Podrás lanzar rocas al rival\ny bajar su VELOCIDAD!

#org @frasefinal 'Frase una vez acabado el combate y dado los objetos
= Con tantos ENTRENADORES POKéMON\nviajando por el mundo y teniendo\laventuras impresionantes con su\lequipo POKéMON a veces me pregunto\lsi ser LÍDER es realmente lo mío.

Muchas gracias y espero que me podáis ayudar.
 

Cheve

MoonLover~
Miembro de honor
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
 
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.
 

Cheve

MoonLover~
Miembro de honor
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://whackahack.com/foro/218574-post2.html
 
Última edición:
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:


El final del combate y la parte que yo te digo aparece en el minuto 10 y 9 segundos
 

Cheve

MoonLover~
Miembro de honor
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:


El final del combate y la parte que yo te digo aparece en el minuto 10 y 9 segundos

¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥

Reproduciendo música mientras mostramos mensajes:

¿Te haz preguntado como en los scripts de los Líderes de Gimnasio, cuando muestran algo como "[player] received BADGE." aparece el sonido de la victoria desde ninguna parte?
Bueno, hay dos maneras de hacerlo, y una de ellas es con el uso de éste código:

\c\h10\hXX\hYY

Tocar la canción YX

En la lista de canciones de Advance Map, ves que tienen sus valores en HEX algo como 01XX, por ejemplo en Fire Red empieza en 0100 y termina en 015A pero no significa que no existan otros valores que contengan sonidos. Puedes buscar en la sección del Aprendiz para entender mejor ésto. Pero el punto es dar vuelta los valores para reproducir la canción. Queremos reproducir la canción de Jigglypuff en FireRed que tiene el valor 0x114, entonces ponemos ésto en X e Y para el código, quedándonos \c\h10\h14\h01. El script ;)

#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= \c\h10\h14\h01Jigglypuff Song played!

En éste script, tan pronto como se muestre el mensaje, la cancion empezará a sonar. Por supuesto puedes elejir cuando quieres que suene la musica, como en el script de abajo, donde la canción de Jigglypuff empieza luego de la 1er y 2da linea fueron mostradas, ya que el prefijo se añadió a la 3era.


#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= First Line is now being displayed\nNow, ...Second Line\l\c\h10\h14\h01Third Line, here's the song!

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 :)
 
¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥

Reproduciendo música mientras mostramos mensajes:

¿Te haz preguntado como en los scripts de los Líderes de Gimnasio, cuando muestran algo como "[player] received BADGE." aparece el sonido de la victoria desde ninguna parte?
Bueno, hay dos maneras de hacerlo, y una de ellas es con el uso de éste código:

\c\h10\hXX\hYY

Tocar la canción YX

En la lista de canciones de Advance Map, ves que tienen sus valores en HEX algo como 01XX, por ejemplo en Fire Red empieza en 0100 y termina en 015A pero no significa que no existan otros valores que contengan sonidos. Puedes buscar en la sección del Aprendiz para entender mejor ésto. Pero el punto es dar vuelta los valores para reproducir la canción. Queremos reproducir la canción de Jigglypuff en FireRed que tiene el valor 0x114, entonces ponemos ésto en X e Y para el código, quedándonos \c\h10\h14\h01. El script ;)

#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= \c\h10\h14\h01Jigglypuff Song played!

En éste script, tan pronto como se muestre el mensaje, la cancion empezará a sonar. Por supuesto puedes elejir cuando quieres que suene la musica, como en el script de abajo, donde la canción de Jigglypuff empieza luego de la 1er y 2da linea fueron mostradas, ya que el prefijo se añadió a la 3era.


#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= First Line is now being displayed\nNow, ...Second Line\l\c\h10\h14\h01Third Line, here's the song!

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.
 
Última edición:
¡¡¡¡¡AAAAAAAAHHHH!!!!!

:3 Ya entendí jejeje

Otra vez, XSE tiene la solucion ♥

Reproduciendo música mientras mostramos mensajes:

¿Te haz preguntado como en los scripts de los Líderes de Gimnasio, cuando muestran algo como "[player] received BADGE." aparece el sonido de la victoria desde ninguna parte?
Bueno, hay dos maneras de hacerlo, y una de ellas es con el uso de éste código:

\c\h10\hXX\hYY

Tocar la canción YX

En la lista de canciones de Advance Map, ves que tienen sus valores en HEX algo como 01XX, por ejemplo en Fire Red empieza en 0100 y termina en 015A pero no significa que no existan otros valores que contengan sonidos. Puedes buscar en la sección del Aprendiz para entender mejor ésto. Pero el punto es dar vuelta los valores para reproducir la canción. Queremos reproducir la canción de Jigglypuff en FireRed que tiene el valor 0x114, entonces ponemos ésto en X e Y para el código, quedándonos \c\h10\h14\h01. El script ;)

#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= \c\h10\h14\h01Jigglypuff Song played!

En éste script, tan pronto como se muestre el mensaje, la cancion empezará a sonar. Por supuesto puedes elejir cuando quieres que suene la musica, como en el script de abajo, donde la canción de Jigglypuff empieza luego de la 1er y 2da linea fueron mostradas, ya que el prefijo se añadió a la 3era.


#dynamic 0x800000

#org @start
msgbox @songmsg 0x2
end

#org @songmsg
= First Line is now being displayed\nNow, ...Second Line\l\c\h10\h14\h01Third Line, here's the song!

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).
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba