Активный
- Тема Автор
- #1
Идея и назначение
Команда выдает игроку броню на ограниченное время.
Подходит для ивентов, арен и тренировок, где игроку нужно временное усиление защиты.
Суть реализации
1. Выдаем игроку броню до 100 единиц.
2. Запускаем таймер, который по истечении времени снимает броню.
3. Храним ID таймера, чтобы можно было отменять и перезапускать.
Реализация
Дополнительные идеи
1. Ограничить максимальное время действия.
2. Делать разную броню для разных групп игроков.
3. Вешать откат между повторным использованием команды.
Команда выдает игроку броню на ограниченное время.
Подходит для ивентов, арен и тренировок, где игроку нужно временное усиление защиты.
Суть реализации
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. Вешать откат между повторным использованием команды.