#15 Febrero 26, 2014, 09:02:01 PM Ultima modificación: Febrero 26, 2014, 09:28:18 PM por Jangse
Cita de: penumbra en Febrero 26, 2014, 08:56:08 PM

Por eso si usas alarmas en STEP deben de ir dentro de alguna condición, para que el STEP no las "arranque" paso a paso.

¿Pues por que no se me ejecuta si yo la tengo dentro de esta condición?:

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
    obj_heroe.x = 1024; obj_heroe.y = 832;
    alarm[0] = 30 * 5;
}


Luego, en el evento Alarm 0, tengo puesto unas líneas de código. Pero jamás se me ejecutan...

Alarm 0:

sleep(3000);
sound_play(nuestrosonido);
instance_destroy();



CÓDIGO QUE FUNCIONA:

Este código realiza de forma aproximada lo que quiero hacer. Pero me gustaría testearlo con alarmas. Es la función que me paso Killer:

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA
{
    obj_heroe.x = 1024; obj_heroe.y = 832;
    screen_redraw(); // función de Killer
    sleep (3000);
    sound_play(snd_abre_reja);
    instance_destroy();
}

#16 Febrero 26, 2014, 09:31:31 PM Ultima modificación: Febrero 26, 2014, 09:40:05 PM por vampy09
if (instance_number(obj_Enemigo_A) == 0) and room == PLAY

Step1:
El GM revisa el If y si es verdadero va ha realizar lo que esta dentro del bloque

Siguiente Step:
El GM revisa el If y si es verdadero va ha realizar lo que esta dentro del bloque

Siguiente Step:
El GM revisa el If y si es verdadero va ha realizar lo que esta dentro del bloque

Siguiente Step:
El GM revisa el if ....

Osea que lo que esta dentro del bloque:

   {
    obj_heroe.x = 1024; obj_heroe.y = 832;
    alarm[0] = 30 * 5;
    }

... si va ejecutar en todos los STEPs, mientras que la condicion del IF sea verdadera produciendo bug, por ejenplo que tu personaje no se pueda mover.

Yo en mi ejemplo agregue una nueva variable para que lo que esta dentro del bloque se realice solo la primera vez que el IF sea verdadero:

Cita de: vampy09 en Febrero 25, 2014, 10:15:29 PM
1) Crea una nueva variable llamala global.level_finish = 0;
2) Evento Step

if (instance_number(obj_Enemigo_A) == 0) and room == PLAYA)
{
   global.level_finish = 1;
}

if ( global.level_finish = 1 )
{
    obj_heroe.x = 1024; obj_heroe.y = 832;
    global.level_ finish = 0 //volver esta variable a 0 evita que en el      siguiente step se ejecute este bloque.
    alarm[0] = 30;
}

3) Alarm[0]
sound_play(snd_abre_reja);
instance_destroy();

Pero reconozco que no es la forma mas "elegante" pero si para que comprendas que es lo que esta sucediendo.
The next best thing to knowing something,
is knowing where to find it.

Acabo de probar tú código pero no funciona, vampy. El personaje es transportado hacia la puerta, pero al moverse se paraliza. Pero los enemigos siguen su camino. De momento lo que ha funcionado es el código que he puesto subrayado mas arriba. Pero quiero entender bien este tema. De todas formas gracias por los aportes, eh...