Система персональных таймеров обратного отсчёта

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Идея и назначение

Игрок может запустить личный таймер обратного отсчёта с указанием секунд.

По окончании таймера он получает уведомление.


Суть реализации

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. Запрещать запуск нескольких таймеров одновременно.
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху