Добавляем дефайны цветов(если такие уже есть то не трогаем):
Код
#define GREEN 0x00620099
#define RED 0xAA3333AA
#define BEGE 0xFFA97F99
Макрос для определение нажатие клавиши:
Код
#define HOLDING(%0) ((newkeys & (%0)) == (%0))
Объявляем переменные:
Код
new ammo[MAX_PLAYERS];
new weapon[MAX_PLAYERS];
new n_ammo[MAX_PLAYERS];
new n_weapon[MAX_PLAYERS];
new cheatdetect[MAX_PLAYERS];
Форвард для паблика:
Код
forward bool:IsValidWeapon(weaponid);
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Код
if (HOLDING(KEY_FIRE))
{
ammo [playerid]= GetPlayerAmmo(playerid);
weapon [playerid]= GetPlayerWeapon(playerid);
if(!IsValidWeapon(weapon[playerid])) return 0;
for(new i=0; i<7;i++)
{
n_ammo [playerid]= GetPlayerAmmo(playerid);
n_weapon [playerid]= GetPlayerWeapon(playerid);
}
if(n_weapon [playerid]== weapon [playerid]&& n_ammo [playerid]== ammo[playerid])
{
cheatdetect[playerid]++;
if(cheatdetect [playerid]> 1)
{
new str[128];
new pname[24];
GetPlayerName(playerid, pname, 24);
format(str, 128, "Anticheat: %s забанен за читы (Ammo Hack)", pname);
SendClientMessageToAll(RED, str);
BanEx(playerid, "Ammo hack");
}
}
}
И одна функция:
Код
stock bool:IsValidWeapon(weaponid)
{
if(weaponid == 19 || weaponid == 20 || weaponid == 21 || weaponid < 16 || weaponid > 38) return false;
return true;
}
Автор античита: deather