Активный
- Тема Автор
- #1
Идея и назначение
Игрок может запустить личный таймер обратного отсчёта с указанием секунд.
По окончании таймера он получает уведомление.
Суть реализации
1. Храним оставшееся время таймера в секундах.
2. Периодический таймер уменьшает значения.
3. Команда /timer запускает новый отсчёт.
Реализация
Дополнительные идеи
1. Показывать остаток времени в текстдроу.
2. Использовать таймеры для квестов и евентов.
3. Запрещать запуск нескольких таймеров одновременно.
Игрок может запустить личный таймер обратного отсчёта с указанием секунд.
По окончании таймера он получает уведомление.
Суть реализации
1. Храним оставшееся время таймера в секундах.
2. Периодический таймер уменьшает значения.
3. Команда /timer запускает новый отсчёт.
Реализация
Код:
new PlayerCountdown[MAX_PLAYERS];
forward UpdateCountdowns();
public OnGameModeInit()
{
SetTimer("UpdateCountdowns", 1000, true);
return 1;
}
CMD:timer(playerid, params[])
{
new sec;
if(sscanf(params, "i", sec))
return SendClientMessage(playerid, -1, "Используй: /timer [секунды].");
if(sec <= 0)
return SendClientMessage(playerid, -1, "Время должно быть больше нуля.");
PlayerCountdown[playerid] = sec;
SendClientMessage(playerid, -1, "Таймер запущен.");
return 1;
}
public UpdateCountdowns()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerCountdown[i] <= 0) continue;
PlayerCountdown[i]--;
if(PlayerCountdown[i] == 0)
SendClientMessage(i, -1, "Твой личный таймер закончился.");
}
return 1;
}
Дополнительные идеи
1. Показывать остаток времени в текстдроу.
2. Использовать таймеры для квестов и евентов.
3. Запрещать запуск нескольких таймеров одновременно.