Проблема с античитом на оружие - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (
https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблема с античитом на оружие (
/showthread.php?tid=431327)
Проблема с античитом на оружие -
Zabei - 17.04.2013
Здравствуйте) Вот решил сделать на своем сервере норм античит на оружие) Но столкнулся с проблемой. Иногда античит срабатывает не правильно. Например после смерти или во время того как садишься в автомобиль. Бывает просто кикает когда покупаешь оружие.
Вот и сам античит:
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 > 0 && 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 != 0 && IsColdWeapon(GetWeapon)) {GetAmmo = 1;}
if(GetAmmo>Ammo[playerid][i])
{
if(GetWeapon != 0&&GetAmmo != 0&&GetWeapon != 40)
{
ResetPlayerWeaponss(playerid);
SendClientMessage(playerid, COLOR_LIGHTRED,"Текст" );
Kick(playerid);
}
}
else
{
Ammo[playerid][i] = GetAmmo;
}
}
Re: Проблема с античитом на оружие -
James_Braga - 17.04.2013
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] != 0 && IsColdWeapon(qwq[0])) qwq[1] = 1;
if(qwq[1]>Ammo[playerid][i])
{
if(GetWeapon != 0 || GetAmmo != 0 || GetWeapon != 40)
{
ResetPlayerWeaponss(playerid);
SendClientMessage(playerid, COLOR_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;