Page 2 of 2

Re: MINERMON

Posted: Sun Aug 02, 2009 9:29 am
by CicTec
Ok, pues veo algun error por aqui:

Code: Select all

unload_wav(sonido_parado);
sonido_parado=load_wav("C:\archivosminer\parado.wav",0);
canal_3=sound(sonido_parado,256,256);
son_estrella=load_wav("C:\archivosminer\estrella.wav",0);
unload_wav(canal_3);
en primer lugar veo que UNLOAD_WAV(canal_3) esta mal, deberia ser UNLOAD_WAV(son_estrella) quizas, porque con ese error canal_3 seguramente tendra lo mismo ID asignado da LOAD_WAV a sonido_parado, descargandote ese sonido y no son_estrella.

Por segundo, UNLOAD_XXX no es buena forma usarlo sin una condicion anterior asi como STOP_XXX, la forma para no liarte nunca con el audio es poner todas las variables que hacen da ID a -1 por default por ejemplo:

Code: Select all

global
id_sonido;
id_canal;

begin
id_sonido = load_sound(.....);
id_canal = play_sound(id_sonido, ......);

if(id_canal != -1)
  stop_sound(id_canal);
  id_canal = -1;
end
if(id_sonido != -1)
  unload_sound(id_sonido);
  id_sonido = -1;
end
de esa forma si un sonido no se reproduce, simplemente averiguas si tiene un ID correcto asignado

Re: MINERMON

Posted: Sun Aug 02, 2009 2:37 pm
by Spiderman
Ummm... pero aqui lo que yo pretendo es que suene un efecto sonoro cuando cogemos una estrella negra

Code: Select all

unload_wav(sonido_parado);
sonido_parado=load_wav("C:\archivosminer\parado.wav",0);
canal_3=sound(sonido_parado,256,256);
y luego una vez que ha sonado este efecto vuelvo a cargar el efecto sonoro para cuando cogemos una estrella normal y descargo lo que habia metido en el canal_3, que era el efecto de la estrella negra

Code: Select all

son_estrella=load_wav("C:\archivosminer\estrella.wav",0);
unload_wav(canal_3);

Re: MINERMON

Posted: Sun Aug 02, 2009 2:46 pm
by CicTec
Si pero repito si tienes ese codigo:

Code: Select all

unload_wav(sonido_parado);
sonido_parado=load_wav("C:\archivosminer\parado.wav",0);
canal_3=sound(sonido_parado,256,256);
son_estrella=load_wav("C:\archivosminer\estrella.wav",0);
unload_wav(canal_3);
tal cual, esta mal, porque pasas a UNLOAD_WAV la variable canal_3 pero eso no es un ID de un WAV, sino de un canal...

Como tienes este codigo, si el primero load_wav asigna a sonido_parado el valor 0, y la funcion sound asigna el canal 0 a canal_3, pasando el ultimo load_wave te descarga el fichero parado.wav si es lo que buscas podria funcionar a veces, pero si hay otros sonidos en ejecucion y a canal_3 se asigna el canal 1, el unload_wav final te descarga estrella.wav, como ves hay algo malo.

Re: MINERMON

Posted: Sun Aug 02, 2009 2:48 pm
by Spiderman
Si, si. Ahora lo entiendo. :blind:

Re: MINERMON

Posted: Sun Aug 02, 2009 2:54 pm
by CicTec
jeje, aparte que no se bien porque lo has programado asi, si tienes pocos efectos de sonidos, mejor cargarlos una vez al principio del nivel, cargar y descargar a menudo baja el rendimiento del juego mismo.

Re: MINERMON

Posted: Sun Aug 02, 2009 4:39 pm
by Spiderman
Pues vete a saber porque lo hice así. :P Creo recordar que a mi el Div me daba problemas con la tarjeta de sonido y por eso tenía que hacer cosas raras. Alguna línea de código si que me podía haber ahorrado.