[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Урок] Античит на патроны SA-MP
vertДата: Четверг, 23.01.2014, 19:35 | Сообщение # 1
PAWN
Группа: Пользователь
Сообщений: 422
Статус: Offline
Добавляем дефайны цветов(если такие уже есть то не трогаем):
Код
#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


Skype: avg.kazax
VK: vk.com/ukazax
 
  • Страница 1 из 1
  • 1
Поиск: