From f336fb50e763d92fd6fbf6136c2d9acf475c185a Mon Sep 17 00:00:00 2001 From: Dystopian Date: Tue, 8 Nov 2022 00:19:48 +0300 Subject: [PATCH 1/3] Use canAddItem --- addons/common/fnc_addBackpackCargo.sqf | 4 ++-- addons/common/fnc_addItem.sqf | 2 +- addons/common/fnc_addItemCargo.sqf | 4 ++-- addons/common/fnc_addMagazineCargo.sqf | 4 ++-- addons/common/fnc_addWeaponCargo.sqf | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/common/fnc_addBackpackCargo.sqf b/addons/common/fnc_addBackpackCargo.sqf index 60b8be7938..00e239fecd 100644 --- a/addons/common/fnc_addBackpackCargo.sqf +++ b/addons/common/fnc_addBackpackCargo.sqf @@ -53,11 +53,11 @@ if (isNull _config || {getNumber (_config >> "scope") < 1} || {getNumber (_confi }; if (_verify) then { - if (_container canAdd [_item, _count]) then { + if ([_container, _item, _count] call CBA_fnc_canAddItem) then { _container addBackpackCargoGlobal [_item, _count]; _return = true; } else { - while {_container canAdd _item && {_count > 0}} do { + while {[_container, _item] call CBA_fnc_canAddItem && {_count > 0}} do { _container addBackpackCargoGlobal [_item, 1]; _count = _count - 1; }; diff --git a/addons/common/fnc_addItem.sqf b/addons/common/fnc_addItem.sqf index 2b2abf75dd..cae6406061 100644 --- a/addons/common/fnc_addItem.sqf +++ b/addons/common/fnc_addItem.sqf @@ -48,7 +48,7 @@ if (isNull _config || {getNumber (_config >> "scope") < 1}) exitWith { }; if (_verify) then { - if (_unit canAdd _item) then { + if ([_unit, _item] call CBA_fnc_canAddItem) then { _unit addItem _item; _return = true; } else { diff --git a/addons/common/fnc_addItemCargo.sqf b/addons/common/fnc_addItemCargo.sqf index 4991ea4d85..67043324f1 100644 --- a/addons/common/fnc_addItemCargo.sqf +++ b/addons/common/fnc_addItemCargo.sqf @@ -53,11 +53,11 @@ if (isNull _config || {getNumber (_config >> "scope") < 1}) exitWith { }; if (_verify) then { - if (_container canAdd [_item, _count]) then { + if ([_container, _item, _count] call CBA_fnc_canAddItem) then { _container addItemCargoGlobal [_item, _count]; _return = true; } else { - while {_container canAdd _item && {_count > 0}} do { + while {[_container, _item] call CBA_fnc_canAddItem && {_count > 0}} do { _container addItemCargoGlobal [_item, 1]; _count = _count - 1; }; diff --git a/addons/common/fnc_addMagazineCargo.sqf b/addons/common/fnc_addMagazineCargo.sqf index 56d3979fe6..9f49e9e9cd 100644 --- a/addons/common/fnc_addMagazineCargo.sqf +++ b/addons/common/fnc_addMagazineCargo.sqf @@ -54,11 +54,11 @@ if (isNull _config || {getNumber (_config >> "scope") < 2}) exitWith { }; if (_verify) then { - if (_container canAdd [_item, _count]) then { + if ([_container, _item, _count] call CBA_fnc_canAddItem) then { _container addMagazineAmmoCargo [_item, _count, _ammo]; _return = true; } else { - while {_container canAdd _item && {_count > 0}} do { + while {[_container, _item] call CBA_fnc_canAddItem && {_count > 0}} do { _container addMagazineAmmoCargo [_item, 1, _ammo]; _count = _count - 1; }; diff --git a/addons/common/fnc_addWeaponCargo.sqf b/addons/common/fnc_addWeaponCargo.sqf index 4968764d6b..03d5ccd9c2 100644 --- a/addons/common/fnc_addWeaponCargo.sqf +++ b/addons/common/fnc_addWeaponCargo.sqf @@ -53,11 +53,11 @@ if (isNull _config || {getNumber (_config >> "scope") < 1}) exitWith { }; if (_verify) then { - if (_container canAdd [_item, _count]) then { + if ([_container, _item, _count] call CBA_fnc_canAddItem) then { _container addWeaponCargoGlobal [_item, _count]; _return = true; } else { - while {_container canAdd _item && {_count > 0}} do { + while {[_container, _item] call CBA_fnc_canAddItem && {_count > 0}} do { _container addWeaponCargoGlobal [_item, 1]; _count = _count - 1; }; From 4df07026221cb4a59140f5c48255857bd8c431a5 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Tue, 8 Nov 2022 00:21:35 +0300 Subject: [PATCH 2/3] Add backpack support --- addons/common/fnc_canAddItem.sqf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/common/fnc_canAddItem.sqf b/addons/common/fnc_canAddItem.sqf index cd7ac35e4c..6f21a44fa8 100644 --- a/addons/common/fnc_canAddItem.sqf +++ b/addons/common/fnc_canAddItem.sqf @@ -54,6 +54,7 @@ if (isNil "_mass") then { _allowedSlots = [TYPE_UNIFORM, TYPE_VEST, TYPE_BACKPACK]; private _cfgWeaponsItem = configFile >> "CfgWeapons" >> _item; private _cfgMagazinesItem = configFile >> "CfgMagazines" >> _item; + private _cfgVehiclesItem = configFile >> "CfgVehicles" >> _item; private _cfgGlassesItem = configFile >> "CfgGlasses" >> _item; switch true do { case (isClass _cfgWeaponsItem): { @@ -75,9 +76,10 @@ if (isNil "_mass") then { _cfgWeaponSlotsInfo >> "allowedSlots" ]; }; - case (isClass _cfgMagazinesItem): { - _mass = getNumber (_cfgMagazinesItem >> "mass"); - private _cfgAllowedSlots = _cfgMagazinesItem >> "allowedSlots"; + case (isClass _cfgMagazinesItem || {isClass _cfgVehiclesItem}): { + private _cfgItem = [_cfgVehiclesItem, _cfgMagazinesItem] select isClass _cfgMagazinesItem; + _mass = getNumber (_cfgItem >> "mass"); + private _cfgAllowedSlots = _cfgItem >> "allowedSlots"; if (isArray _cfgAllowedSlots) then { _allowedSlots = getArray _cfgAllowedSlots; }; From 1f8158807141548f2f20537c89884fcb493276b5 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Tue, 8 Nov 2022 00:25:04 +0300 Subject: [PATCH 3/3] Fix float error --- addons/common/fnc_canAddItem.sqf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/common/fnc_canAddItem.sqf b/addons/common/fnc_canAddItem.sqf index 6f21a44fa8..d5a5dc92d4 100644 --- a/addons/common/fnc_canAddItem.sqf +++ b/addons/common/fnc_canAddItem.sqf @@ -43,6 +43,7 @@ if (isNull _unit || {_item isEqualTo ""}) exitWith {false}; #define TYPE_VEST 701 #define TYPE_UNIFORM 801 #define TYPE_BACKPACK 901 +#define FLOAT_CORRECTION 0.0001 if (isNil QGVAR(itemMassAllowedSlots)) then { GVAR(itemMassAllowedSlots) = createHashMap; @@ -107,7 +108,7 @@ if (_unit isKindOf "CAManBase") then { _mass == 0 || { // each time subtract whole number of items which can be put in container - _count = _count - floor (maxLoad uniformContainer _unit * (1 - loadUniform _unit) / _mass); + _count = _count - floor (maxLoad uniformContainer _unit * (1 - loadUniform _unit) / _mass + FLOAT_CORRECTION); _count <= 0 } } @@ -119,7 +120,7 @@ if (_unit isKindOf "CAManBase") then { && { _mass == 0 || { - _count = _count - floor (maxLoad vestContainer _unit * (1 - loadVest _unit) / _mass); + _count = _count - floor (maxLoad vestContainer _unit * (1 - loadVest _unit) / _mass + FLOAT_CORRECTION); _count <= 0 } } @@ -131,7 +132,7 @@ if (_unit isKindOf "CAManBase") then { && { _mass == 0 || { - _count = _count - floor (maxLoad backpackContainer _unit * (1 - loadBackpack _unit) / _mass); + _count = _count - floor (maxLoad backpackContainer _unit * (1 - loadBackpack _unit) / _mass + FLOAT_CORRECTION); _count <= 0 } } @@ -142,7 +143,7 @@ if (_unit isKindOf "CAManBase") then { // is a vehicle, crate etc. _mass == 0 || { - _count = _count - floor (maxLoad _unit * (1 - load _unit) / _mass); + _count = _count - floor (maxLoad _unit * (1 - load _unit) / _mass + FLOAT_CORRECTION); _count <= 0 } };