_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_fn_swapPlayerContainer; //example //["H_HelmetB_grass","U_B_CombatUniform_mcam","V_PlateCarrier1_rgr",""] call fn_swapPlayerContainer; //////////////////////////////////////////////////////////////////////// //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 };