From c055d44dcdb87e8db49fb23e632fc086aa44cce6 Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 11 Jun 2026 19:53:22 +0300 Subject: init --- Client/Functions/Client_ReplaceInventoryAmmo.sqf | 65 ++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Client/Functions/Client_ReplaceInventoryAmmo.sqf (limited to 'Client/Functions/Client_ReplaceInventoryAmmo.sqf') diff --git a/Client/Functions/Client_ReplaceInventoryAmmo.sqf b/Client/Functions/Client_ReplaceInventoryAmmo.sqf new file mode 100644 index 0000000..810e4e2 --- /dev/null +++ b/Client/Functions/Client_ReplaceInventoryAmmo.sqf @@ -0,0 +1,65 @@ +Private ['_freeSpace','_futureSpace','_get','_limit','_magazines','_newMag','_newMagIsSide','_newMagSpace','_oldMags','_presentMags','_replacement','_rlIndex','_size','_spaceToReduce','_totalToReplace','_z']; +_newMag = _this select 0; +_oldMags = _this select 1; +_magazines = _this select 2; + +_presentMags = []; +_replacement = []; +_size = 0; +_spaceToReduce = 0; + +{ + Private['_cmag','_ct']; + _cmag = _x; + _ct = {_x == _cmag} count _oldMags; + + if (_ct > 0) then { + _get = _cmag Call GetNamespace; + _presentMags = _presentMags + [_cmag]; + _spaceToReduce = _spaceToReduce + (_get select QUERYGEARSPACE); + }; +} forEach _magazines; + +if (_newMag == "") exitWith {_magazines - _presentMags}; + +_get = _newMag Call GetNamespace; +_newMagSpace = _get select QUERYGEARSPACE; +_newMagIsSide = _get select QUERYGEARHANDGUNPOOL; +_limit = if (_newMagIsSide) then {8} else {12}; + +if (_newMagIsSide) then { + { + _get = _x Call GetNamespace; + + if !(isNil '_get') then { + if (_get select QUERYGEARHANDGUNPOOL) then { + _size = _size + (_get select QUERYGEARSPACE); + }; + }; + } forEach _magazines; +} else { + { + _get = _x Call GetNamespace; + + if !(isNil '_get') then { + if !(_get select QUERYGEARHANDGUNPOOL) then { + _size = _size + (_get select QUERYGEARSPACE); + }; + }; + } forEach _magazines; +}; + +_totalToReplace = count _presentMags; +_freeSpace = _size - _spaceToReduce; + +_futureSpace = _totalToReplace * _newMagSpace; +while {(_futureSpace + _freeSpace) > _limit} do { + _totalToReplace = _totalToReplace - 1; + _futureSpace = _totalToReplace * _newMagSpace; +}; + +for [{_z = 0},{_z < _totalToReplace},{_z = _z + 1}] do {_replacement = _replacement + [_newMag]}; + +_magazines = (_magazines - _presentMags) + _replacement; + +_magazines \ No newline at end of file -- cgit v1.3.1