НОП блокирует пакеты от сервера, которые несут в себе информацию о смене HP игроку через серверную функцию. (далее я расписал своё негодование по поводу твоих проверок, но...)
Кажется я понял то, какого результата ты пытаешься добиться. Раз игрок блокирует НОПом пакеты с SetPlayerHealth, значит здоровье его не меняется. Следовательно мы можем чуть увеличить значение, которое мы посылаем игроку, а после сделать проверку на то, изменилось ли у него здоровье или нет. Но я бы сделал так:
PHP код:
stock SetPlayerHealthEx(playerid, Float:Health)
{
new Float:OldHealth;
GetPlayerHealth(playerid, OldHealth);
SetPlayerHealth(playerid, Health);
if(Health != OldHealth) SetTimerEx("CheckNopHealth", 1000, 0, "iff", playerid, Health, OldHealth);
return 1;
}
forward CheckNopHealth(playerid, Float:Health, Float:OldHealth);
public CheckNopHealth(playerid, Float:Health, Float:OldHealth)
{
new Float:NewHealth;
GetPlayerHealth(playerid, NewHealth);
if(NewHealth != OldHealth) Kick(playerid);
return 1;
}
Правда не проверял на работоспособность. Но избавит от добавления кучи строк и избавит мод от вызова GetPlayerHealth для каждого игрока каждую секунду. Да и ложных срабатываний не должно быть.
UPD: Если присутствует в моде анти-гм, можно спокойно добавить в этот код нужные переменные, хранящие здоровье, и присвоить им новое значение здоровья