[ Свежие темы · Новости · Купить Premium+ · Акции · Правила · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Ставим мощный AntiDDos на свой сервер
Joel_Owens
Дата: Суббота, 05.10.2013, 03:08 | Сообщение # 1
Разработчик Pawno.
Сообщений: 17

К 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;
         }
     }
}
 


  • Страница 1 из 1
  • 1
Поиск: