К forward добавляем:
Код
forward NetworkUpdate();
forward bewasu();
Создаем где небудь stock рядом с остальными:
Код
stock DosName(playerid)
{
new namehyattc4[MAX_PLAYER_NAME];
GetPlayerName(playerid, namehyattc4, sizeof(namehyattc4));
if(strlen(namehyattc4)>19) strdel(namehyattc4, 19, 20),SetPlayerName(playerid, namehyattc4);
return true;
}
В public OnGamemodeInit()
Ставим
Код
SetTimer("bewasu",100,1);
Ко всем new:
Код
new OtherMessages[MAX_PLAYERS];
new vzl[MAX_PLAYERS];
Куда нибудь между public/stock вставляем:
Код
stock DosIpNick(playerid)
{
new nadosname[MAX_PLAYER_NAME];
GetPlayerName(playerid, nadosname, sizeof(nadosname));
if(strlen(nadosname)>9)
{
new scanernew = 0;
for (new gls = 0; gls < strlen(nadosname); gls++)
{
for (new ch = 48; ch < 58; ch++) { if(nadosname[gls]==ch)scanernew++; }
}
if(scanernew>9)
{
LLL++;
new nowname[15];
format(nowname, sizeof(nowname), "Warning%d", LLL);
SetPlayerName(playerid, nowname);
}
}
return true;
}
public bewasu()
{
foreach(Player,iei)
{
if (IsPlayerConnected(iei)) PingError(iei),DosIpNick(iei);
}
return true;
}
И этот сток тоже куда небудь между stock/public:
Код
stock ACrash(playerid){
new iLoop = -1,sName[24];
GetPlayerName(playerid,sName,22);
while(++iLoop != sizeof sMsDos) if(!strcmp(sName,sMsDos[iLoop],true))
GameTextForPlayer(playerid, "~k~~INVALID_KEY~", 100, 5),KickEx(playerid);}
В public OnPlayerConnect:
Код
ACrash(playerid); DosName(playerid); vzl[playerid]=0; Chataspam[playerid]=0; DosIpNick(playerid);
В конец мода вставляем паблик:
Код
public NetworkUpdate()
{
new stats[300], idx, pos, msgs;
foreach(Player,i)
{
if(IsPlayerConnected(i))
{
idx = 0;
GetPlayerNetworkStats(i, stats, sizeof(stats));
pos = strfind(stats, "Messages received: ", false, 209);
msgs = strval(strtok(stats[pos+19], idx));
if(msgs - MessagesCount [i]- OtherMessages [i]> MAX_MESSAGES && msgs > 2000)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(i, pname, sizeof(pname));
printf("AntiDoS: Blocked Packets-Attack from playerid %d ", i);
BanEx(i, "AntiDoS: Packets-Attack");
}
MessagesCount [i]= msgs;
OtherMessages [i]= 0;
}
}
}