Common - Use existing weapon holders for FUNC(addToInventory) (#9895)

* Reuse existing weapon holders

* Update fnc_addToInventory.sqf

* Return correct weapon holder
This commit is contained in:
johnb432 2024-04-02 23:07:45 +02:00 committed by GitHub
parent cc3fbc5f3f
commit 613fc36385
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,7 +1,7 @@
#include "..\script_component.hpp" #include "..\script_component.hpp"
/* /*
* Author: Garth 'L-H' de Wet * Author: Garth 'L-H' de Wet
* Adds an item, weapon, or magazine to the unit's inventory or places it in a weaponHolder if no space. * Adds an item, weapon, or magazine to the unit's inventory or places it in a weapon holder if no space.
* *
* Arguments: * Arguments:
* 0: Unit <OBJECT> * 0: Unit <OBJECT>
@ -11,10 +11,10 @@
* *
* Return Value: * Return Value:
* 0: Added to player <BOOL> * 0: Added to player <BOOL>
* 1: weaponholder <OBJECT> * 1: Weapon holder item was placed in <OBJECT>
* *
* Example: * Example:
* [bob, "classname", "", 5] call ace_common_fnc_addToInventory * [player, "30Rnd_65x39_caseless_mag", "", 5] call ace_common_fnc_addToInventory
* *
* Public: Yes * Public: Yes
*/ */
@ -26,6 +26,7 @@ private _type = _classname call FUNC(getItemType);
private _canAdd = false; private _canAdd = false;
private _canFitWeaponSlot = false; private _canFitWeaponSlot = false;
private _addedToUnit = false; private _addedToUnit = false;
private _weaponHolder = _unit;
switch (_container) do { switch (_container) do {
case "vest": { case "vest": {
@ -94,11 +95,13 @@ switch (_type select 0) do {
} else { } else {
_addedToUnit = false; _addedToUnit = false;
private _pos = _unit modelToWorldVisual [0,1,0.05]; _weaponHolder = nearestObject [_unit, "WeaponHolder"];
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
_unit addWeaponCargoGlobal [_classname, 1]; _weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
_unit setPosATL _pos; };
_weaponHolder addWeaponCargoGlobal [_classname, 1];
}; };
}; };
@ -127,11 +130,13 @@ switch (_type select 0) do {
} else { } else {
_addedToUnit = false; _addedToUnit = false;
private _pos = _unit modelToWorldVisual [0,1,0.05]; _weaponHolder = nearestObject [_unit, "WeaponHolder"];
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
_unit addMagazineAmmoCargo [_classname, 1, _ammoCount]; _weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
_unit setPosATL _pos; };
_weaponHolder addMagazineAmmoCargo [_classname, 1, _ammoCount];
}; };
}; };
@ -156,11 +161,13 @@ switch (_type select 0) do {
} else { } else {
_addedToUnit = false; _addedToUnit = false;
private _pos = _unit modelToWorldVisual [0,1,0.05]; _weaponHolder = nearestObject [_unit, "WeaponHolder"];
_unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; if (isNull _weaponHolder || {_unit distance _weaponHolder > 2}) then {
_unit addItemCargoGlobal [_classname, 1]; _weaponHolder = createVehicle ["GroundWeaponHolder", _unit, [], 0, "CAN_COLLIDE"];
_unit setPosATL _pos; };
_weaponHolder addItemCargoGlobal [_classname, 1];
}; };
}; };
@ -170,4 +177,4 @@ switch (_type select 0) do {
}; };
}; };
[_addedToUnit, _unit] [_addedToUnit, _weaponHolder]