Это решение поможет ещё чуть сильнее усложнить жизнь читерам, а именно палить NOP SetPlayerPos.
Куда нибудь в конец мода копируем:
PHP код:
forward AntiNOPSetPlayerPos(playerid, Float:x, Float:y, Float:z);
public AntiNOPSetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
new string[128];
if(!IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z))
{
format(string, sizeof(string), "%s[%d] кикнут. Причина: NOP SetPlayerPos", PlayerName(playerid), playerid);
return SendClientMessageToAll(0xFF0000AA, string);
}
return 1;
}
Ну и сама функция (Заменить все SetPlayerPos у себя в моде, на SetPlayerPosAC):
PHP код:
stock SetPlayerPosAC(playerid, Float:x, Float:y, Float:z)
{
SetPlayerPos(playerid, x, y, z);
SetTimerEx("AntiNOPSetPlayerPos", 500, false, "ifff", playerid, x, y, z); // Где 500, это время в миллисекундах когда будет производиться проверка на нахождение игрока.
// Если у вас кикает всех подряд, увеличивайте это время
return 1;
}
Если у кого нету функции PlayerName:
PHP код:
stock PlayerName(playerid)
{
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}
Автор: eFFect
Спасибо за подсказку с таймером TAP04eGG