Проблема с античитом на оружие
#1

Здравствуйте) Вот решил сделать на своем сервере норм античит на оружие) Но столкнулся с проблемой. Иногда античит срабатывает не правильно. Например после смерти или во время того как садишься в автомобиль. Бывает просто кикает когда покупаешь оружие.
Вот и сам античит:
PHP Code:
new GetWeapon;
new 
GetAmmo;
new 
Ammo[MAX_PLAYERS][14]; 
Все оружие на сервере выдаеться через Givegun
PHP Code:
stock Givegun(playerid,weaponid,ammo)
{
    if(
IsColdWeapon(weaponid))
    {
        
ammo 1;
        
Ammo[playerid][GetWeaponSlot(weaponid)]=ammo;
    }
    else
    {
        
Ammo[playerid][GetWeaponSlot(weaponid)]+=ammo;
        }
    
GivePlayerWeapon(playerid,weaponid,ammo);
    return 
true;


PHP Code:
stock IsColdWeapon(weaponid)
{
    if(
weaponid && weaponid 16) {return 1;}
    if(
weaponid == 46) {return 1;}
    return 
0;

Оружие везде убираем с помощью ResetPlayerWeaponss
PHP Code:
stock ResetPlayerWeaponss(playerid)
{
    
ResetPlayerWeapons(playerid);
       for(new 
i=0;i<12;i++)
    {
        
Ammo[playerid][i] = 0;
    }
    return 
true;

Ну и сама проверка)

PHP Code:
for(new i=0;i<12;i++)
    {
        
GetPlayerWeaponData(playerid,i,GetWeapon,GetAmmo);
        if(
GetAmmo != && IsColdWeapon(GetWeapon)) {GetAmmo 1;}
         if(
GetAmmo>Ammo[playerid][i])
        {
            if(
GetWeapon != 0&&GetAmmo != 0&&GetWeapon != 40)
            {
                
ResetPlayerWeaponss(playerid);
                
SendClientMessage(playeridCOLOR_LIGHTRED,"Текст" );
                 
Kick(playerid);
            }
        }
        else
        {
            
Ammo[playerid][i] = GetAmmo;
        }
    } 
Reply
#2

PHP Code:
if(timestop[playerid] == 0)
{
    for(new 
i=0;i<12;i++)
    {
        new 
qwq[2];
        
GetPlayerWeaponData(playerid,i,qwq[0],qwq[1]);
        if(
qwq[1] != && IsColdWeapon(qwq[0])) qwq[1] = 1;
        if(
qwq[1]>Ammo[playerid][i])
        {
            if(
GetWeapon != || GetAmmo != || GetWeapon != 40
            {
                
ResetPlayerWeaponss(playerid);
                
SendClientMessage(playeridCOLOR_LIGHTRED,"Текст" );
                
Kick(playerid);
            }
        }
        else 
Ammo[playerid][i] = qwq[1];
    }  
}
else 
timestop[playerid] --; 
так же таймер создавай на 2 секунды, и при выполнении onplayerstatechange ставь паузу new timestop[MAX_PLAYERS];

в onplayerstatechange()

timestop[playerid] = 3;

в ResetPlayerWeaponss в начало

timestop[playerid] = 3;

Givegun в начало

timestop[playerid] = 3;
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)