PDA

Просмотр полной версии : [Вопрос] Как узнать время таймера? Settimer



Jackal
25.09.2015, 10:07
Как можно узнать время таймера SetTimer?

Например:



TazerTime[playerid] = SetTimerEx("Tazer",20000,false,"i",playerid);//Устанавливаю таймер на 20 сек




CMD:test(playerid)
{
new string[100];
format(string, sizeof(string),"~w~Taz: ~r~%d", TazerTime[playerid]);//Узнаю сколько времени
GameTextForPlayer(playerid, string, 5000, 1);
return 1;
}


Если тайер не запущен, при вводе команды показывает "0". Если запустить таймер, покажет "20". (на сколько и установили).

Проблема: Таймер работает, время уменьшается, но при повторном вводе команды после запуска таймера, показывает всё время "20", даже когда время кончилось и паблик сработал, всё равно показывает при вводе команды "20".

Вопрос: Как сделать, чтобы при вводе команды, значение показывало на текущий момент, например 20, 18, 17, 4, 0.

Цикличный посекундный таймер не предлагайте. Может быть есть какая-то функция типа Gettimer?

Jackal
25.09.2015, 11:49
Закрыто. Решение найдено. Делюсь.



20 - это ID таймера
0 - это значит что таймер еще не был создан.

[hr]
По сути функции нету что бы узнать время когда остановится таймер но можно это сделать.

1. Заводим новую переменную, допустим

new aTEST[playerid];
2. В паблик Tazer(playerid) нужно будет добавить код:

TazerTime[playerid] = 0;
aTEST[playerid] = 0;
3. После или перед созданием таймера добавляем этот код:

aTEST[playerid] = gettime()+20; // 20 - это кол-во секунд что в таймере
4. Команда для узнавания время:

CMD:test(playerid) {
new text[32];
if(TazerTime[playerid] != 0) {
format(text, sizeof(text), "~w~Taz: ~r~%d", (aTEST[playerid]-gettime())); // Узнаю сколько времени осталось
} else {
format(text, sizeof(text), "The timer is not running!"); // Сообщаем что таймер не запущен!
}
GameTextForPlayer(playerid, text, 5000, 1);
return 1;
}

PS: Вариант не идеален но может быть вам подойдет!