From 160a64cff8da5be39cb944be6b0cc2bcc3676de6 Mon Sep 17 00:00:00 2001 From: Casperento Date: Sat, 2 May 2020 14:02:49 -0300 Subject: [PATCH 1/7] first approach for new loadouts --- Altis_Life.Altis/config/Config_Loadouts.hpp | 147 +++++++++++------- .../core/functions/fn_startLoadout.sqf | 77 ++------- 2 files changed, 106 insertions(+), 118 deletions(-) diff --git a/Altis_Life.Altis/config/Config_Loadouts.hpp b/Altis_Life.Altis/config/Config_Loadouts.hpp index fe95238d1..18abbfc35 100755 --- a/Altis_Life.Altis/config/Config_Loadouts.hpp +++ b/Altis_Life.Altis/config/Config_Loadouts.hpp @@ -2,77 +2,118 @@ class PLAYERSIDE { // PLAYERSIDE can be: WEST (for cops), CIV (for civ/reb), GUER (for medics), EAST (for opfor) // NOTES: // empty array means that nothing will be add on players - // if you put more than a uniform on the CIV's class, they will be selected randonly, + // CIV's loadout are selected randonly if he is not in jail, // otherwise, for the other teams, player will get the uniform related to his level - itemType[] = { // itemType can be: uniform, vest, backpack, weapon, items or linkedItems - { "classname", "conditions" } + class lvl_X : lvl_base { // where X is a level of the selected team and inherits from lvl_base + uniformClass = ""; + backpack = ""; + linkedItems[] = {}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; }; }; */ +class lvl_base { + uniformClass = ""; + backpack = ""; + linkedItems[] = {"ItemMap","ItemCompass","ItemWatch"}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; +}; + class Loadouts { - // COP - class WEST { - uniform[] = { - {"U_Rangemaster", "call life_copLevel >= 0"} + // CIV + class CIV { + class lvl_arrested : lvl_base { + uniformClass = "U_C_WorkerCoveralls"; // Arrested player's uniform + linkedItems[] = {}; }; - vest[] = { - {"V_Rangemaster_belt", "call life_copLevel >= 0"} + class lvl_1 : lvl_base { + uniformClass = "U_C_Poloshirt_blue"; }; - backpack[] = {}; - weapon[] = { - {"hgun_P07_snds_F", "call life_copLevel >= 0"} + class lvl_2 : lvl_base { + uniformClass = "U_C_Poloshirt_burgundy"; }; - mags[] = { - {"16Rnd_9x21_Mag", 6, "call life_copLevel >= 0"} + class lvl_3 : lvl_base { + uniformClass = "U_C_Poloshirt_stripped"; }; - items[] = {}; - linkedItems[] = { - {"ItemMap", "call life_copLevel >= 0"}, - {"ItemCompass", "call life_copLevel >= 0"}, - {"ItemWatch", "call life_copLevel >= 0"} + class lvl_4 : lvl_base { + uniformClass = "U_C_Poloshirt_tricolour"; + }; + class lvl_5 : lvl_base { + uniformClass = "U_C_Poloshirt_salmon"; + }; + class lvl_6 : lvl_base { + uniformClass = "U_C_Poloshirt_redwhite"; + }; + class lvl_7 : lvl_base { + uniformClass = "U_C_Commoner1_1"; }; }; - // CIV - class CIV { - uniform[] = { - {"U_C_Poloshirt_blue", "!life_is_arrested"}, - {"U_C_Poloshirt_burgundy", "!life_is_arrested"}, - {"U_C_Poloshirt_stripped", "!life_is_arrested"}, - {"U_C_Poloshirt_tricolour", "!life_is_arrested"}, - {"U_C_Poloshirt_salmon", "!life_is_arrested"}, - {"U_C_Poloshirt_redwhite", "!life_is_arrested"}, - {"U_C_Commoner1_1", "!life_is_arrested"} - }; - vest[] = {}; - backpack[] = {}; - weapon[] = {}; - mags[] = {}; - items[] = {}; - linkedItems[] = { - {"ItemMap", ""}, - {"ItemCompass", ""}, - {"ItemWatch", ""} + // COP + class WEST { + class lvl_1 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_2 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_3 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_4 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_5 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_6 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; + }; + class lvl_7 : lvl_base { + uniformClass = "U_Rangemaster"; + weapons[] = {"hgun_P07_snds_F"}; + magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; }; }; // MED class GUER { - uniform[] = { - {"U_Rangemaster", "call life_medicLevel >= 1"} - }; - vest[] = {}; - backpack[] = {}; - weapon[] = {}; - mags[] = {}; - items[] = { - {"FirstAidKit", 2, "call life_medicLevel >= 1"} - }; - linkedItems[] = { - {"ItemMap", "call life_medicLevel >= 1"}, - {"ItemCompass", "call life_medicLevel >= 1"}, - {"ItemWatch", "call life_medicLevel >= 1"} + class lvl_1 : lvl_base { + uniformClass = "U_Rangemaster"; + items[] = {"FirstAidKit"}; + }; + class lvl_2 : lvl_base { + uniformClass = "U_Rangemaster"; + items[] = {"FirstAidKit"}; + }; + class lvl_3 : lvl_base { + uniformClass = "U_Rangemaster"; + items[] = {"FirstAidKit"}; + }; + class lvl_4 : lvl_base { + uniformClass = "U_Rangemaster"; + items[] = {"FirstAidKit"}; + }; + class lvl_5 : lvl_base { + uniformClass = "U_Rangemaster"; + items[] = {"FirstAidKit"}; }; }; }; diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index 92819ebc1..880f7d984 100755 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -6,76 +6,23 @@ Description: Loads a custom loadout on player when he got a new life */ -private _pUniform = M_CONFIG(getArray,"Loadouts",str(playerSide),"uniform"); -private _pVest = M_CONFIG(getArray,"Loadouts",str(playerSide),"vest"); -private _pBackpack = M_CONFIG(getArray,"Loadouts",str(playerSide),"backpack"); -private _pWeapon = M_CONFIG(getArray,"Loadouts",str(playerSide),"weapon"); -private _pMagazines = M_CONFIG(getArray,"Loadouts",str(playerSide),"mags"); -private _pItems = M_CONFIG(getArray,"Loadouts",str(playerSide),"items"); -private _linkedItems = M_CONFIG(getArray,"Loadouts",str(playerSide),"linkedItems"); - -if !(_pUniform isEqualTo []) then { - if (playerSide isEqualTo civilian) then { - _pUniform = selectRandom _pUniform; - if (!(_pUniform isEqualTo []) && {!((_pUniform select 0) isEqualTo "") && {([(_pUniform select 1)] call life_fnc_levelCheck)}}) then { - player forceAddUniform (_pUniform select 0); - }; - } else { - _pUniform apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {([(_x select 1)] call life_fnc_levelCheck)}}) then { - player forceAddUniform (_x select 0); - }; - }; - }; -}; - -if !(_pVest isEqualTo []) then { - _pVest apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {([(_x select 1)] call life_fnc_levelCheck)}}) then { - player addVest (_x select 0); +private _level = call { + if (playerSide isEqualTo civilian) exitWith { + if (life_is_arredted) then { + "arrested" + } else { + str(floor random [0, round(count(missionConfigFile >> "Loadouts" >> str(playerSide)-1)/2), count(missionConfigFile >> "Loadouts" >> str(playerSide))-1]) }; }; -}; - -if !(_pBackpack isEqualTo []) then { - _pBackpack apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {([(_x select 1)] call life_fnc_levelCheck)}}) then { - player addBackpack (_x select 0); - }; + if (playerSide isEqualTo west) exitWith { + str(FETCH_CONST(life_coplevel)) }; -}; - -if !(_pWeapon isEqualTo []) then { - _pWeapon apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {([(_x select 1)] call life_fnc_levelCheck)}}) then { - player addWeapon (_x select 0); - }; + if (playerSide isEqualTo independent) exitWith { + str(FETCH_CONST(life_mediclevel)) }; }; -if !(_pMagazines isEqualTo []) then { - _pMagazines apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {((_x select 1) > 0) && {([(_x select 2)] call life_fnc_levelCheck)}}}) then { - player addMagazines [(_x select 0),(_x select 1)]; - }; - }; -}; - -if !(_pItems isEqualTo []) then { - _pItems apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {((_x select 1) > 0) && {([(_x select 2)] call life_fnc_levelCheck)}}}) then { - for "_i" from 1 to (_x select 1) step 1 do {player addItem (_x select 0)}; - }; - }; -}; - -if !(_linkedItems isEqualTo []) then { - _linkedItems apply { - if (!(_x isEqualTo []) && {!((_x select 0) isEqualTo "") && {([(_x select 1)] call life_fnc_levelCheck)}}) then { - player linkItem (_x select 0); - }; - }; -}; +player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> "lvl_"+_level); [] call life_fnc_playerSkins; -[] call life_fnc_saveGear; +[] call life_fnc_saveGear; \ No newline at end of file From 3b9e4921ef61d81f11b3c9525e5b7ef8f1acaf04 Mon Sep 17 00:00:00 2001 From: Casperento Date: Sat, 2 May 2020 15:59:35 -0300 Subject: [PATCH 2/7] first suggestions and changes before testing --- Altis_Life.Altis/config/Config_Loadouts.hpp | 58 ++++--------------- .../core/functions/fn_startLoadout.sqf | 10 ++-- 2 files changed, 16 insertions(+), 52 deletions(-) diff --git a/Altis_Life.Altis/config/Config_Loadouts.hpp b/Altis_Life.Altis/config/Config_Loadouts.hpp index 18abbfc35..36b0d38d3 100755 --- a/Altis_Life.Altis/config/Config_Loadouts.hpp +++ b/Altis_Life.Altis/config/Config_Loadouts.hpp @@ -5,7 +5,7 @@ // CIV's loadout are selected randonly if he is not in jail, // otherwise, for the other teams, player will get the uniform related to his level - class lvl_X : lvl_base { // where X is a level of the selected team and inherits from lvl_base + class lvl_X : lvl_base { // where X is the level of the selected team and inherits from lvl_base uniformClass = ""; backpack = ""; linkedItems[] = {}; @@ -61,36 +61,12 @@ class Loadouts { weapons[] = {"hgun_P07_snds_F"}; magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; }; - class lvl_2 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_3 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_4 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_5 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_6 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_7 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; + class lvl_2 : lvl_1 {}; + class lvl_3 : lvl_1 {}; + class lvl_4 : lvl_1 {}; + class lvl_5 : lvl_1 {}; + class lvl_6 : lvl_1 {}; + class lvl_7 : lvl_1 {}; }; // MED @@ -99,21 +75,9 @@ class Loadouts { uniformClass = "U_Rangemaster"; items[] = {"FirstAidKit"}; }; - class lvl_2 : lvl_base { - uniformClass = "U_Rangemaster"; - items[] = {"FirstAidKit"}; - }; - class lvl_3 : lvl_base { - uniformClass = "U_Rangemaster"; - items[] = {"FirstAidKit"}; - }; - class lvl_4 : lvl_base { - uniformClass = "U_Rangemaster"; - items[] = {"FirstAidKit"}; - }; - class lvl_5 : lvl_base { - uniformClass = "U_Rangemaster"; - items[] = {"FirstAidKit"}; - }; + class lvl_2 : lvl_1 {}; + class lvl_3 : lvl_1 {}; + class lvl_4 : lvl_1 {}; + class lvl_5 : lvl_1 {}; }; }; diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index 880f7d984..6bfb956b8 100755 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -8,21 +8,21 @@ */ private _level = call { if (playerSide isEqualTo civilian) exitWith { - if (life_is_arredted) then { + if (life_is_arrested) then { "arrested" } else { - str(floor random [0, round(count(missionConfigFile >> "Loadouts" >> str(playerSide)-1)/2), count(missionConfigFile >> "Loadouts" >> str(playerSide))-1]) + floor random [0, round(count(missionConfigFile >> "Loadouts" >> str(playerSide))-1)/2), count(missionConfigFile >> "Loadouts" >> str(playerSide))-1] }; }; if (playerSide isEqualTo west) exitWith { - str(FETCH_CONST(life_coplevel)) + FETCH_CONST(life_coplevel) }; if (playerSide isEqualTo independent) exitWith { - str(FETCH_CONST(life_mediclevel)) + FETCH_CONST(life_mediclevel) }; }; -player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> "lvl_"+_level); +player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> format["lvl_",_level]); [] call life_fnc_playerSkins; [] call life_fnc_saveGear; \ No newline at end of file From e1ef710a04ec71141895955d5d73c77bee02f7de Mon Sep 17 00:00:00 2001 From: Casperento <44746868+Casperento@users.noreply.github.com> Date: Sun, 3 May 2020 16:49:08 -0300 Subject: [PATCH 3/7] Fixed working stuff --- Altis_Life.Altis/config/Config_Loadouts.hpp | 171 +++++++++--------- .../core/functions/fn_startLoadout.sqf | 54 +++--- 2 files changed, 115 insertions(+), 110 deletions(-) mode change 100755 => 100644 Altis_Life.Altis/config/Config_Loadouts.hpp mode change 100755 => 100644 Altis_Life.Altis/core/functions/fn_startLoadout.sqf diff --git a/Altis_Life.Altis/config/Config_Loadouts.hpp b/Altis_Life.Altis/config/Config_Loadouts.hpp old mode 100755 new mode 100644 index 36b0d38d3..b66c65769 --- a/Altis_Life.Altis/config/Config_Loadouts.hpp +++ b/Altis_Life.Altis/config/Config_Loadouts.hpp @@ -1,83 +1,88 @@ -/* - class PLAYERSIDE { // PLAYERSIDE can be: WEST (for cops), CIV (for civ/reb), GUER (for medics), EAST (for opfor) - // NOTES: - // empty array means that nothing will be add on players - // CIV's loadout are selected randonly if he is not in jail, - // otherwise, for the other teams, player will get the uniform related to his level - - class lvl_X : lvl_base { // where X is the level of the selected team and inherits from lvl_base - uniformClass = ""; - backpack = ""; - linkedItems[] = {}; - weapons[] = {}; - items[] = {}; - magazines[] = {}; - }; - }; -*/ -class lvl_base { - uniformClass = ""; - backpack = ""; - linkedItems[] = {"ItemMap","ItemCompass","ItemWatch"}; - weapons[] = {}; - items[] = {}; - magazines[] = {}; -}; - -class Loadouts { - // CIV - class CIV { - class lvl_arrested : lvl_base { - uniformClass = "U_C_WorkerCoveralls"; // Arrested player's uniform - linkedItems[] = {}; - }; - class lvl_1 : lvl_base { - uniformClass = "U_C_Poloshirt_blue"; - }; - class lvl_2 : lvl_base { - uniformClass = "U_C_Poloshirt_burgundy"; - }; - class lvl_3 : lvl_base { - uniformClass = "U_C_Poloshirt_stripped"; - }; - class lvl_4 : lvl_base { - uniformClass = "U_C_Poloshirt_tricolour"; - }; - class lvl_5 : lvl_base { - uniformClass = "U_C_Poloshirt_salmon"; - }; - class lvl_6 : lvl_base { - uniformClass = "U_C_Poloshirt_redwhite"; - }; - class lvl_7 : lvl_base { - uniformClass = "U_C_Commoner1_1"; - }; - }; - - // COP - class WEST { - class lvl_1 : lvl_base { - uniformClass = "U_Rangemaster"; - weapons[] = {"hgun_P07_snds_F"}; - magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag"}; - }; - class lvl_2 : lvl_1 {}; - class lvl_3 : lvl_1 {}; - class lvl_4 : lvl_1 {}; - class lvl_5 : lvl_1 {}; - class lvl_6 : lvl_1 {}; - class lvl_7 : lvl_1 {}; - }; - - // MED - class GUER { - class lvl_1 : lvl_base { - uniformClass = "U_Rangemaster"; - items[] = {"FirstAidKit"}; - }; - class lvl_2 : lvl_1 {}; - class lvl_3 : lvl_1 {}; - class lvl_4 : lvl_1 {}; - class lvl_5 : lvl_1 {}; - }; -}; +/* + class PLAYERSIDE { // PLAYERSIDE can be: WEST (for cops), CIV (for civ/reb), GUER (for medics), EAST (for opfor) + // NOTES: + // empty array means that nothing will be add on players + // CIV's loadout are selected randonly if he is not in jail, + // otherwise, for the other teams, player will get the uniform related to his level + + class lvl_X : lvl_0 { // where X is the level of the selected team and inherits from lvl_0 + uniformClass = ""; + backpack = ""; + linkedItems[] = {}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; + }; + }; +*/ +class Loadouts { + // CIV + class CIV { + class lvl_0 { + uniformClass = "U_C_Poloshirt_blue"; + backpack = ""; + linkedItems[] = {"ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; + }; + class lvl_1 : lvl_0 { + uniformClass = "U_C_Poloshirt_burgundy"; + }; + class lvl_2 : lvl_0 { + uniformClass = "U_C_Poloshirt_stripped"; + }; + class lvl_3 : lvl_0 { + uniformClass = "U_C_Poloshirt_tricolour"; + }; + class lvl_4 : lvl_0 { + uniformClass = "U_C_Poloshirt_salmon"; + }; + class lvl_5 : lvl_0 { + uniformClass = "U_C_Poloshirt_redwhite"; + }; + class lvl_6 : lvl_0 { + uniformClass = "U_C_Commoner1_1"; + }; + class lvl_arrested : lvl_0 { + uniformClass = "U_C_WorkerCoveralls"; // Arrested player's uniform + linkedItems[] = {}; + }; + }; + + // COP + class WEST { + class lvl_0 { + uniformClass = "U_Rangemaster"; + backpack = ""; + linkedItems[] = {"H_Cap_blk", "V_Rangemaster_belt", "ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {"hgun_P07_snds_F"}; + items[] = {}; + magazines[] = {"16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag"}; + }; + class lvl_1 : lvl_0 {}; + class lvl_2 : lvl_0 {}; + class lvl_3 : lvl_0 {}; + class lvl_4 : lvl_0 {}; + class lvl_5 : lvl_0 {}; + class lvl_6 : lvl_0 {}; + class lvl_7 : lvl_0 {}; + }; + + // MED + class GUER { + class lvl_0 { + uniformClass = "U_Rangemaster"; + backpack = ""; + linkedItems[] = {"H_Cap_red", "ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {}; + items[] = {"FirstAidKit", "FirstAidKit"}; + magazines[] = {}; + }; + class lvl_1 : lvl_0 {}; + class lvl_2 : lvl_0 {}; + class lvl_3 : lvl_0 {}; + class lvl_4 : lvl_0 {}; + class lvl_5 : lvl_0 {}; + }; +}; diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf old mode 100755 new mode 100644 index 6bfb956b8..146d55eb8 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -1,28 +1,28 @@ -#include "..\..\script_macros.hpp" -/* - File: fn_startLoadout.sqf - Author: Casperento - - Description: - Loads a custom loadout on player when he got a new life -*/ -private _level = call { - if (playerSide isEqualTo civilian) exitWith { - if (life_is_arrested) then { - "arrested" - } else { - floor random [0, round(count(missionConfigFile >> "Loadouts" >> str(playerSide))-1)/2), count(missionConfigFile >> "Loadouts" >> str(playerSide))-1] - }; - }; - if (playerSide isEqualTo west) exitWith { - FETCH_CONST(life_coplevel) - }; - if (playerSide isEqualTo independent) exitWith { - FETCH_CONST(life_mediclevel) - }; -}; - -player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> format["lvl_",_level]); - -[] call life_fnc_playerSkins; +#include "..\..\script_macros.hpp" +/* + File: fn_startLoadout.sqf + Author: Casperento + + Description: + Loads a custom loadout on player when he got a new life +*/ +private _level = call { + if (playerSide isEqualTo civilian) exitWith { + if (life_is_arrested) then { + "arrested" + } else { + floor(random (count(missionConfigFile >> "Loadouts" >> str(playerSide))-1)) + }; + }; + if (playerSide isEqualTo west) exitWith { + FETCH_CONST(life_coplevel) + }; + if (playerSide isEqualTo independent) exitWith { + FETCH_CONST(life_mediclevel) + }; +}; + +player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> format["lvl_%1",_level]); + +[] call life_fnc_playerSkins; [] call life_fnc_saveGear; \ No newline at end of file From 0fa097b06868e4930237b56e24c72181b5b1281b Mon Sep 17 00:00:00 2001 From: Casperento <44746868+Casperento@users.noreply.github.com> Date: Mon, 4 May 2020 19:56:56 -0300 Subject: [PATCH 4/7] Random selected uniforms for civ --- Altis_Life.Altis/config/Config_Loadouts.hpp | 105 +++++++----------- .../core/functions/fn_startLoadout.sqf | 31 +++++- 2 files changed, 69 insertions(+), 67 deletions(-) diff --git a/Altis_Life.Altis/config/Config_Loadouts.hpp b/Altis_Life.Altis/config/Config_Loadouts.hpp index b66c65769..777b5ae9b 100644 --- a/Altis_Life.Altis/config/Config_Loadouts.hpp +++ b/Altis_Life.Altis/config/Config_Loadouts.hpp @@ -5,7 +5,8 @@ // CIV's loadout are selected randonly if he is not in jail, // otherwise, for the other teams, player will get the uniform related to his level - class lvl_X : lvl_0 { // where X is the level of the selected team and inherits from lvl_0 + // Unit Loadout Array detailed information: https://community.bistudio.com/wiki/Unit_Loadout_Array + class side_level_X : side_level_0 { // where side can be: civ, cop or med. And X is a level number of the given side uniformClass = ""; backpack = ""; linkedItems[] = {}; @@ -17,72 +18,52 @@ */ class Loadouts { // CIV - class CIV { - class lvl_0 { - uniformClass = "U_C_Poloshirt_blue"; - backpack = ""; - linkedItems[] = {"ItemMap" , "ItemCompass", "ItemWatch"}; - weapons[] = {}; - items[] = {}; - magazines[] = {}; - }; - class lvl_1 : lvl_0 { - uniformClass = "U_C_Poloshirt_burgundy"; - }; - class lvl_2 : lvl_0 { - uniformClass = "U_C_Poloshirt_stripped"; - }; - class lvl_3 : lvl_0 { - uniformClass = "U_C_Poloshirt_tricolour"; - }; - class lvl_4 : lvl_0 { - uniformClass = "U_C_Poloshirt_salmon"; - }; - class lvl_5 : lvl_0 { - uniformClass = "U_C_Poloshirt_redwhite"; - }; - class lvl_6 : lvl_0 { - uniformClass = "U_C_Commoner1_1"; - }; - class lvl_arrested : lvl_0 { - uniformClass = "U_C_WorkerCoveralls"; // Arrested player's uniform - linkedItems[] = {}; - }; + class civ_level_random { + uniformClass = ""; + backpack = ""; + linkedItems[] = {"ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; + }; + class civ_level_arrested { // Arrested player's loadout + uniformClass = "U_C_WorkerCoveralls"; + backpack = ""; + linkedItems[] = {}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; }; // COP - class WEST { - class lvl_0 { - uniformClass = "U_Rangemaster"; - backpack = ""; - linkedItems[] = {"H_Cap_blk", "V_Rangemaster_belt", "ItemMap" , "ItemCompass", "ItemWatch"}; - weapons[] = {"hgun_P07_snds_F"}; - items[] = {}; - magazines[] = {"16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag"}; - }; - class lvl_1 : lvl_0 {}; - class lvl_2 : lvl_0 {}; - class lvl_3 : lvl_0 {}; - class lvl_4 : lvl_0 {}; - class lvl_5 : lvl_0 {}; - class lvl_6 : lvl_0 {}; - class lvl_7 : lvl_0 {}; + class cop_level_0 { + uniformClass = "U_Rangemaster"; + backpack = ""; + linkedItems[] = {"H_Cap_blk", "V_Rangemaster_belt", "ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {"hgun_P07_snds_F"}; + items[] = {}; + magazines[] = {"16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag"}; }; + class cop_level_1 : cop_level_0 {}; + class cop_level_2 : cop_level_0 {}; + class cop_level_3 : cop_level_0 {}; + class cop_level_4 : cop_level_0 {}; + class cop_level_5 : cop_level_0 {}; + class cop_level_6 : cop_level_0 {}; + class cop_level_7 : cop_level_0 {}; // MED - class GUER { - class lvl_0 { - uniformClass = "U_Rangemaster"; - backpack = ""; - linkedItems[] = {"H_Cap_red", "ItemMap" , "ItemCompass", "ItemWatch"}; - weapons[] = {}; - items[] = {"FirstAidKit", "FirstAidKit"}; - magazines[] = {}; - }; - class lvl_1 : lvl_0 {}; - class lvl_2 : lvl_0 {}; - class lvl_3 : lvl_0 {}; - class lvl_4 : lvl_0 {}; - class lvl_5 : lvl_0 {}; + class med_level_0 { + uniformClass = "U_Rangemaster"; + backpack = ""; + linkedItems[] = {"H_Cap_red", "ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {}; + items[] = {"FirstAidKit", "FirstAidKit"}; + magazines[] = {}; }; + class med_level_1 : med_level_0 {}; + class med_level_2 : med_level_0 {}; + class med_level_3 : med_level_0 {}; + class med_level_4 : med_level_0 {}; + class med_level_5 : med_level_0 {}; }; diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index 146d55eb8..e76d6717d 100644 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -6,23 +6,44 @@ Description: Loads a custom loadout on player when he got a new life */ +private _side = call { + if (playerSide isEqualTo civilian) exitWith {"civ"}; + if (playerSide isEqualTo west) exitWith {"cop"}; + if (playerSide isEqualTo independent) exitWith {"med"}; +}; + private _level = call { - if (playerSide isEqualTo civilian) exitWith { + if (_side isEqualTo "civ") exitWith { if (life_is_arrested) then { "arrested" } else { - floor(random (count(missionConfigFile >> "Loadouts" >> str(playerSide))-1)) + "random" }; }; - if (playerSide isEqualTo west) exitWith { + if (_side isEqualTo "cop") exitWith { FETCH_CONST(life_coplevel) }; - if (playerSide isEqualTo independent) exitWith { + if (_side isEqualTo "med") exitWith { FETCH_CONST(life_mediclevel) }; }; -player setUnitLoadout (missionConfigFile >> "Loadouts" >> str(playerSide) >> format["lvl_%1",_level]); +if (_side isEqualTo "civ" && _level isEqualTo "random") then { + private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random"); + private _arr = [ + "U_C_Poloshirt_blue", + "U_C_Poloshirt_burgundy", + "U_C_Poloshirt_stripped", + "U_C_Poloshirt_tricolour", + "U_C_Poloshirt_salmon", + "U_C_Poloshirt_redwhite", + "U_C_Commoner1_1" + ]; + _civLoadout set [3, [(selectRandom _arr), []]]; + player setUnitLoadout _civloadout; +} else { + player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]); +}; [] call life_fnc_playerSkins; [] call life_fnc_saveGear; \ No newline at end of file From 82c572e267099e26b53c72cac4f8fd6395d1fbd4 Mon Sep 17 00:00:00 2001 From: Casperento <44746868+Casperento@users.noreply.github.com> Date: Tue, 5 May 2020 11:15:17 -0300 Subject: [PATCH 5/7] civRandomCloting and more.. --- Altis_Life.Altis/config/Config_Loadouts.hpp | 16 +++++- .../core/functions/fn_startLoadout.sqf | 57 +++++++++---------- 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/Altis_Life.Altis/config/Config_Loadouts.hpp b/Altis_Life.Altis/config/Config_Loadouts.hpp index 777b5ae9b..f38e94db9 100644 --- a/Altis_Life.Altis/config/Config_Loadouts.hpp +++ b/Altis_Life.Altis/config/Config_Loadouts.hpp @@ -1,3 +1,5 @@ +#define true 1 +#define false 0 /* class PLAYERSIDE { // PLAYERSIDE can be: WEST (for cops), CIV (for civ/reb), GUER (for medics), EAST (for opfor) // NOTES: @@ -18,8 +20,10 @@ */ class Loadouts { // CIV + civilian_randomClothing = true; // true: select a random uniform from 'civRandomClothing' and adds into 'civ_level_random' class - false: use 'civ_level_random' class as it is + civRandomClothing[] = {"U_C_Poloshirt_blue", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_stripped", "U_C_Poloshirt_tricolour", "U_C_Poloshirt_salmon", "U_C_Poloshirt_redwhite", "U_C_Commoner1_1"}; // Clothes that a civilian can spawn with class civ_level_random { - uniformClass = ""; + uniformClass = "U_C_Commoner1_1"; backpack = ""; linkedItems[] = {"ItemMap" , "ItemCompass", "ItemWatch"}; weapons[] = {}; @@ -66,4 +70,14 @@ class Loadouts { class med_level_3 : med_level_0 {}; class med_level_4 : med_level_0 {}; class med_level_5 : med_level_0 {}; + + // EAST + class east_level_0 { + uniformClass = "U_C_Commoner1_1"; + backpack = ""; + linkedItems[] = {"ItemMap" , "ItemCompass", "ItemWatch"}; + weapons[] = {}; + items[] = {}; + magazines[] = {}; + }; }; diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index e76d6717d..6fec47390 100644 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -10,40 +10,39 @@ private _side = call { if (playerSide isEqualTo civilian) exitWith {"civ"}; if (playerSide isEqualTo west) exitWith {"cop"}; if (playerSide isEqualTo independent) exitWith {"med"}; + if (playerSide isEqualTo independent) exitWith {"east"}; }; -private _level = call { - if (_side isEqualTo "civ") exitWith { - if (life_is_arrested) then { - "arrested" - } else { - "random" +if (_side isEqualTo "civ") exitWith { + if (life_is_arrested) then { + player setUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_arrested"); + } else { + private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random"); + if (getNumber(missionConfigFile >> "Loadouts" >> "civilian_randomClothing") isEqualTo 1) then { + private _arr = getArray(missionConfigFile >> "Loadouts" >> "civRandomClothing"); + (_civLoadout select 3) set [0, (selectRandom _arr)]; }; + player setUnitLoadout _civLoadout; }; - if (_side isEqualTo "cop") exitWith { - FETCH_CONST(life_coplevel) - }; - if (_side isEqualTo "med") exitWith { - FETCH_CONST(life_mediclevel) - }; + + [] call life_fnc_playerSkins; + [] call life_fnc_saveGear; }; -if (_side isEqualTo "civ" && _level isEqualTo "random") then { - private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random"); - private _arr = [ - "U_C_Poloshirt_blue", - "U_C_Poloshirt_burgundy", - "U_C_Poloshirt_stripped", - "U_C_Poloshirt_tricolour", - "U_C_Poloshirt_salmon", - "U_C_Poloshirt_redwhite", - "U_C_Commoner1_1" - ]; - _civLoadout set [3, [(selectRandom _arr), []]]; - player setUnitLoadout _civloadout; -} else { - player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]); +if (_side isEqualTo "cop") exitWith { + player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, FETCH_CONST(life_coplevel)]); + [] call life_fnc_playerSkins; + [] call life_fnc_saveGear; }; -[] call life_fnc_playerSkins; -[] call life_fnc_saveGear; \ No newline at end of file +if (_side isEqualTo "med") exitWith { + player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, FETCH_CONST(life_mediclevel)]); + [] call life_fnc_playerSkins; + [] call life_fnc_saveGear; +}; + +if (_side isEqualTo "east") exitWith { + player setUnitLoadout (missionConfigFile >> "Loadouts" >> "east_level_0"); + [] call life_fnc_playerSkins; + [] call life_fnc_saveGear; +}; From b743295a0963d5be69395a64464a98af7293c495 Mon Sep 17 00:00:00 2001 From: Casperento <44746868+Casperento@users.noreply.github.com> Date: Tue, 5 May 2020 13:20:00 -0300 Subject: [PATCH 6/7] clean startLoadout.. --- .../core/functions/fn_startLoadout.sqf | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index 6fec47390..c4ad08b59 100644 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -10,39 +10,30 @@ private _side = call { if (playerSide isEqualTo civilian) exitWith {"civ"}; if (playerSide isEqualTo west) exitWith {"cop"}; if (playerSide isEqualTo independent) exitWith {"med"}; - if (playerSide isEqualTo independent) exitWith {"east"}; + if (playerSide isEqualTo east) exitWith {"east"}; }; -if (_side isEqualTo "civ") exitWith { - if (life_is_arrested) then { +if (_side isEqualTo "civ") then { + if (life_is_arrested) exitWith { player setUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_arrested"); - } else { - private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random"); - if (getNumber(missionConfigFile >> "Loadouts" >> "civilian_randomClothing") isEqualTo 1) then { - private _arr = getArray(missionConfigFile >> "Loadouts" >> "civRandomClothing"); - (_civLoadout select 3) set [0, (selectRandom _arr)]; - }; - player setUnitLoadout _civLoadout; }; - [] call life_fnc_playerSkins; - [] call life_fnc_saveGear; -}; + private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random"); + if (getNumber(missionConfigFile >> "Loadouts" >> "civilian_randomClothing") isEqualTo 1) then { + private _arr = getArray(missionConfigFile >> "Loadouts" >> "civRandomClothing"); + (_civLoadout select 3) set [0, selectRandom _arr]; + }; + player setUnitLoadout _civLoadout; -if (_side isEqualTo "cop") exitWith { - player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, FETCH_CONST(life_coplevel)]); - [] call life_fnc_playerSkins; - [] call life_fnc_saveGear; -}; +} else { + private _level = call { + if (_side isEqualTo "cop") exitWith {FETCH_CONST(life_coplevel)}; + if (_side isEqualTo "med") exitWith {FETCH_CONST(life_mediclevel)}; + if (_side isEqualTo "east") exitWith {0}; + }; + player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]); -if (_side isEqualTo "med") exitWith { - player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, FETCH_CONST(life_mediclevel)]); - [] call life_fnc_playerSkins; - [] call life_fnc_saveGear; }; -if (_side isEqualTo "east") exitWith { - player setUnitLoadout (missionConfigFile >> "Loadouts" >> "east_level_0"); - [] call life_fnc_playerSkins; - [] call life_fnc_saveGear; -}; +[] call life_fnc_playerSkins; +[] call life_fnc_saveGear; \ No newline at end of file From 3b57188bcdcd1e2669fbf77febcc886f29aa5512 Mon Sep 17 00:00:00 2001 From: Rafael <44746868+Casperento@users.noreply.github.com> Date: Tue, 5 May 2020 17:59:34 +0000 Subject: [PATCH 7/7] delete sweet whitespaces --- Altis_Life.Altis/core/functions/fn_startLoadout.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf index c4ad08b59..2a6b38e32 100644 --- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf +++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf @@ -24,7 +24,6 @@ if (_side isEqualTo "civ") then { (_civLoadout select 3) set [0, selectRandom _arr]; }; player setUnitLoadout _civLoadout; - } else { private _level = call { if (_side isEqualTo "cop") exitWith {FETCH_CONST(life_coplevel)}; @@ -32,8 +31,7 @@ if (_side isEqualTo "civ") then { if (_side isEqualTo "east") exitWith {0}; }; player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]); - }; [] call life_fnc_playerSkins; -[] call life_fnc_saveGear; \ No newline at end of file +[] call life_fnc_saveGear;