Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5608 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Tikiuosi tiks:

http://forum.sa-mp.com/showthread.php?t=80210

#include 

// * Settings for the anti-flood
// I recommend using these settings if you want to protect the server from flood attacks.
// If you want to deal with annoying spammers, lower the thresold a bit and set the mode to 2 (kick).

#define RATE_INC (500) // The sensitivity per message, no need to modify.
#define RATE_MAX (2500) // When the flood rate reaches this value the action below will be taken

// * Action to take when the flood rate reached the thresold
// 1 - Ban
// 2 - Kick
// 3 - Give a warning (not recommended)

#define THRESOLD_ACTION 1

enum LIST_ANTIFLOOD
{
lastCheck,
floodRate
}

new AntiFlood_Data[MAX_PLAYERS][list_ANTIFLOOD];

public OnFilterScriptInit()
{
for ( new playerid; playerid < MAX_PLAYERS; playerid++ )
{
	if ( IsPlayerConnected( playerid ) )
		AntiFlood_InitPlayer( playerid );
}

return 1;
}

public OnFilterScriptExit()
{
return 1;
}

public OnPlayerConnect( playerid )
{
AntiFlood_InitPlayer( playerid );

return 1;
}

public OnPlayerDisconnect( playerid )
{
return 1;
}

public OnPlayerText( playerid, text[] )
{
assert( AntiFlood_Check( playerid ) );

return 1;
}

public OnPlayerCommandText( playerid, cmdtext[] )
{
assert( AntiFlood_Check( playerid ) );

return 0;
}

public OnPlayerPrivmsg( playerid, recieverid, text[] )
{
assert( AntiFlood_Check( playerid ) );

return 1;
}

forward OnPlayerTeamPrivmsg( playerid, text[] );
public OnPlayerTeamPrivmsg( playerid, text[] )
{
assert( AntiFlood_Check( playerid ) );

return 1;
}

public OnPlayerDeath( playerid, killerid, reason )
{
assert( AntiFlood_Check( playerid ) );

return 1;
}

AntiFlood_Check( playerid, bool:inc=true )
{
AntiFlood_Data[playerid][floodRate] += inc ? RATE_INC : 0;
AntiFlood_Data[playerid][floodRate] = AntiFlood_Data[playerid][floodRate] - ( GetTickCount() - AntiFlood_Data[playerid][lastCheck] );
AntiFlood_Data[playerid][lastCheck] = GetTickCount();
AntiFlood_Data[playerid][floodRate] = AntiFlood_Data[playerid][floodRate] < 0 ? 0 : AntiFlood_Data[playerid][floodRate];

if ( AntiFlood_Data[playerid][floodRate] >= RATE_MAX )
{
	#if THRESOLD_ACTION == 1
		new msg[64], name[MAX_PLAYER_NAME];

		GetPlayerName( playerid, name, sizeof( name ) );

		format( msg, sizeof( msg ), ">> %s has been banned for flooding.", name );

		SendClientMessageToAll( 0xEE9911FF, msg );

		Ban( playerid );
	#elseif THRESOLD_ACTION == 2
		new msg[64], name[MAX_PLAYER_NAME];

		GetPlayerName( playerid, name, sizeof( name ) );

		format( msg, sizeof( msg ), ">> %s has been kicked for flooding.", name );

		SendClientMessageToAll( 0xEE9911FF, msg );

		Kick( playerid );
	#else
		SendClientMessage( playerid, 0xC00000FF, "Stop flooding." );
	#endif

	return false;
}

return true;
}

AntiFlood_InitPlayer( playerid )
{
AntiFlood_Data[playerid][lastCheck] = GetTickCount();
AntiFlood_Data[playerid][floodRate] = 0;
}

76561198142193514.png

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...