В самый вверх мода ко всем переменным добавим это:
new Float:x[MAX_PLAYERS]; new Float:y[MAX_PLAYERS]; new Float:z[MAX_PLAYERS]; new timer[MAX_PLAYERS]; new bool:dialog[MAX_PLAYERS] = false;
[MAX_PLAYERS] - Делает переменную индивидуальной для каждого игрока, то есть у каждого игрока она разная.
И ко всем forward добавляем:
forward FloodStop(playerid);
Эти переменные нам вскоре очень пригодятся.
Теперь переходим к нашим пикапам, ищем public OnPlayerPickUpPickup и ищем ваш пикап, который нужно оградить от флуда. Для примера приведу этот:
if(pickupid == pickup[0]) // pickup[0] - раннее созданный мною пикап, в вашем случаи он будет другой.
{
SetPlayerHealth(playerid, 100); // даем игроку 100 хп
SendClientMessage(playerid, COLOR_WHITE, "Здоровье пополнено."); // Выводим игроку в чат сообщение
}
Изменяем на это:
if(pickupid == pickup[0] && dialog[playerid] == false)
{
SetPlayerHealth(playerid, 100); // даем игроку 100 хп
SendClientMessage(playerid, COLOR_WHITE, "Здоровье пополнено.");
dialog[playerid] = true; // пока эта переменная будет равна true пикап не откроется снова
GetPlayerPos(playerid, x[playerid],y[playerid],z[playerid]); // узнаем свои координаты и раз мы стоим на пикапе, то и координаты пикапа
timer[playerid] = SetTimer("FloodStop", 1000, true); // запускаем таймер проверки координат
}
Теперь идем в самый низ и вставляем туда:
public FloodStop(playerid)
{
if(!IsPlayerInRangeOfPoint(playerid, 2.0, x[playerid],y[playerid],z[playerid])) /// проверяем координаты игрока и если игрок не находится в координатах пикапа то:
{
dialog[playerid] = false; // разрешаем снова воспроизводить сценарий пикапа
KillTimer(timer[playerid]); // убиваем таймер
}
}
Все готово! Теперь если вам нужно убрать флуд с пикапа то просто к условию добавляем:
dialog[playerid] == false
И в конец сценария пикапа это:
dialog[playerid] = true;
GetPlayerPos(playerid, x[playerid],y[playerid],z[playerid]);
timer[playerid] = SetTimer("FloodStop", 1000, true);
Если что-то не понятно спрашивайте.
Автор: Olegsuper1
Вход
Регистрация
Помощь









