Buenas,
Tengo un problema con el timer[0]. Estoy intentando hacer que al morir el protagonista, se congele el scroll y al cabo de 2 segundos renazca el protagonista al principio del scroll y éste se reinicie de nuevo. Este es el código:
PROCESS Main()
Private
int idstrack;
END
BEGIN
...
LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
IF(timer[0]>=200)
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
protagonista();
END
END
FRAME;
END
END
//El idstrack es el identificador del proceso que sigue el scroll.
Para comprobar que pasaba, he hecho que escriba en pantalla el valor de timer[0] y al morir el prota, efectivamente se pone a 0 pero no se "reinicia", se queda a 0. Repasando el manual pone que el proceso timer se inicia al ejecutar el programa, pero no entiendo porque no se reinicia cuando le das valor 0... Puede que sea algo relacionado con el FRAME?
En el código que veis, al morir el prota solo para el scroll.
Quote from: MANUALUn temporizador es un cronómetro programable accesible en todo momento. Bennu dispone de 10 temporizadores accesibles a través de una tabla de variables globales enteras llamadas TIMER (desde timer[0] a timer[9]), siempre y cuando se importe el módulo "mod_timers". Estos temporizadores siempre se inicializan automáticamente al comenzar el programa al valor 0 y se incrementan automáticamente 100 veces por segundo. En cualquier momento puede cambiarse el valor de uno de ellos, por ejemplo inicializándolo de nuevo a 0, para controlar una cantidad de tiempo concreta.
PROCESS Main()
Private
int idstrack;
END
BEGIN
...
LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
loop
IF(timer[0]>=200)
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
protagonista();
break;
END
frame;
end
END
FRAME;
END
END
O bien,
PROCESS Main()
Private
int idstrack;
END
BEGIN
...
LOOP
IF(exists(type protagonista)==0)
signal(idstrack,S_FREEZE);
timer[0]=0;
while(timer[0]<200)
frame;
END
idstrack.x=scroll[0].x0;
signal(idstrack,S_WAKEUP);
protagonista();
END
FRAME;
END
END
Tu código no hacía lo que querías, porque al morir el prota, exist (type protagonista) siempre es 0 y siempre vuelves a setear el timer a 0, por lo tanto siempre va a valer 0 y nunca valdrá 201 para entrar a crearlo.
Ahora funciona ok. Bueno, almenos esta vez me he acercado un poco mas.
Gracias!
DIOSSSSSSSS, SPOILERSSSSSSSSS
Quote from: laghengar on November 29, 2010, 09:45:00 PM
DIOSSSSSSSS, SPOILERSSSSSSSSS
Dado el argumento actual de mi juego, sí, es el spoiler mas grande que he dado jaja.
por?