diff --git a/fn_swapPlayerContainer b/fn_swapPlayerContainer new file mode 100644 index 0000000..d9dc451 --- /dev/null +++ b/fn_swapPlayerContainer @@ -0,0 +1,225 @@ +_uniform = _this select 0; +_caller = player; + +// use classnames for each, for any blank simply leave as "" +//any blank slots will use existing slots classname +//["helmet","uniform","vest","backpack"] call TAGG_fnc_VestSwap; + +//example +//["H_HelmetB_grass","U_B_CombatUniform_mcam","V_PlateCarrier1_rgr",""] call TAGG_fnc_VestSwap; + +//////////////////////////////////////////////////////////////////////// +//HEADGEAR +//////////////////////////////////////////////////////////////////////// + + _newHelm = _this select 0; + _strCount = count str _newHelm; + if (_strCount < 3) then {_newHelm = headgear _caller} else {_newHelm = _this select 0;}; + removeHeadgear _caller; + _caller addHeadgear _newHelm; + +//////////////////////////////////////////////////////////////////////// +//UNIFORM +//////////////////////////////////////////////////////////////////////// + +//if blank use what unit currently has + _newContainer = _this select 1; + _strCount = count str _newContainer; + if (_strCount < 3) then {_newContainer = uniform _caller} else {_newContainer = _this select 1;}; + +//get magazines and item arrays (nested) + _contentMagVest = getMagazineCargo uniformContainer _caller; + _contentItemVest = getItemCargo uniformContainer _caller; + +//remove container and add new one + removeUniform _caller; + _caller addUniform _newContainer; + +//get magazine and item classname arrays + _vestMagArray = _contentMagVest select 0; + _vestItemArray = _contentItemVest select 0; + +//count how many indexes in array + _countMags = count _vestMagArray; + _countItems = count _vestItemArray; + +//fill magazine loop + while {_countMags > 0} do { + +//select first classname from array + _magToAdd = _vestMagArray select 0; +//select which to remove after loop + _magAmountArray = _contentMagVest select 1; +//select how many to add from array + _magAmountToAdd = _magAmountArray select 0; + +//fill container + for "_i" from 1 to _magAmountToAdd do { + _caller addItemToUniform _magToAdd; + }; +//remove from respective indexes + _countMags = _countMags -1; + _vestMagArray deleteAt 0; + _magAmountArray deleteAt 0; +//loop complete + }; + +//fill item loop + while {_countItems > 0} do { + + +//select first classname from array + _itemToAdd = _vestItemArray select 0; +//select which to remove after loop + _itemAmountArray = _contentitemVest select 1; +//select how many to add from array + _itemAmountToAdd = _itemAmountArray select 0; + +//fill container + for "_i" from 1 to _itemAmountToAdd do{ + _caller addItemToUniform _itemToAdd; + }; +//remove from respective indexes + _countItems = _countItems -1; + _vestItemArray deleteAt 0; + _itemAmountArray deleteAt 0; +//loop complete + }; + +//////////////////////////////////////////////////////////////////////// +//VEST +//////////////////////////////////////////////////////////////////////// + +//if blank use what unit currently has + _newContainer = _this select 2; + _strCount = count str _newContainer; + if (_strCount < 3) then {_newContainer = vest _caller} else {_newContainer = _this select 2;}; + +//get magazines and item arrays + _contentMagVest = getMagazineCargo vestContainer _caller; + _contentItemVest = getItemCargo vestContainer _caller; + +//remove container and add new one + removeVest _caller; + _caller addVest _newContainer; + +//get magazine and item classname arrays + _vestMagArray = _contentMagVest select 0; + _vestItemArray = _contentItemVest select 0; + +//count how many indexes in array + _countMags = count _vestMagArray; + _countItems = count _vestItemArray; + +//fill magazine loop + while {_countMags > 0} do { + +//select first classname from array + _magToAdd = _vestMagArray select 0; +//select which to remove after loop + _magAmountArray = _contentMagVest select 1; +//select how many to add from array + _magAmountToAdd = _magAmountArray select 0; + +//fill container + for "_i" from 1 to _magAmountToAdd do{ + _caller addItemToVest _magToAdd; + }; +//remove from respective indexes + _countMags = _countMags -1; + _vestMagArray deleteAt 0; + _magAmountArray deleteAt 0; +//loop complete + }; + +//fill item loop + while {_countItems > 0} do { + +//select first classname from array + _itemToAdd = _vestItemArray select 0; +//select which to remove after loop + _itemAmountArray = _contentitemVest select 1; +//select how many to add from array + _itemAmountToAdd = _itemAmountArray select 0; + +//fill container + for "_i" from 1 to _itemAmountToAdd do{ + _caller addItemToVest _itemToAdd; + }; +//remove from respective indexes + _countItems = _countItems -1; + _vestItemArray deleteAt 0; + _itemAmountArray deleteAt 0; + +//loop complete + }; + +//////////////////////////////////////////////////////////////////////// +//BACKPACK +//////////////////////////////////////////////////////////////////////// + +//if blank use what unit currently has + _newContainer = _this select 3; + _strCount = count str _newContainer; + if (_strCount < 3) then {_newContainer = backpack _caller} else {_newContainer = _this select 3;}; + +//get magazines and item arrays + _contentMagBackpack = getMagazineCargo backpackContainer _caller; + _contentItemBackpack = getItemCargo backpackContainer _caller; + +//remove container and add new one + removeBackpack _caller; + _caller addBackpack _newContainer; + +//get magazine and item classname arrays + _backpackMagArray = _contentMagbackpack select 0; + _backpackItemArray = _contentItembackpack select 0; + +//count how many indexes in array + _countMags = count _backpackMagArray; + _countItems = count _backpackItemArray; + +//fill magazine loop + while {_countMags > 0} do { + +//select first classname from array + _magToAdd = _backpackMagArray select 0; + +//select which to remove after loop + _magAmountArray = _contentMagbackpack select 1; +//select how many to add from array + _magAmountToAdd = _magAmountArray select 0; + +//fill container + for "_i" from 1 to _magAmountToAdd do{ + _caller addItemToVest _magToAdd; + }; +//remove from respective indexes + _countMags = _countMags -1; + _backpackMagArray deleteAt 0; + _magAmountArray deleteAt 0; + +//loop complete + }; + +//fill item loop + while {_countItems > 0} do { + +//select first classname from array + _itemToAdd = _backpackItemArray select 0; + +//select which to remove after loop + _itemAmountArray = _contentitembackpack select 1; +//select how many to add from array + _itemAmountToAdd = _itemAmountArray select 0; + +//fill container + for "_i" from 1 to _itemAmountToAdd do{ + _caller addItemToBackpack _itemToAdd; + }; +//remove from respective indexes + _countItems = _countItems -1; + _backpackItemArray deleteAt 0; + _itemAmountArray deleteAt 0; +//loop complete + }; \ No newline at end of file