// AntiCheat Callbacks
forward WeaponHack();
public WeaponHack()
{
new weaponid;
foreach(new playerid : Player)
{
weaponid = GetPlayerWeapon(playerid);
if(weaponid != PlayerInfo[playerid][pWeapon][GetWeaponSlot(weaponid)]) Kick(playerid);
}
}
stock GetWeaponSlot(weaponid)
{
new slot;
switch(weaponid)
{
case 0, 1: slot = 0; // No weapon
case 2 .. 9: slot = 1; // Melee
case 22 .. 24: slot = 2; // Handguns
case 25 .. 27: slot = 3; // Shotguns
case 28, 29, 32: slot = 4; // Sub-Machineguns
case 30, 31: slot = 5; // Machineguns
case 33, 34: slot = 6; // Rifles
case 35 .. 38: slot = 7; // Heavy Weapons
case 16, 18, 39: slot = 8; // Projectiles
case 42, 43: slot = 9; // Special 1
case 14: slot = 10; // Gifts
case 44 .. 46: slot = 11; // Special 2
case 40: slot = 12; // Detonators
default: slot = -1; // No slot
}
return slot;
}
if(weaponid != PlayerInfo[playerid][pWeapon][GetWeaponSlot(weaponid)]) Kick(playerid);
PHP код:
|
stock AC_GivePlayerWeapon( playerid, weaponid, ammo ) { // YOUR CODE GOES HERE return GivePlayerWeapon( playerid, weaponid, ammo ); } #if defined _ALS_GivePlayerWeapon #undef GivePlayerWeapon #else #define _ALS_GivePlayerWeapon #endif #define GivePlayerWeapon AC_GivePlayerWeapon
Information
I would suggest you hook the functions used for weapons. Example: Код:
stock AC_GivePlayerWeapon( playerid, weaponid, ammo ) { // YOUR CODE GOES HERE return GivePlayerWeapon( playerid, weaponid, ammo ); } #if defined _ALS_GivePlayerWeapon #undef GivePlayerWeapon #else #define _ALS_GivePlayerWeapon #endif #define GivePlayerWeapon AC_GivePlayerWeapon Also add a delay of 800 ms in the hooked functions before setting the weapons and then in the weapon check function, you can check to see if the time has passed and then check their weapons. then you may use kick, but make sure to test it first. |
stock GiveNexWeapon(playerid, weaponid, ammo)
{
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
PlayerInfo[playerid][pWeapon][GetWeaponSlot(weaponid)] = weaponid;
PlayerInfo[playerid][pWeaponAmmo][GetWeaponSlot(weaponid)] = ammo;
GivePlayerWeapon(playerid, weaponid, ammo);
return 1;
}