Mayo 09, 2017, 04:39:55 AM Ultima modificación: Mayo 11, 2017, 07:33:01 PM por Naitsabes0
Pues resulta que mi juego se guarda con un objeto que usa la función game_save ("guardar.sav") y otro objeto que carga la partida al presionar "P" con la función game_load ("guardar.sav").

El problema:

Cada vez que cargo la partida del juego la música deja de sonar, este vuelve a activarse cuando el jugador va a otra habitación.

El código:

obj_Musica
ROOM START
///Musica de fondo
//Menu
if room=romInicio {audio_sound_gain(snd_Garage,0.9,0); //portada Dura 2:08s
                   audio_play_sound(snd_Garage,0,1);}else
if room=romHistory {audio_sound_gain(snd_Jupiter_One,0.9,0); //historia Dura 2:27s
                   audio_play_sound(snd_Jupiter_One,0,1);}else
+100 lineas de códigos con la misma mecanica..........
if room=rom_Templo_Siniestro {audio_sound_gain(snd_Funky_Good_Time,0.7,1); // zona reto 3_3 Dura 1:47s
                   audio_play_sound(snd_Funky_Good_Time,0,1);}

ROOM END
audio_stop_all();

La verdad no me molestaría tener que cambiar esto, si es que conocen una mejor forma de armar un código para iniciar la música de la habitación cuando el jugador pierda y reinicie la partida.

Justo antes de guardar, activa una variable que indique que la música se debe reiniciar en el siguiente step, por ejemplo:
[gml]
global.reiniciar_musica = true;
[/gml]
En el evento Step del objeto música, revisa la variable y ejecuta el código del evento Room Start si es necesario:
[gml]
if( global.reiniciar_musica )
{
   event_perform( ev_other, ev_room_start );
   global.reiniciar_musica = false;
}
[/gml]

#2 Mayo 10, 2017, 01:51:09 AM Ultima modificación: Mayo 11, 2017, 07:32:43 PM por Naitsabes0
Cita de: Clamud en Mayo 09, 2017, 04:51:58 PM
Justo antes de guardar, activa una variable que indique que la música se debe reiniciar en el siguiente step, por ejemplo:
[gml]
global.reiniciar_musica = true;
[/gml]
En el evento Step del objeto música, revisa la variable y ejecuta el código del evento Room Start si es necesario:
[gml]
if( global.reiniciar_musica )
{
   event_perform( ev_other, ev_room_start );
   global.reiniciar_musica = false;
}
[/gml]
Lo he dejado de esta forma.

obj_Musica

CREATE:
global.reiniciar_musica = true;

STEP:
if( global.reiniciar_musica )
{
   event_perform( ev_other, ev_room_start );
   global.reiniciar_musica = false;
}

ROOM STAR:
///Musica de fondo
//Menu
if room=romInicio {audio_sound_gain(snd_Garage,0.9,0); //portada Dura 2:08s
                   audio_play_sound(snd_Garage,0,1);}else
if room=romHistory {audio_sound_gain(snd_Jupiter_One,0.9,0); //historia Dura 2:27s
                   audio_play_sound(snd_Jupiter_One,0,1);}else
.................100 códigos de la misma mecánica....................
if room=rom_Templo_Siniestro {audio_sound_gain(snd_Funky_Good_Time,0.7,1); // zona reto 3_3 Dura 1:47s
                   audio_play_sound(snd_Funky_Good_Time,0,1);}

ROOM END:
audio_stop_all();

Pero la verdad no ha habido ningún cambio en el juego, es decir que cada vez que le doy a cargar inicia sin sonido hasta que valla a otra habitación  :( ¿lo arme mal?  ???.