How is it for counter-strike :
Bpammo are player offsets.
When you drop a weapon, you keep the bpammo, that bpammo is shared for other weapons you could have.
For example you use the same bpammo for glock18, mp5navy, tmp and elites.
You only drop this bpammo when you die.
Hope it's the same for dod ;)
Good research
Code:
#define OFFSET_AWM_AMMO 426 + EXTRAOFFSET // +44
#define OFFSET_SCOUT_AMMO 427 + EXTRAOFFSET // +44
#define OFFSET_PARA_AMMO 428 + EXTRAOFFSET // +44
#define OFFSET_FAMAS_AMMO 429 + EXTRAOFFSET // +44
#define OFFSET_M3_AMMO 430 + EXTRAOFFSET // +44
#define OFFSET_USP_AMMO 431 + EXTRAOFFSET // +44
#define OFFSET_FIVESEVEN_AMMO 432 + EXTRAOFFSET // +44
#define OFFSET_DEAGLE_AMMO 433 + EXTRAOFFSET // +44
#define OFFSET_P228_AMMO 434 + EXTRAOFFSET // +44
#define OFFSET_GLOCK_AMMO 435 + EXTRAOFFSET // +44
#define OFFSET_FLASH_AMMO 436 + EXTRAOFFSET // +44
#define OFFSET_HE_AMMO 437 + EXTRAOFFSET // +44
#define OFFSET_SMOKE_AMMO 438 + EXTRAOFFSET // +44
#define OFFSET_C4_AMMO 439 + EXTRAOFFSET // +44
static cell AMX_NATIVE_CALL cs_get_user_backpackammo(AMX *amx, cell *params) // cs_get_user_backpackammo(index, weapon); = 2 params
{
// Get amount of ammo in a user's backpack for a specific weapon type.
// params[1] = user index
// params[2] = weapon, as in CSW_*
// Valid entity should be within range
CHECK_PLAYER(params[1]);
// Make into edict pointer
edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
int offset;
switch (params[2]) {
case CSW_AWP:
offset = OFFSET_AWM_AMMO;
break;
case CSW_SCOUT:
case CSW_AK47:
case CSW_G3SG1:
offset = OFFSET_SCOUT_AMMO;
break;
case CSW_M249:
offset = OFFSET_PARA_AMMO;
break;
case CSW_FAMAS:
case CSW_M4A1:
case CSW_AUG:
case CSW_SG550:
case CSW_GALI:
case CSW_SG552:
offset = OFFSET_FAMAS_AMMO;
break;
case CSW_M3:
case CSW_XM1014:
offset = OFFSET_M3_AMMO;
break;
case CSW_USP:
case CSW_UMP45:
case CSW_MAC10:
offset = OFFSET_USP_AMMO;
break;
case CSW_FIVESEVEN:
case CSW_P90:
offset = OFFSET_FIVESEVEN_AMMO;
break;
case CSW_DEAGLE:
offset = OFFSET_DEAGLE_AMMO;
break;
case CSW_P228:
offset = OFFSET_P228_AMMO;
break;
case CSW_GLOCK18:
case CSW_MP5NAVY:
case CSW_TMP:
case CSW_ELITE:
offset = OFFSET_GLOCK_AMMO;
break;
case CSW_FLASHBANG:
offset = OFFSET_FLASH_AMMO;
break;
case CSW_HEGRENADE:
offset = OFFSET_HE_AMMO;
break;
case CSW_SMOKEGRENADE:
offset = OFFSET_SMOKE_AMMO;
break;
case CSW_C4:
offset = OFFSET_C4_AMMO;
break;
default:
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", params[2]);
return 0;
}
return (int)*((int *)pPlayer->pvPrivateData + offset);
return 0;
}
static cell AMX_NATIVE_CALL cs_set_user_backpackammo(AMX *amx, cell *params) // cs_set_user_backpackammo(index, weapon, amount); = 3 params
{
// Set amount of ammo in a user's backpack for a specific weapon type.
// params[1] = user index
// params[2] = weapon, as in CSW_*
// params[3] = new amount
// Valid entity should be within range
CHECK_PLAYER(params[1]);
// Make into edict pointer
edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
int offset;
switch (params[2]) {
case CSW_AWP:
offset = OFFSET_AWM_AMMO;
break;
case CSW_SCOUT:
case CSW_AK47:
case CSW_G3SG1:
offset = OFFSET_SCOUT_AMMO;
break;
case CSW_M249:
offset = OFFSET_PARA_AMMO;
break;
case CSW_FAMAS:
case CSW_M4A1:
case CSW_AUG:
case CSW_SG550:
case CSW_GALI:
case CSW_SG552:
offset = OFFSET_FAMAS_AMMO;
break;
case CSW_M3:
case CSW_XM1014:
offset = OFFSET_M3_AMMO;
break;
case CSW_USP:
case CSW_UMP45:
case CSW_MAC10:
offset = OFFSET_USP_AMMO;
break;
case CSW_FIVESEVEN:
case CSW_P90:
offset = OFFSET_FIVESEVEN_AMMO;
break;
case CSW_DEAGLE:
offset = OFFSET_DEAGLE_AMMO;
break;
case CSW_P228:
offset = OFFSET_P228_AMMO;
break;
case CSW_GLOCK18:
case CSW_MP5NAVY:
case CSW_TMP:
case CSW_ELITE:
offset = OFFSET_GLOCK_AMMO;
break;
case CSW_FLASHBANG:
offset = OFFSET_FLASH_AMMO;
break;
case CSW_HEGRENADE:
offset = OFFSET_HE_AMMO;
break;
case CSW_SMOKEGRENADE:
offset = OFFSET_SMOKE_AMMO;
break;
case CSW_C4:
offset = OFFSET_C4_AMMO;
break;
default:
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", params[2]);
return 0;
}
*((int *)pPlayer->pvPrivateData + offset) = params[3];
return 1;
}
__________________