PHP код:
// AVTP anticheat by OFFREAL
// WARNING: Experimental version
// avtp.inc
#if defined _avtp_included
#endinput
#endif
#define _avtp_included
#pragma library avtp
// Переменные:
#define STREAM_DIST_MIN 100.00
forward avtp_OnVehicleStreamIn(vehicleid, forplayerid);
forward avtp_OnVehicleStreamOut(vehicleid, forplayerid);
forward avtp_OnPlayerConnect(playerid);
forward avtp_OnVehicleSpawn(vehicleid);
new bool:v_Streamed[ MAX_VEHICLES ][ MAX_PLAYERS ];
stock OnVehicleStreamIn(vehicleid, forplayerid)
{
CallLocalFunction("avtp_OnVehicleStreamIn","ii",vehicleid, forplayerid);
new Float:vehx, Float:vehy, Float:vehz;
GetVehiclePos(vehicleid, vehx, vehy, vehz);
if( GetPlayerDistanceFromPoint(forplayerid, vehx, vehy, vehz) < STREAM_DIST_MIN && !v_Streamed[vehicleid][forplayerid] )
{
SendClientMessage(forplayerid, -1, "Подозрение в ТП машин. Соединение было разорвано сервером");
//Kick(forplayerid);
//SetVehicleToRespawn(vehicleid);
return 1;
}
v_Streamed[vehicleid][forplayerid] = true;
return 1;
}
stock OnVehicleStreamOut(vehicleid, forplayerid)
{
CallLocalFunction("avtp_OnVehicleStreamOut","ii",vehicleid, forplayerid);
v_Streamed[vehicleid][forplayerid] = false;
return 1;
}
stock OnPlayerConnect(playerid)
{
CallLocalFunction("avtp_OnPlayerConnect","i",playerid);
for(new v;v<MAX_VEHICLES;v++)
{
v_Streamed[v][playerid] = false;
}
return 1;
}
stock OnVehicleSpawn(vehicleid)
{
CallLocalFunction("avtp_OnVehicleSpawn","i",vehicleid);
new Float:vehx, Float:vehy, Float:vehz;
GetVehiclePos(vehicleid, vehx, vehy, vehz);
for(new i; i<MAX_PLAYERS; i++)
{
if( GetPlayerDistanceFromPoint(i, vehx, vehy, vehz) < STREAM_DIST_MIN )
{
v_Streamed[vehicleid][i] = true;
}
else
{
v_Streamed[vehicleid][i] = false;
}
}
return 1;
}
// Замена стандарт функций
stock avtp_SetplayerPos(playerid, Float:X, Float:Y, Float:Z)
{
for(new i; i<MAX_VEHICLES; i++)
{
if( GetVehicleDistanceFromPoint(i, X, Y, Z) < STREAM_DIST_MIN )
{
v_Streamed[i][playerid] = true;
}
else
{
v_Streamed[i][playerid] = false;
}
}
SetPlayerPos(playerid,X,Y,Z);
return 1;
}
stock avtp_PutPlayerInVehicle(playerid, vehicleid, seat)
{
if(PutPlayerInVehicle(playerid, vehicleid, seat))
{
v_Streamed[vehicleid][playerid] = true;
return 1;
}
return 0;
}
stock avtp_SetVehiclePos(vid, Float:X, Float:Y, Float:Z)
{
for(new i; i<MAX_PLAYERS; i++)
{
if( GetPlayerDistanceFromPoint(i, X, Y, Z) < STREAM_DIST_MIN )
{
v_Streamed[vid][i] = true;
}
else
{
v_Streamed[vid][i] = false;
}
}
SetVehiclePos(vid,X,Y,Z);
return 1;
}
#define SetplayerPos avtp_SetplayerPos
#define SetVehiclePos avtp_SetVehiclePos
#define PutPlayerInVehicle avtp_PutPlayerInVehicle
#define OnVehicleStreamIn avtp_OnVehicleStreamIn
#define OnVehicleStreamOut avtp_OnVehicleStreamOut
#define OnPlayerConnect avtp_OnPlayerConnect
#define OnVehicleSpawn avtp_OnVehicleSpawn
Это вставляете в любой текстовой файл (чистый), переименовываете его в