19.11.2011, 02:12
(
Last edited by CyNiC; 02/12/2011 at 02:09 PM.
)
Another option is to disable the player slot by weapon id(give negative weapon ammo will disable your slot):
Remember to replace all GivePlayerWeapon for GivePlayerWeaponEx and all ResetPlayerWeapon for ResetPlayerWeaponEx.
pawn Code:
new PlayerWeapons[MAX_PLAYERS][2][13];
TogglePlayerWeapons(playerid, bool:toggle, ...)
{
new Args = numargs();
if(!toggle)
{
for(new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][0][i], PlayerWeapons[playerid][1][i]);
for(new arg = 2; arg < Args; arg++)
{
if(PlayerWeapons[playerid][0][i] == getarg(arg))
{
GivePlayerWeapon(playerid, PlayerWeapons[playerid][0][i], - (PlayerWeapons[playerid][1][i] * 2));
continue;
}
}
}
}
else
{
ResetPlayerWeapons(playerid);
for(new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][0][i], PlayerWeapons[playerid][1][i]);
for(new arg = 2; arg < Args; arg++)
{
if(PlayerWeapons[playerid][1][i] < 0 && PlayerWeapons[playerid][0][i] == getarg(arg))
{
PlayerWeapons[playerid][1][i] -= (PlayerWeapons[playerid][1][i] * 2);
}
}
GivePlayerWeapon(playerid, PlayerWeapons[playerid][0][i], PlayerWeapons[playerid][1][i]);
}
}
return 1;
}
GivePlayerWeaponEx(playerid, weaponid, ammo)
{
GivePlayerWeapon(playerid, weaponid, ammo);
PlayerWeapons[playerid][1][GetWeaponSlot(weaponid)] += ammo;
}
stock ResetPlayerWeaponsEx(playerid)
{
ResetPlayerWeapons(playerid);
for(new i = 0; i < 13; i++) PlayerWeapons[playerid][1][i] = 0;
}
stock GetWeaponSlot(weaponid)
{
switch (weaponid)
{
case 0, 1: return 0; // Unarmed
case 2 .. 9: return 1; // Melee
case 22 .. 24: return 2; // Pistol
case 25 .. 27: return 3; // Shotgun
case 28, 29, 32: return 4; // SMG
case 30, 31: return 5; // Machinegun
case 33, 34: return 6; // Rifle
case 35 .. 38: return 7; // Heavy
case 16, 18, 39: return 8; // Projectile
case 42, 43: return 9; // Special
case 14 : return 10; // Gifts
case 44 .. 46: return 11; // Special
case 40 : return 12; // Detonator
}
return 0;
}
pawn Code:
//Example
//Disable Deagle:
TogglePlayerWeapons(playerid, false, 24);
//Enable Deagle and disable MP5 and M4:
TogglePlayerWeapons(playerid, false, 29, 31);
TogglePlayerWeapons(playerid, true, 24);