stock const WeaponSlot[47]=
{
0,0,1,1,1,1,1,1,
1,1,10,10,10,10,10,10,
8,8,8,0,0,0,2,2,
2,3,3,3,4,4,5,5,
4,6,6,7,7,7,7,8,
12,9,9,9,11,11,11
};
new ammo,weaponid=GetPlayerWeapon(playerid);
new k=WeaponSlot[weaponid];
if(weaponid != Weapons[playerid]{k})
{
if(weaponid != AntiWeapons[playerid]{k})
{
if(AntiWeaponsCheck[playerid]{k} == 0)//таймер
{
//OnPlayerCommandText(playerid, "/kill");
printf("Weapone %d %d",playerid,weaponid);
}
return 0;
}
else
{
}
}
if(15 < weaponid < 44)
{
GetPlayerWeaponData(playerid, k, weaponid, ammo);
if(ammo > Ammo[playerid][k])
{
if(ammo > AntiAmmo[playerid][k])
{
if(AntiAmmoCheck[playerid]{k} == 0)//таймер
{
//OnPlayerCommandText(playerid, "/kill");
print("Ammo");
}
return 0;
}
else
{
}
}
else
if(ammo < Ammo[playerid][k])
{
}
}
|
pawn Код:
|
|
Ты когда даешь игроку оружие, записываешь его ид в Weapons[playerid]{k} и в AntiWeapons[playerid]{k}?
|
|
AntiWeaponsCheck[playerid]{k}=3; AntiAmmoCheck[playerid]{k}=3; |
|
Да, там же и
AntiWeaponsCheck - нужно уменьшать, в секундный таймер его. Если оружие не сменилось то игрока поймает на НОП-е. Основная беда это лагеры. |
|
Выходит проверил игрока - присвоил значение 3. Ладно, спасибо, попробую кое что сделать.
|
|
Дал оружие или отнял AntiWeaponsCheck присвоил 3, это задержка для лагеров. Пока от них аукнится.
|
|
[AntiCheat] Player Test_Test [0] weapon: 32. |
new ammo,w_id;
for(new slot;slot!=13;slot++)
{
GetPlayerWeaponData(i,slot,w_id,ammo);
if(w_id!=AN_Weapon[i][slot] && w_id!=0)
{
if(AN_WeaponCheck[i]{slot}==0)
{
format(SQL,80,"[AntiCheat] Player %s [%d] weapon: %d. ",Name(i),i,w_id),SendAdminMessage(SQL);
AN_ResetPlayerWeapons(i);
return 1;
}
else AN_WeaponCheck[i]{slot}--;
}
if(15<w_id<44)
{
if(ammo>AN_Ammo[i][slot])
{
if(AN_AmmoCheck[i]{slot}==0)
{
format(STR,80,"[AntiCheat] Player %s [%d] ammo: %d / %d .",Name(i),i,ammo,AN_Ammo[i][slot]),SendAdminMessage(SQL);
AN_ResetPlayerWeapons(i);
return 1;
}
else AN_AmmoCheck[i]{slot}--;
}
}
}
|
Не стал создавать новую тему; античит иногда ложно срабатывает когда садишься в транспорт. Взял дубину, сел в транспорт (пассажир), античит сработал и пишет что у меня оружие ид32 (в руках, хотя там ничего нет):
После срабатывания античита, я обнуляю оружие у игрока; моя дубинка исчезла, но античит продолжает флудить, что у меня оружие ид32. Такое бывает редко, в чем может быть проблема? Заранее благодарю. Код проверки: pawn Код:
|
|
Интересно как выглядит со стороны читера изменение его координат, сервер по ним синхронизирует его позицию. И если он изменил свои координаты, значит синхронизация с другими объектами для него будет неверной и он никого не увидит.
|