Hola, estimados foreros xD :
Mi problema esta vez va con la m?sica de nuevo: en mi juego, he hecho un men? en el que puedes elegir la canci?n de un grupo que quieres que suene mediante un objeto que he creado para que cada vez que clickes encima de ?l que suene esa canci?n; ejemplo: Al clickar en el objeto en que sale el t?tulo de la canci?n "All I want", que suene la canci?n "All I want".
Pues bien, la cosa que quiero conseguir es que despu?s de que se termine la canci?n que estaba sonando, que suene una aleatoriamente (y que no se repita la misma, claro est?) y que, cuando termine la canci?n que hab?a sonado de manera aleatoria, que suene otra aleatoriamente (y que no repita ninguna de las anteriores); y as? sucesivamente hasta que todas las canciones sean escuchadas, pero que si al jugador que est? jugando le apetece o?r otra canci?n, que pueda escoger otra mediante un click en el objeto de la canci?n que quiere y que despu?s de que acabe la canci?n que ha elegido, que suene otra aleatoriamente. Ejemplo: cuando acaba la canci?n "All I want", que suene aleatoriamente "War?" y que cuando "War?" acabe, que suene de manera aleatoria "Aliens exist"; pero como al jugador no le apetece escuchar "Aliens exist" sino que le apetece escuchar "Carousel", que cambie a "Carousel" mediante un click encima del objeto que tiene como t?tulo el nombre de la canci?n "Carousel", y que despu?s suene aleatoriamente la canci?n "My friends over you", y que despu?s suene aleatoriamente "I wanna be sedated", y que despu?s suene de manera aleatoria... as? hasta completarlas todas.
No s? si me he explicado bien, espero que lo entend?is. Si no lo entend?is, pod?is dejar un comentario en el que ponga que me explique mejor.
GRACIAS DE ANTEMANO, QUERIDOS FOREROS; SOIS UNOS CRACKERS! :DDDDDDDDDDDD
Una pregunta, si el jugador selecciona otra canci?n ?la que estaba sonando debe darse por reproducida o no? Es decir, ?la canci?n que se cort? debe pasar a la lista de las ya reproducidas o no?
Cita de: Hackware en Diciembre 04, 2010, 06:06:06 PM
Una pregunta, si el jugador selecciona otra canci?n ?la que estaba sonando debe darse por reproducida o no? Es decir, ?la canci?n que se cort? debe pasar a la lista de las ya reproducidas o no?
Exacto t?o, se tiene que dar ya por reproducida; por cierto, gracias por la otra respuesta, me ayud? a acabar mi otro juego! :D
Tambi?n cabe destacar que cuando le clickas a un bot?n de una canci?n, esa canci?n se repite cada vez que acaba, pero quiero que no se repita sino que se escuche otra de manera aleatoria ???
Pues mira, no se si funcione, de repente se me vino a la cabeza XD,
Para un objeto que controle todo o obj_controler mejor llamado:
Evento Create:
[gml]
cancion_sonando=random(0)-(9)
if cancion_sonando=0 then sound_play(sonido0)
if cancion_sonando=1 then sound_play(sonido1)
if cancion_sonando=2 then sound_play(sonido2)
if cancion_sonando=3 then sound_play(sonido3)[/gml]
y as? sucesivamente, pero no se como hacer para que despu?s de que termine una, suene otra XD,
me ingeniar? com,
mira si te funciona, pues el codigo no ha sido probado XD.
Ok gracias!, voy a probarlo ahora mismo :D
?Y qu? se supone que pase cuando todas las canciones ya hayan sido reproducidas? ???
Cita de: Hackware en Diciembre 05, 2010, 05:27:27 AM
?Y qu? se supone que pase cuando todas las canciones ya hayan sido reproducidas? ???
Pues que se acaba la m?scia; de todas formas, el juego tiene 24 canciones, as? que ser?n m?s que suficientes, porque en realidad es un minijuego xD
Crea una lista con las canciones, luego revu?lvela al azar. Conforme se vayan seleccionan las canciones ve removi?ndolas de la lista de reproducci?n autom?tica. Quedar?a as?:
Evento Create
[gml]jukebox=ds_list_create();
ds_list_add(jukebox,pistaA);
ds_list_add(jukebox,pistaB);
ds_list_add(jukebox,pistaC);
ds_list_add(jukebox,pistaD);
//y as? sucesivamente.
ds_list_shuffle(jukebox);
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistactual);
ds_list_delete(jukebox,0);[/gml]
Evento Step
[gml]if not sound_isplaying(pistaactual) and not ds_list_empty(jukebox);
{
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistactual);
ds_list_delete(jukebox,0);
}[/gml]
Tras seleccionar manualmente una canci?n (no importa el m?todo)
[gml]pistaactual= //canci?n seleccionada;
sound_play(pistaactual);
ds_list_delete(jukebox,ds_list_find_index(jukebox,pistaactual));[/gml]
Existe un peque?o inconveniente con este m?todo y es que elimina canciones s?lo con seleccionarlas (as? como lo pides XD), de este modo un jugador que desee escuchar el principio de todas las canciones se quedar?a sin la opci?n de autoreproducci?n r?pidamente. :P
?Saludos!
Cita de: Hackware en Diciembre 06, 2010, 12:59:50 AM
Crea una lista con las canciones, luego revu?lvela al azar. Conforme se vayan seleccionan las canciones ve removi?ndolas de la lista de reproducci?n autom?tica. Quedar?a as?:
Evento Create
[gml]jukebox=ds_list_create();
ds_list_add(jukebox,pistaA);
ds_list_add(jukebox,pistaB);
ds_list_add(jukebox,pistaC);
ds_list_add(jukebox,pistaD);
//y as? sucesivamente.
ds_list_shuffle(jukebox);
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistactual);
ds_list_delete(jukebox,0);[/gml]
Evento Step
[gml]if not sound_isplaying(pistaactual) and not ds_list_empty(jukebox);
{
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistactual);
ds_list_delete(jukebox,0);
}[/gml]
Tras seleccionar manualmente una canci?n (no importa el m?todo)
[gml]pistaactual= //canci?n seleccionada;
sound_play(pistaactual);
ds_list_delete(jukebox,ds_list_find_index(jukebox,pistaactual));[/gml]
Existe un peque?o inconveniente con este m?todo y es que elimina canciones s?lo con seleccionarlas (as? como lo pides XD), de este modo un jugador que desee escuchar el principio de todas las canciones se quedar?a sin la opci?n de autoreproducci?n r?pidamente. :P
?Saludos!
Me da error... y t?o, de todas formas no entiendo en qu? objeto dices que hay que crear los c?digos; pero da igual, ya te he molestado demasiado xD
GRACIAS MIL! :D
Crea un nuevo objeto para ello, pru?balo de nuevo y copia-pega el error que te da si vuelve a aparecer.
P.D. No hace falta que cites los mensajes inmeditamente anteriores. :P
ME DA ESTE ERROR: __________________________________________ ERROR in action number 1 of Step Event for object m?sica fondo:
Error in code at line 1: if not sound_isplaying(pistaactual) and not ds_list_empty(jukebox); ^ at position 24: Unknown variable pistaactual
|
Perdona, al parecer me equivoque en un par de cosiilas. Al final quedar?a as?:
Evento Create
[gml]jukebox=ds_list_create();
ds_list_add(jukebox,pistaA);
ds_list_add(jukebox,pistaB);
ds_list_add(jukebox,pistaC);
ds_list_add(jukebox,pistaD);
//y as? sucesivamente.
ds_list_shuffle(jukebox);
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistaactual);
ds_list_delete(jukebox,0);
alarm[0]=5;[/gml]
Evento Alarm 0
[gml]if not sound_isplaying(pistaactual) and not ds_list_empty(jukebox)
{
pistaactual=ds_list_find_value(jukebox,0);
sound_play(pistaactual);
ds_list_delete(jukebox,0);
}
alarm[0]=5;[/gml]
Tras seleccionar manualmente una canci?n (no importa el m?todo)
[gml]pistaactual= //canci?n seleccionada;
sound_play(pistaactual);
ds_list_delete(jukebox,ds_list_find_index(jukebox,pistaactual));
alarm[0]=5;[/gml]
Despu?s de corregir algunas variables me di cuenta de que el c?digo a?n ten?a un imperfecto (no un error). Seg?n el manual la funci?n sound_isplaying() puede devolver falso si se utiliza inmediatamente despu?s de comenzar a reproducir la pista, as? que fue necesario reemplazar el evento Step por un evento Alarm, como puedes apreciar.
El evento Alarm se comprueba cada 5 steps (una diferencia inapreciable para el jugador), pero si en tu PC a?n fallase puede probar aumentando ese margen a 6-15 steps. Si se te hace m?s c?modo puedes utilizar cualquier otra alarma, no necesariamente la 0.
Ya de paso de dejo un ejemplo y los sonidos que utilic?.
?Saludos! 8)
Por cierto, no tuvimos una cosa en cuenta: si el jugador selecciona una canci?n en el men? opciones, despu?s al volver al men? principal la canci?n deja de sonar y suena una aleatoria; quiero decir que cada vez que se vuelve al men? principal se interrumpe la canci?n que estaba sonando y se vuelve a activar el aleatorio, haciendo sonar otra canci?n.
?Ser?a posible que, al volver al men? principal, se esperara a que acabase la canci?n que sonaba antes de que vuelva a activar el aleatorio?
Y si pudieras explic?rmelo con un ejemplo hecho con game maker, me resultar?a muy ?til, pero eso ya lo decides t? xD
Por cierto, cada vez que selecciono una canci?n ocurre este error:
__________________________________________________________________
ERROR in
action number 1
of Mouse Event for Left Button
for object all i want:
Error in code at line 3:
ds_list_delete(jukebox,ds_list_find_index(jukebox,pistaactual));
^
at position 17: Unknown variable jukebox
Ah? tienes. Si te surge alguna duda sobre el funcionamiento del engine no dudes en preguntar.
Eres un rey, crack! :DDDDDDDDDDDDDDDDDDDDD
GRAC?SIMAS! XD
Con gusto. Solo que la pr?xima vez intenta tener m?s paciencia; env?ame varios MPs si quieres, pero no respondas varias veces seguidas; modifica tu respuesta en vez de crear una nueva, para ello debes usar este bot?n:
(http://www.comunidadgm.org/index.php?action=dlattach;topic=13401.0;attach=7101;image)
?Saludos! ;)
Sigue sin solucionarse... :(
?Alguien puede ayudarme?