Команда временной брони

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

8

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

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

Команда выдает игроку броню на ограниченное время.

Подходит для ивентов, арен и тренировок, где игроку нужно временное усиление защиты.


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

1. Выдаем игроку броню до 100 единиц.

2. Запускаем таймер, который по истечении времени снимает броню.

3. Храним ID таймера, чтобы можно было отменять и перезапускать.


Реализация

Код:
new ArmorTimer[MAX_PLAYERS];


forward RemovePlayerArmor(playerid);


CMD:temparmor(playerid, params[])
{
    new seconds;

    if(sscanf(params, "i", seconds))
        return SendClientMessage(playerid, -1, "Используй: /temparmor [секунды].");

    if(seconds <= 0)
        return SendClientMessage(playerid, -1, "Время должно быть больше нуля.");

    if(ArmorTimer[playerid] != 0)
    {
        KillTimer(ArmorTimer[playerid]);
        ArmorTimer[playerid] = 0;
    }

    SetPlayerArmour(playerid, 100.0);

    ArmorTimer[playerid] = SetTimerEx("RemovePlayerArmor", seconds * 1000, false, "i", playerid);

    SendClientMessage(playerid, -1, "Броня выдана на ограниченное время.");

    return 1;
}


public RemovePlayerArmor(playerid)
{
    SetPlayerArmour(playerid, 0.0);
    ArmorTimer[playerid] = 0;

    if(IsPlayerConnected(playerid))
        SendClientMessage(playerid, -1, "Срок действия брони истек.");

    return 1;
}


Дополнительные идеи

1. Ограничить максимальное время действия.

2. Делать разную броню для разных групп игроков.

3. Вешать откат между повторным использованием команды.
 

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

Сверху