Alex_Lenez
Специалист
Доброго времени суток, пользователи: Pawno-Info
Сколько я не видел в интернете защиты от этой напасти ( Покупать защиту не пробовал), все не работало!
Я решил написать лёгкую защиту от этого!
В начало мода ко всем #define:
Защита от команды: !attack [запустить Combo-Attack]
Заменяем свой public OnPlayerExitedMenu на мой что в низу:
Защита от команды: !lag [запустить/остановить Crasher]
В public OnDialogResponse
самое начало паблика:
Защита от команды: !cf [запустить/остановить Chat-Flood]
В public OnPlayerText
в самое начало паблика.
Дальше в любой ваш 1 секундный таймер:
Вставляем это:
Это на случай если у вас нет в этом паблике цикла игроков, что мало вероятно, так что лучше просто кинуть
Это в цикл всех игроков в 1 секундном таймере:
Защита от команды: !dos [запустить DoS]
В public OnPlayerPickUpPickup
В начало паблика также ставим антифлудер
Потом в public OnDialogResponse
В начало паблика:
Потом добавляем в 1 секундный таймер обнуление:
Примечание: В цикл игроков
Что еще хочу сказать, это только защита маленькая так как пакеты могут идти даже без коннекта и вызова каких либо функций
Защита от команды: !recf [запустить/остановить Reconnect-Flood]
в public OnPlayerConnect:
В конец мода, или среди пабликов где-то:
Если мало эфективно, пробуйте вот этот вариант:
Если есть ошибки со словом foreach то вы можете или скачать и установить данный инклуд,
Или же заменить это:
На это [НЕ РЕКОМЕНДУЕТСЯ | ЛУЧШЕ УСТАНОВИТЬ FOREACH]
Между пабликами/стоками добавить новый stock
Оптимизировано.Обновлено
Автор: Alex_Lenez
Сколько я не видел в интернете защиты от этой напасти ( Покупать защиту не пробовал), все не работало!
Я решил написать лёгкую защиту от этого!
В начало мода ко всем #define:
PHP:
const Menu:@INVALID_MENU = Menu:INVALID_MENU;
#undef INVALID_MENU
#define INVALID_MENU @INVALID_MENU
#define INVALID_DIALOG_ID 0
Защита от команды: !attack [запустить Combo-Attack]
Заменяем свой public OnPlayerExitedMenu на мой что в низу:
PHP:
public OnPlayerExitedMenu(playerid)
{
if(playerid == INVALID_PLAYER_ID) return Kick(playerid);
new Menu:current = GetPlayerMenu(playerid);
if(GetPlayerMenu(playerid) == INVALID_MENU) return Kick(playerid);
HideMenuForPlayer(current,playerid);
return TogglePlayerControllable(playerid,true);
}
В public OnDialogResponse
самое начало паблика:
PHP:
if(dialogid == INVALID_DIALOG_ID) return Kick(playerid);
В public OnPlayerText
в самое начало паблика.
PHP:
PublicAntiFlood(playerid, "ChatFlood", 8);
Вставляем это:
PHP:
foreach(new i : Player)
{
SetPVarInt(i, "ChatFlood",0);
}
Это в цикл всех игроков в 1 секундном таймере:
PHP:
SetPVarInt(i, "ChatFlood",0);
В public OnPlayerPickUpPickup
В начало паблика также ставим антифлудер
PHP:
PublicAntiFlood(playerid, "PickupFlood", 8);
В начало паблика:
PHP:
PublicAntiFlood(playerid, "DialogFlood", 8); // PublicAntiFlood(Ид игрока, "НазваниеPVar", Интервал );
Примечание: В цикл игроков
PHP:
SetPVarInt(i, "PickupFlood",0);
SetPVarInt(i, "DialogFlood",0);
Защита от команды: !recf [запустить/остановить Reconnect-Flood]
в public OnPlayerConnect:
PHP:
if((GetTickCount()-GetPVarInt(playerid, "ConnectionTime")) < 200 && CountIP(PlayerIP(playerid)) >= 5) Ban(playerid);
SetPVarInt(playerid, "ConnectionTime", GetTickCount());
PHP:
CountIP(ip[])
{
new countip;
foreach(new i : Player)
if(IsPlayerConnected(i) && !strcmp(PlayerIP(i),ip)) countip++;
return countip;
}
PlayerIP(playerid)
{
new ip[16];
GetPlayerIp(playerid,ip,sizeof(ip));
return ip;
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Если есть ошибки со словом foreach то вы можете или скачать и установить данный инклуд,
Или же заменить это:
PHP:
foreach(new i : Player)
PHP:
for(new i = 0; i <= MAX_PLAYERS; i++)
Между пабликами/стоками добавить новый stock
PHP:
stock PublicAntiFlood(playerid, PVarName[], interval)
{
SetPVarInt(playerid, PVarName, GetPVarInt(playerid, PVarName) + 1);
if(GetPVarInt(playerid,PVarName) > interval) Kick(playerid);
return true;
}
Автор: Alex_Lenez
Последнее редактирование:
