Diciembre 04, 2010, 05:47:35 PM Ultima modificación: Diciembre 29, 2010, 07:42:52 PM por georgenda
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
7R@VIS L@NDON B@RKER

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
7R@VIS L@NDON B@RKER

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  ???
7R@VIS L@NDON B@RKER

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.
-Crear juegos no es un m?todo de quemar tiempo, es una forma de arte.
-Se busca buen programador de IA's.

Si eres nuevo con el Game Maker, te recomiendo que mires este tema:
http://www.comunidadgm.org/index.php?topic=13388.0

Ok gracias!, voy a probarlo ahora mismo :D
7R@VIS L@NDON B@RKER

?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
7R@VIS L@NDON B@RKER

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
7R@VIS L@NDON B@RKER

#10 Diciembre 06, 2010, 03:52:19 AM Ultima modificación: Diciembre 06, 2010, 04:08:37 AM por Hackware
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
       

#11 Diciembre 06, 2010, 02:19:02 PM Ultima modificación: Diciembre 06, 2010, 02:21:27 PM por georgenda
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
7R@VIS L@NDON B@RKER

#12 Diciembre 08, 2010, 07:09:30 PM Ultima modificación: Diciembre 08, 2010, 07:11:18 PM por Hackware
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)
       

#13 Diciembre 11, 2010, 07:55:05 PM Ultima modificación: Diciembre 14, 2010, 01:52:11 AM por Topet
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

7R@VIS L@NDON B@RKER

Ah? tienes. Si te surge alguna duda sobre el funcionamiento del engine no dudes en preguntar.