#include <a_samp> #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GREEN 0x00FF00AA
forward xPing();
new mPing;
public OnFilterScriptInit()
{
mPing = 350;
SetTimer("xPing",350,1);
return 1;
}
public OnPlayerCommandText(playerid,cmdtext[])
{
if(!IsPlayerAdmin(playerid)) return 0;
dcmd(PingMax,7,cmdtext);
return 1;
}
dcmd_PingMax(playerid,params[])
{
new string[128];
if(!strlen(params))
{
SendClientMessage(playerid,COLOR_WHITE," Укажите максимальный пинг /PingMax");
return 1;
}
if(!IsNumeric(params))
{
SendClientMessage(playerid,COLOR_RED," Ошибка неправельно задано значение пинга.");
return 1;
}
mPing = strval(params);
format(string,sizeof(string)," На этом сервере максимальный пинг %d.",strval(params));
SendClientMessage(playerid,COLOR_GREEN,string);
return 1;
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++) if (string[i] > '9' || string[i] < '0') return 0;
return 1;
}
public xPing()
{
for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i))
{
new Count[MAX_PLAYERS],string[128],player[24];
if(GetPlayerPing(i) > mPing)
{
Count[i]++;
if(Count[i] > 2)
{
GetPlayerName(i,player,24);
format(string,sizeof(string),"* [Ping] %s был кикнут с сервера по причине: Пинг превысил %d.",player,mPing);
Kick(i);
}
}
}
}
Они жирным шрифтом отмечены