Пишем античит на оружие.
Сначала создаем массив для всех игрокок и на все оружие. Код
new Weapons[MAX_PLAYERS][47];
Теперь обнуляем массив игрока
В паблик OnPlayerConnect
Код
[i]for(new i=0;i<47;i++) Weapons[playerid]=0;//обнуление[/i]
Теперь защиту от ложных срабатываний, например когда садимся в авто:
В паблик OnPlayerStateChange
Код
[i]if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new model = GetVehicleModel(GetPlayerVehicleID(playerid));
switch(model)
{
case 592,577,511,512,520,593,553,476,519,460,513,548,425,417,487,488,497,563,447,469:Weapons[playerid][46]= 1;
case 457: Weapons[playerid][2]= 1;
case 596,597,598,599: Weapons[playerid][25]= 1;
}
}[/i]
Теперь саму проверку:
В паблик OnPlayerUpdate
Код
[i]new weap = GetPlayerWeapon(playerid);
if(weap != 0 && !Weapons [playerid][weap]&& weap != 40)
{
//Действие например кик
Kick(playerid);
}[/i]
Теперь сток через которое мы даем оружие Код
stock GiveWeapon(player,weapid,ammo)
{
Weapons[player][weapid]= 1;
GivePlayerWeapon(player,weapid,ammo);
return ;
}
Теперь нужно заменить все GivePlayerWeapon на GiveWeapon
Через дефайн не будет работать проверено.
Например код: #define GivePlayerWeapon GiveWeapon
Не работает. Заменять все надо в ручную.