/*** * * Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved. * * See the file LICENSE attached with the sources for usage details. * ****/ ammoinfo_t ammoTable[11] = { { 0, 0, 0 }, { 7, 35, 40 }, //CALIBER_50AE { 30, 90, 80 }, //CALIBER_762MM { 30, 90, 60 }, //CALIBER_556MM { 30, 200, 60 }, //CALIBER_556MMBOX { 10, 30, 125 }, //CALIBER_338MAG { 30, 150, 20 }, //CALIBER_9MM { 8, 32, 65 }, //CALIBER_BUCKSHOT { 12, 100, 25 }, //CALIBER_45ACP { 13, 52, 50 }, //CALIBER_357SIG { 50, 100, 50 } //CALIBER_57MM }; /* ================= Ammo_BuyPrimary Buy ammo for the primary weapon you're equipped with ================= */ void Ammo_BuyPrimary(void) { if (!self.fSlotPrimary) { return; } int iRequiredAmmo = (ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iMaxAmount - self.(wptTable[ self.fSlotPrimary ].iCaliberfld)); float fNew = ceil(((float)iRequiredAmmo / (float)ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iSize)); for (int i = 0; i < fNew; i++) { if (self.fMoney - ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iPrice < 0) { break; } Money_AddMoney(self, -ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iPrice); sound(self, CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_IDLE); self.(wptTable[ self.fSlotPrimary ].iCaliberfld) += ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iSize; if (self.(wptTable[ self.fSlotPrimary ].iCaliberfld) > ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iMaxAmount) { self.(wptTable[ self.fSlotPrimary ].iCaliberfld) = ammoTable[ wptTable[ self.fSlotPrimary ].iCaliber ].iMaxAmount; } } } /* ================= Ammo_BuySecondary Buy ammo for the secondary weapon you're equipped with ================= */ void Ammo_BuySecondary(void) { if (!self.fSlotSecondary) { return; } int iRequiredAmmo = (ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iMaxAmount - self.(wptTable[ self.fSlotSecondary ].iCaliberfld)); float fNew = ceil(((float)iRequiredAmmo / (float)ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iSize)); for (int i = 0; i < fNew; i++) { if (self.fMoney - ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iPrice < 0) { break; } Money_AddMoney(self, -ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iPrice); sound(self, CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_IDLE); self.(wptTable[ self.fSlotSecondary ].iCaliberfld) += ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iSize; if (self.(wptTable[ self.fSlotSecondary ].iCaliberfld) > ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iMaxAmount) { self.(wptTable[ self.fSlotSecondary ].iCaliberfld) = ammoTable[ wptTable[ self.fSlotSecondary ].iCaliber ].iMaxAmount; } } } void Ammo_AutoFill(float fWeapon) { if (autocvar_fcs_fillweapons == FALSE) { return; } if (Weapon_AlreadyExists(fWeapon)) { self.(wptTable[fWeapon].iMagfld) = wptTable[fWeapon].iMagSize; self.(wptTable[fWeapon].iCaliberfld) = ammoTable[wptTable[fWeapon].iCaliber].iMaxAmount; Weapon_UpdateCurrents(); } } void Ammo_Clear(void) { // Clear all the ammo stuff for (int i = 0; i < CS_WEAPON_COUNT; i++) { self.(wptTable[ i ].iMagfld) = 0; self.(wptTable[ i ].iCaliberfld) = 0; } self.fSlotMelee = 0; self.fSlotPrimary = 0; self.fSlotSecondary = 0; self.fSlotGrenade = 0; self.iEquipment = 0; } /* ================= CSEv_GamePlayerBuyAmmo_f Called from the client, checks if he can buy ammo and does if yes ================= */ void CSEv_GamePlayerBuyAmmo_f(float fType) { if (Rules_BuyingPossible() == FALSE) { return; } if (fType == 0) { Ammo_BuyPrimary(); } else { Ammo_BuySecondary(); } Weapon_UpdateCurrents(); }