View Single Post
Old 02/12/2013, 12:10 PM   #126
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Атака сервера

Quote:
Originally Posted by Slava[LSW] View Post
По-моему, лучше отлавливать 'Messages received', и получать разность каждую секунду.
Acks sent постепенно достигнет значения в 3000, и тогда будет плохо.
А 'Messages received', на мой взгляд, самый надежный.
По мне так "Bytes received". Включает запросы и сообщения.

PHP Code:
#include <a_samp>
new NET_Bytes[MAX_PLAYERS];
new 
NET_Warning[MAX_PLAYERS char];
new 
NET_Timer=-1;

public 
OnFilterScriptInit()
{
    
NET_Timer=SetTimer("NET"9551);
    return 
1;
}

public 
OnFilterScriptExit()
{
    
KillTimer(NET_Timer);
    
NET_Timer=-1;
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
    
NET_Warning{playerid}=0;
    
NET_Bytes[playerid]=0;
    return 
1;
}

forward NET();//В секундный таймер
public NET()
{
    new 
pack[1024],pa[12];
    for(new 
playerid=MAX_PLAYERS;playerid--;)if(IsPlayerConnected(playerid))
    {
        
GetPlayerNetworkStats(playerid,pack,sizeof(pack));
        new 
packet=strfind(pack,"Bytes received:")+16;
        
strmid(pa,pack,packet,packet+12);
        
packet=strval(pa);
        if((
packet-NET_Bytes[playerid]) > 3000)//3000 изменить на ваше желаемое.
        
{
            ++
NET_Warning{playerid};
            if(
NET_Warning{playerid} == 2)
            {
                
Kick(playerid);
                print(
"Paket");
            }
        }
        else 
NET_Warning{playerid}=0;
        
NET_Bytes[playerid]=packet;
    }

__________________
White_116 is offline   Reply With Quote