Цитата: снова запускаю через какое-либо время с помощью функции enabletimer , то время таймера начнет отсчет заново или с той миллисекунды, на которой таймер остановился?
Заново.
Для примера. Каждые 5 секунд переменная x увеличивается на 1, при нажатии клавиши z таймер останавливается, при повторном нажатии z продолжает работу, с того момента когда был остановлен.
CODE:int Cooldown = 5000; // время срабатывания таймера
int Timer = gettime() + Cooldown;
int TimerLast = 0;
int TimerLastFlag = 0;
int TimerStop = 0;
int x = 0;
enabletimer(0);
loop()
{
if(getkeystate(90)) // если нажата клавиша Z
{
while(getkeystate(90))sleep(10); // ждать пока нажата клавиша Z
if(TimerStop==0)TimerStop = 1; // таймер не остановлен
else TimerStop = 0;
}
textout(0, 200, 60, "x = " + format(x), 1);
sleep(100);
}
CREATE_TIMER(0, 30)
{
if(TimerStop != 0) // если таймер остановлен
{
if(TimerLastFlag == 0) // если время остановки таймера ещё не записано
{
TimerLastFlag = 1;
TimerLast = Timer - gettime(); // записать время остановки таймера
}
return;
}
else // таймер работает
{
if(TimerLastFlag == 1) // если время остановки было записано
{
TimerLastFlag = 0; // время не записано
Timer = gettime() + TimerLast; // установить время срабатывания таймера
}
}
textout(1, 200, 80, format(Timer - gettime()), 1);
if(Timer < gettime()) // пришло время для срабатывания таймера
{
Timer = gettime() + Cooldown; // установить новое время
// нужные действия каждые 5 секунд
x++;
}
}
|