Автор: Leonardo_Gun
Анти Телепорт кикает после 5 секунд . Можно было поставить после 1 но могут быть ложные срабатывания.
Ко всем new:
Code: Select all
new LastCheck[MAX_PLAYERS];
new IsPlayerAirBreaking[MAX_PLAYERS];
Ко всем forward:
Code: Select all
forward AntiAirBreak();
Добавим в public OnGameModeInit() (После скобки):
Code: Select all
SetTimer("AntiAirBreak",100,true); // Можно заменить таймер до кика 100
И в конец мода добавим public AntiAirBreak():
Code: Select all
public AntiAirBreak()
{
new Float:x,Float:y,Float:z;
new pstate;
new string[256];
for(new i=0;i<GetMaxPlayers();i++)
{
if(!IsPlayerNPC(i) && FullyConnected[i] && GetPlayerPos(i,x,y,z))
{
pstate=GetPlayerState(i);
if(pstate==PLAYER_STATE_ONFOOT || (pstate==PLAYER_STATE_DRIVER && GetPlayerSpeed(i,true)<10))
{
new var=(floatround(floatsqroot(GetSquareDistance(x,y,z,CurrentPos[i][0],CurrentPos[i][1],CurrentPos[i][2]))*3600)/(GetTickCount()-LastCheck[i]));
if(var>=320 && var<=10000) // Минимал 320 макс 10000
{
IsPlayerAirBreaking[i] = 1;
format(string,256,"CEPBEP:{FF00FF} %s[%d] {00FF00}was kicked, reason: {FFFFFF}AirBag",PlayerName(i),i);
SendClientMessageToAll(COLOR_RED, string);
Kick(i);
}
}
}
CurrentPos[i][0]=x;
CurrentPos[i][1]=y;
CurrentPos[i][2]=z;
LastCheck[i]=GetTickCount();
}
return 1;
}