marki980908 23 Posted September 23, 2021 Evening, I am having some trouble with config file. I am trying to retexture some default game uniforms and other gear (keep in mind I have no idea what I am doing) and I ran into few problems: 1. Both vests when I spawn them are default color tan variants and not retextured variants. (CSAT Harness) 2. I can see 3 versions of "Gorka (white)" in the arsenal. One just makes my character naked, and other 2 makes my character into folded piece of clothing (model when you drop clothing item). Here is my config: P.S. Helmet works perfectly fine Spoiler class cfgPatches { class OdinUniformRetextures { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F"}; }; }; //************************************************************************************************************************************************************************************************ //***** Factions ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class cfgFactionClasses { class Custom_Faction { displayName = "ODIN Demo"; priority = 3; // Position in list. side = 1; // Opfor = 0, Blufor = 1, Indep = 2. icon = ""; //Custom Icon }; }; class UniformSlotInfo { slotType = 0; linkProxy = "-"; }; class cfgWeapons { //******************************************************************************************************************************************************************************************** //***** Uniforms ***************************************************************************************************************************************************** //******************************************************************************************************************************************************************************************** class ItemCore; class UniformItem; class Uniform_Base: ItemCore { class ItemInfo; }; class Gorka_White: Uniform_Base { scope = 2; displayName = "Gorka (White)"; picture = "-"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_civilian_F.p3d"; class ItemInfo : UniformItem { uniformClass = "Gorka_White_1"; containerClass = "Supply50"; mass = 30; }; }; class Gorka_CSAT_White: Uniform_Base { scope = 2; displayName = "Gorka (White)"; picture = "-"; model = "\A3\Characters_F\OPFOR\o_soldier_01.p3d.p3d"; class ItemInfo : UniformItem { uniformClass = "Gorka_White_1"; containerClass = "Supply50"; mass = 30; }; }; //************************************************************************************************************************************************************************************************ //***** Vests ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class VestItem; class Vest_Camo_Base: ItemCore { class ItemInfo; }; class Odin_Harness_White_1: Vest_Camo_Base { scope = 2; displayName = "Light Harness (White)"; picture = "-"; model = "\A3\Characters_F\OPFOR\equip_o_vest01.p3d"; hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\OPFOR\equip_o_vest01.p3d"; containerClass = "Supply120"; mass = 80; armor = "5"; passThrough = 0.3; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa"}; }; }; class Odin_Harness_White_2: Vest_Camo_Base { scope = 2; displayName = "GL Harness (White)"; picture = "-"; model = "\A3\Characters_F\OPFOR\equip_o_vest_gl.p3d"; hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\HarnessLight_White.paa"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\OPFOR\equip_o_vest_gl.p3d"; containerClass = "Supply120"; mass = 80; armor = "5"; passThrough = 0.3; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\HarnessLight_White.paa"}; }; }; //************************************************************************************************************************************************************************************************ //***** Headgear ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class H_HelmetB: ItemCore { class ItemInfo; }; class Odin_Avenger_White_1: H_HelmetB { displayName = "Avenger Helmet"; picture = ""; model = "\A3\Characters_F_Enoch\Headgear\H_HelmetAggressor_01_cover_F.p3d"; hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"\ODIN_Uniforms\Data\Helmet_Avenger_White.paa"}; class ItemInfo: ItemInfo { mass = 20; allowedSlots[] = {901,605}; uniformModel = "\A3\Characters_F_Enoch\Headgear\H_HelmetAggressor_01_cover_F.p3d"; modelSides[] = {3,1}; hiddenSelections[] = {"Camo"}; armor = "3*0.4"; passThrough = 0.65; }; }; }; class CfgVehicles { //************************************************************************************************************************************************************************************************ //***** Units ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class B_Soldier_F; class Gorka_White_1: B_soldier_F { author = "Marki"; _generalMacro = "B_soldier_F"; scope = 1; displayName = "White Gorka Soldier"; identityTypes[] = {"Head_NATO", "G_NATO_default"}; genericNames = "NATOMen"; faction = "ODIN_Demo"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_civilian_F.p3d"; //Default NATO uniformClass = "Gorka_White"; hiddenSelections[] = {"Camo","Insignia"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Gorka_White.paa"}; weapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; respawnWeapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; magazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; respawnMagazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; linkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; respawnLinkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; }; class Gorka_CSAT_White_1: B_soldier_F { author = "Marki"; _generalMacro = "B_soldier_F"; scope = 1; displayName = "White Gorka Soldier"; identityTypes[] = {"Head_NATO", "G_NATO_default"}; genericNames = "NATOMen"; faction = "ODIN_Demo"; model = "\A3\Characters_F\OPFOR\o_soldier_01.p3d"; //Default NATO uniformClass = "Gorka_CSAT_White"; hiddenSelections[] = {"Camo","Insignia"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa"}; weapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; respawnWeapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; magazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; respawnMagazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; linkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; respawnLinkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; }; }; Share this post Link to post Share on other sites
drebin052 323 Posted September 23, 2021 1. The "camo" selection doesn't exist for those models. Your vests are missing two selection definitions hence why it defaults to the coyote brown colour scheme. The LBV Harness/LBV Grenadier Harness models (equip_o_vest_gl.p3d and equip_o_vest01.p3d) utilise camo1 and camo2 for selections; camo1's texture is based on clothing_co.paa while camo2 is based on tech_co.paa. 2. You see identical versions of the same uniform because you're using the same displayName for both of them. Also, you are using the wrong model for the CfgWeapons uniform class; that should only be a suitpack model and not the actual uniform model (that should only be used for the CfgVehicles entry). Additionally, it has a second .p3d suffixed after it which is not necessary and will most likely give you an error since no model for "o_soldier_01.p3d.p3d" exists. I also noticed that you have both uniforms based on the same uniformClass (Gorka_White_1) while Gorka_CSAT_White_1 goes completely unused. Share this post Link to post Share on other sites
marki980908 23 Posted September 23, 2021 3 hours ago, drebin052 said: 1. The "camo" selection doesn't exist for those models. Your vests are missing two selection definitions hence why it defaults to the coyote brown colour scheme. The LBV Harness/LBV Grenadier Harness models (equip_o_vest_gl.p3d and equip_o_vest01.p3d) utilise camo1 and camo2 for selections; camo1's texture is based on clothing_co.paa while camo2 is based on tech_co.paa. 2. You see identical versions of the same uniform because you're using the same displayName for both of them. Also, you are using the wrong model for the CfgWeapons uniform class; that should only be a suitpack model and not the actual uniform model (that should only be used for the CfgVehicles entry). Additionally, it has a second .p3d suffixed after it which is not necessary and will most likely give you an error since no model for "o_soldier_01.p3d.p3d" exists. I also noticed that you have both uniforms based on the same uniformClass (Gorka_White_1) while Gorka_CSAT_White_1 goes completely unused. Thanks, I managed to get the vest to show up, with correct texture, however pouches are not there. In regards of Gorka, I am pretty sure I have the wrong p3d for contact one atleast. In regards of CSAT uniform, it is there and visible, just has default camo, I assume it probably goes by camo1 and camo2 Share this post Link to post Share on other sites
drebin052 323 Posted September 24, 2021 Nope. gorka_01_F.p3d only uses one selection (camo_1) but it's named differently from most other models so it's easy to get it mixed up. As for the missing missing pouches on the LBV, you need to have a second texture based on tech_co.paa defined in the hiddenSelectionsTextures[] array. This also applies to any uniforms based on the CSAT Fatigues since it also uses camo1 and camo2: In CfgWeapons (for the vest classes): class CfgWeapons { // ... hiddenSelections[]= { "camo1", "camo2" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... class ItemInfo: ItemInfo { // ... hiddenSelections[]= { "camo1", "camo2" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... }; // ... }; In CfgVehicles (for the uniform class): class CfgVehicles { // ... hiddenSelections[]= { "Camo1", "Camo2", "insignia" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... }; Share this post Link to post Share on other sites
marki980908 23 Posted September 24, 2021 10 hours ago, drebin052 said: Nope. gorka_01_F.p3d only uses one selection (camo_1) but it's named differently from most other models so it's easy to get it mixed up. As for the missing missing pouches on the LBV, you need to have a second texture based on tech_co.paa defined in the hiddenSelectionsTextures[] array. This also applies to any uniforms based on the CSAT Fatigues since it also uses camo1 and camo2: In CfgWeapons (for the vest classes): class CfgWeapons { // ... hiddenSelections[]= { "camo1", "camo2" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... class ItemInfo: ItemInfo { // ... hiddenSelections[]= { "camo1", "camo2" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... }; // ... }; In CfgVehicles (for the uniform class): class CfgVehicles { // ... hiddenSelections[]= { "Camo1", "Camo2", "insignia" }; hiddenSelectionsTextures[]= { "\A3\Characters_F\OPFOR\Data\clothing_co.paa", "\A3\Characters_F\OPFOR\Data\tech_CO.paa" }; // ... }; Thanks A LOT. It works now. More or less atleast. In regards of what I said about Gorka, I mean that I have no idea the p3d destination for Contact DLC Gorka. So that is the problem is regards of retexturing that one. Also, one more issue. I cant find where in my code I done this: Spoiler Bodysuit is CSAT Uniform retextured to be Snow White, Gorka (White) is suppose to be Contact DLC gorka, but I realised my p3d destination is wrong. However "Blank" Gorka (White), no idea where that came from. Here is a copy of config again: Spoiler class cfgPatches { class OdinUniformRetextures { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F"}; }; }; //************************************************************************************************************************************************************************************************ //***** Factions ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class cfgFactionClasses { class Custom_Faction { displayName = "ODIN Demo"; priority = 3; // Position in list. side = 1; // Opfor = 0, Blufor = 1, Indep = 2. icon = ""; //Custom Icon }; }; class UniformSlotInfo { slotType = 0; linkProxy = "-"; }; class cfgWeapons { //******************************************************************************************************************************************************************************************** //***** Uniforms ***************************************************************************************************************************************************** //******************************************************************************************************************************************************************************************** class ItemCore; class UniformItem; class Uniform_Base: ItemCore { class ItemInfo; }; class Gorka_White: Uniform_Base //match with vehicle soldier { scope = 2; displayName = "Gorka (White)"; picture = "-"; model = "\A3\characters_f_beta\INDEP\ia_soldier_01.p3d"; class ItemInfo : UniformItem { uniformClass = "Gorka_White_1"; //match with vehicle soldier containerClass = "Supply50"; mass = 30; }; }; class Gorka_CSAT_White: Uniform_Base //match with vehicle soldier { scope = 2; displayName = "Bodysuit (White)"; picture = "-"; model = "\A3\characters_f_beta\INDEP\ia_soldier_01.p3d"; class ItemInfo : UniformItem { uniformClass = "Gorka_White_2"; //match with vehicle soldier containerClass = "Supply50"; mass = 30; }; }; //************************************************************************************************************************************************************************************************ //***** Vests ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class VestItem; class Vest_Camo_Base: ItemCore { class ItemInfo; }; class Odin_Harness_White_1: Vest_Camo_Base { scope = 2; displayName = "Light Harness (White)"; picture = "-"; model = "\A3\Characters_F\OPFOR\equip_o_vest01.p3d"; hiddenSelections[] = {"camo1","camo2"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa","ODIN_Uniforms\Data\HarnessLight_White.paa"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\OPFOR\equip_o_vest01.p3d"; containerClass = "Supply120"; mass = 80; armor = "5"; passThrough = 0.3; hiddenSelections[] = {"camo1","camo2"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa","ODIN_Uniforms\Data\HarnessLight_White.paa"}; }; }; class Odin_Harness_White_2: Vest_Camo_Base { scope = 2; displayName = "GL Harness (White)"; picture = "-"; model = "\A3\Characters_F\OPFOR\equip_o_vest_gl.p3d"; hiddenSelections[] = {"camo1","camo2"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa","ODIN_Uniforms\Data\HarnessLight_White.paa"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\OPFOR\equip_o_vest_gl.p3d"; containerClass = "Supply120"; mass = 80; armor = "5"; passThrough = 0.3; hiddenSelections[] = {"camo1","camo2"}; hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa","ODIN_Uniforms\Data\HarnessLight_White.paa"}; }; }; //************************************************************************************************************************************************************************************************ //***** Headgear ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class H_HelmetB: ItemCore { class ItemInfo; }; class Odin_Avenger_White_1: H_HelmetB { displayName = "Avenger Helmet"; picture = ""; model = "\A3\Characters_F_Enoch\Headgear\H_HelmetAggressor_01_cover_F.p3d"; hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"\ODIN_Uniforms\Data\Helmet_Avenger_White.paa"}; class ItemInfo: ItemInfo { mass = 20; allowedSlots[] = {901,605}; uniformModel = "\A3\Characters_F_Enoch\Headgear\H_HelmetAggressor_01_cover_F.p3d"; modelSides[] = {3,1}; hiddenSelections[] = {"Camo"}; armor = "3*0.4"; passThrough = 0.65; }; }; }; class CfgVehicles { //************************************************************************************************************************************************************************************************ //***** Units ********************************************************************************************************************************************************* //************************************************************************************************************************************************************************************************ class B_Soldier_F; class Gorka_White_1: B_soldier_F //Match with Uniform { author = "Marki"; _generalMacro = "B_soldier_F"; scope = 1; displayName = "Odin Soldier"; identityTypes[] = {"Head_NATO", "G_NATO_default"}; genericNames = "NATOMen"; faction = "ODIN_Demo"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_civilian_F.p3d"; //Actual uniform location uniformClass = "Gorka_White"; //Match with the Uniform hiddenSelections[] = {"Camo","Insignia"}; //if Textures dont show, edit hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Gorka_White.paa"}; //Actual Texture weapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; respawnWeapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; magazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; respawnMagazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; linkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; respawnLinkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; }; class Gorka_White_2: B_soldier_F //Match with Uniform { author = "Marki"; _generalMacro = "B_soldier_F"; scope = 1; displayName = "Odin Soldier"; identityTypes[] = {"Head_NATO", "G_NATO_default"}; genericNames = "NATOMen"; faction = "ODIN_Demo"; model = "\A3\Characters_F\OPFOR\o_soldier_01.p3d"; //Actual uniform location uniformClass = "Gorka_CSAT_White"; //Match with the Uniform hiddenSelections[] = {"Camo1","Insignia"}; //if Textures dont show, edit hiddenSelectionsTextures[] = {"ODIN_Uniforms\Data\Uniform_Vest_Rus_White.paa"}; //Actual Texture weapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; respawnWeapons[] = {"arifle_TRG20_ACO_Flash_F","Throw","Put"}; magazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; respawnMagazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"}; linkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; respawnLinkedItems[] = {"CUstom_Helmet1","Custom_Vest1","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; }; }; Share this post Link to post Share on other sites
drebin052 323 Posted September 24, 2021 The filepath for the Tracksuit/Granit's model is \a3\characters_f_enoch\uniforms\gorka_01_f.p3d With regards to the duplicate uniform...not sure. The config you've provided has no classname listed for "Odin_Gorka_White_1" so I suspect you may have another config packed elsewhere in your addon. Double check to see if you can find that classname in any of your other configs. By the way, I would recommend that you change your CfgPatches loadorder to the following setup: class CfgPatches { class OdinUniformRetextures { requiredAddons[]= { "A3_Data_F_AoW_Loadorder" }; requiredVersion=0.1; units[]={}; weapons[]= { "Gorka_White", "Gorka_CSAT_White", "Odin_Harness_White_1", "Odin_Harness_White_2", "Odin_Avenger_White_1" }; }; }; A3_Data_F_AoW_Loadorder should be the value for requiredAddons[] as the Art of War DLC is the latest loadorder in Arma 3's hierarchy and ensures that everything in vanilla gets loaded first before your addon does (A3_Characters_F is for stuff from the Alpha). weapons[] array needs to be populated with the classnames of your custom uniforms, vests and helmets to prevent potential issues with the Virtual Arsenal and Zeus. 1 Share this post Link to post Share on other sites
marki980908 23 Posted September 25, 2021 23 hours ago, drebin052 said: The filepath for the Tracksuit/Granit's model is \a3\characters_f_enoch\uniforms\gorka_01_f.p3d With regards to the duplicate uniform...not sure. The config you've provided has no classname listed for "Odin_Gorka_White_1" so I suspect you may have another config packed elsewhere in your addon. Double check to see if you can find that classname in any of your other configs. By the way, I would recommend that you change your CfgPatches loadorder to the following setup: class CfgPatches { class OdinUniformRetextures { requiredAddons[]= { "A3_Data_F_AoW_Loadorder" }; requiredVersion=0.1; units[]={}; weapons[]= { "Gorka_White", "Gorka_CSAT_White", "Odin_Harness_White_1", "Odin_Harness_White_2", "Odin_Avenger_White_1" }; }; }; A3_Data_F_AoW_Loadorder should be the value for requiredAddons[] as the Art of War DLC is the latest loadorder in Arma 3's hierarchy and ensures that everything in vanilla gets loaded first before your addon does (A3_Characters_F is for stuff from the Alpha). weapons[] array needs to be populated with the classnames of your custom uniforms, vests and helmets to prevent potential issues with the Virtual Arsenal and Zeus. Thanks A LOT again. One last question, how do you know the filepatch for Gorka, arent files encrypted still? Share this post Link to post Share on other sites
drebin052 323 Posted September 25, 2021 You can use the Editor's Config Browser to take a look at classes. There's also a bunch of other (addon based) config browsers on the Workshop that you can download to make viewing things a bit easier since the vanilla Config Browser is a bit clunky to use. Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 19 hours ago, drebin052 said: You can use the Editor's Config Browser to take a look at classes. There's also a bunch of other (addon based) config browsers on the Workshop that you can download to make viewing things a bit easier since the vanilla Config Browser is a bit clunky to use. I am not really sure how to do it, I used config viewer, to look where texture and p3d of contact specnaz vest is, but all it has in "model" is dummyvest.p3d in weapons_f, which is obviously incorrect Share this post Link to post Share on other sites
drebin052 323 Posted September 26, 2021 You need to look for the CfgVehicles classname that's tied to the uniform in CfgWeapons. Using the Tracksuit/Granit as an example... U_O_R_Gorka_01_camo_F is the classname of the uniform in CfgWeapons. By taking a peek into ItemInfo's properties, O_R_Gorka_camo_F is revealed to be the name of the uniform's class in CfgVehicles. Now in CfgVehicles, scroll all the way down the list until you find O_R_Gorka_camo_F. Click on its classname and look for the "model" token. You should see the filepath of the actual uniform model used for the Tracksuit/Granit. Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 6 minutes ago, drebin052 said: You need to look for the CfgVehicles classname that's tied to the uniform in CfgWeapons. Using the Tracksuit/Granit as an example... U_O_R_Gorka_01_camo_F is the classname of the uniform in CfgWeapons. By taking a peek into ItemInfo's properties, O_R_Gorka_camo_F is revealed to be the name of the uniform's class in CfgVehicles. Now in CfgVehicles, scroll all the way down the list until you find O_R_Gorka_camo_F. Click on its classname and look for the "model" token. You should see the filepath of the actual uniform model used for the Tracksuit/Granit. I am pretty sure this is wrong Share this post Link to post Share on other sites
drebin052 323 Posted September 26, 2021 You are looking at the wrong item. That is a CfgVehicles classname for the placeable version of the Kipchak vest (used for Zeus/Eden editor). Take a look in CfgWeapons for V_SmershVest_01_F. Note how the actual vest doesn't have a "Vest_" prefix assigned. Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 13 minutes ago, drebin052 said: You are looking at the wrong item. That is a CfgVehicles classname for the placeable version of the Kipchak vest (used for Zeus/Eden editor). Take a look in CfgWeapons for V_SmershVest_01_F. Note how the actual vest doesn't have a "Vest_" prefix assigned. Thanks I see it now. Any idea how I could extract the texture to use as template? Also, I noticed my vests currently have no armor protection, I looked up and I need to put HitPoint classes in cfgvehicles. Do I do that under every single vest? Share this post Link to post Share on other sites
Jackal326 1181 Posted September 26, 2021 55 minutes ago, marki980908 said: Also, I noticed my vests currently have no armor protection, I looked up and I need to put HitPoint classes in cfgvehicles. Do I do that under every single vest? You can do it for every single vest, but if they're all the same type of vest just with different textures you can do it for the first and then have the rest inherit from it. Share this post Link to post Share on other sites
drebin052 323 Posted September 26, 2021 ^ as Jackal said. But if you intend on giving your vest different levels of protection from vanilla, then you need to add a HitPointsProtectionInfo property to your custom vest's ItemInfo class. I would strongly suggest reading up on how to do this on the BIKI: https://community.bistudio.com/wiki/Arma_3:_Soldier_Protection Getting the texture from Contact's EBOs requires the filepath of the model's texture (through the Config Browser) and using the in-game GUI Editor. It's a little convoluted so I would suggest not attempting it until you know the basics of how to customise your vest first. 1 Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 15 minutes ago, Jackal326 said: You can do it for every single vest, but if they're all the same type of vest just with different textures you can do it for the first and then have the rest inherit from it. Some vests are different but I dont mind them sharing the same armor protection for now atleast. Not really sure how to make it inheritable Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 14 minutes ago, drebin052 said: ^ as Jackal said. But if you intend on giving your vest different levels of protection from vanilla, then you need to add a HitPointsProtectionInfo property to your custom vest's ItemInfo class. I would strongly suggest reading up on how to do this on the BIKI: https://community.bistudio.com/wiki/Arma_3:_Soldier_Protection Getting the texture from Contact's EBOs requires the filepath of the model's texture (through the Config Browser) and using the in-game GUI Editor. It's a little convoluted so I would suggest not attempting it until you know the basics of how to customise your vest first. Spoiler // Carrier Special Rig (Green) class V_PlateCarrierSpec_rgr: Vest_NoCamo_Base { /* other properties */ class ItemInfo: ItemInfo { /* other properties */ class HitpointsProtectionInfo { class Neck { hitpointName = "HitNeck"; // reference to the hit point class defined in the man base class armor = 8; // addition to armor of referenced hitpoint passThrough = 0.5; // multiplier of base passThrough defined in referenced hitpoint }; class Arms { hitpointName = "HitArms"; armor = 8; passThrough = 0.5; }; class Chest { hitpointName = "HitChest"; armor = 24; passThrough = 0.1; }; class Diaphragm { hitpointName = "HitDiaphragm"; armor = 24; passThrough = 0.1; }; class Abdomen { hitpointName = "HitAbdomen"; armor = 24; passThrough = 0.1; }; class Body { hitpointName = "HitBody"; passThrough = 0.1; }; }; }; }; I assume I replace the first part with the class of one of my vests, what if I want all my vests to have the same protection, do I just put all classes in at once? Share this post Link to post Share on other sites
Jackal326 1181 Posted September 26, 2021 18 minutes ago, marki980908 said: Hide contents I assume I replace the first part with the class of one of my vests, what if I want all my vests to have the same protection, do I just put all classes in at once? Basically you inherit from your new class (the one where you define the protection values), and so long as you also inherit ItemInfo (e.g. class ItemInfo: ItemInfo) as well, you can changes the mass value etc but still retain the protection info. Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 48 minutes ago, Jackal326 said: Basically you inherit from your new class (the one where you define the protection values), and so long as you also inherit ItemInfo (e.g. class ItemInfo: ItemInfo) as well, you can changes the mass value etc but still retain the protection info. I will try to figure out how to do that (keep in mind I am super new to this) Share this post Link to post Share on other sites
Jackal326 1181 Posted September 26, 2021 1 hour ago, marki980908 said: I will try to figure out how to do that (keep in mind I am super new to this) Here is a rough guide: class SSQN_VestTest_01: Vest_Camo_Base { author = "S Squadron"; scope = 0; scopeArsenal = 0; displayName = "BASE VEST 01"; descriptionShort = "Armor Level III"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; DLC = "SSQN"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 80; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 16; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 16; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 16; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_VestTest_02: SSQN_VestTest_01 { author = "S Squadron"; scope = 0; scopeArsenal = 0; displayName = "BASE VEST 02"; descriptionShort = "Armor Level IV"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_2_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest01.p3d"; DLC = "SSQN"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest01"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 100; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 20; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 20; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 20; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_VestTest_03: SSQN_VestTest_01 { author = "S Squadron"; scope = 0; scopeArsenal = 0; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; displayName = "BASE VEST 03"; descriptionShort = "Armor Level III"; DLC = "SSQN"; model = "\A3\Characters_F_EPA\BLUFOR\equip_b_vest_kerry.p3d"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F_EPA\BLUFOR\equip_b_vest_kerry.p3d"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 80; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 16; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 16; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 16; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_CryeCPC_01MCM: SSQN_VestTest_01 { author = "S Squadron"; scope = 2; scopeArsenal = 2; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; displayName = "Crye CPC 1 (Multicam 1)"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mcm_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: ItemInfo { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02.p3d"; }; }; In the example above there are three vest defines #(technically there are four, but there are three BASE vest defines: SSQN_VestTest_01, SSQN_VestTest_02 & SSQN_VestTest_03 Each one has a different model, but more importantly for this thread, each one has different protection values. The three base vest defines are all hidden in the Arsenal (scope=0;) i.e. a locked class as they're only bases I used to inherit from. The fourth vest (SSQN_CryeCPC_01MCM) inherits from the first base vest (SSQN_VestTest_01) and inherits everything about that vest apart from what you overwrite within the new class itself (scope value, display name etc). It also inherits all of the ItemInfo parameters due to Quote class ItemInfo: ItemInfo That line basically says, "I'm defining new ItemInfo stuff, but what I don't define here, inherit from the main class above i.e. SSQN_VestTest_01. So here, you can define different weight (mass) values, hidden selections etc but still maintain the inherited protection values from the base class unless of course you define new ones... 1 Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 1 hour ago, Jackal326 said: Here is a rough guide: class SSQN_VestTest_01: Vest_Camo_Base { author = "S Squadron"; scope = 0; scopeArsenal = 0; displayName = "BASE VEST 01"; descriptionShort = "Armor Level III"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; DLC = "SSQN"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 80; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 16; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 16; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 16; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_VestTest_02: SSQN_VestTest_01 { author = "S Squadron"; scope = 0; scopeArsenal = 0; displayName = "BASE VEST 02"; descriptionShort = "Armor Level IV"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_2_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest01.p3d"; DLC = "SSQN"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest01"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 100; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 20; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 20; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 20; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_VestTest_03: SSQN_VestTest_01 { author = "S Squadron"; scope = 0; scopeArsenal = 0; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; displayName = "BASE VEST 03"; descriptionShort = "Armor Level III"; DLC = "SSQN"; model = "\A3\Characters_F_EPA\BLUFOR\equip_b_vest_kerry.p3d"; hiddenSelections[]={"camo"}; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mx1_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: VestItem { uniformModel = "\A3\Characters_F_EPA\BLUFOR\equip_b_vest_kerry.p3d"; hiddenSelections[]={"camo"}; containerClass = "Supply140"; mass = 80; class HitpointsProtectionInfo { class Chest { HitpointName = "HitChest"; armor = 16; PassThrough = 0.2; }; class Diaphragm { HitpointName = "HitDiaphragm"; armor = 16; PassThrough = 0.2; }; class Abdomen { HitpointName = "HitAbdomen"; armor = 16; passThrough = 0.2; }; class Body { HitpointName = "HitBody"; passThrough = 0.2; }; }; }; }; class SSQN_CryeCPC_01MCM: SSQN_VestTest_01 { author = "S Squadron"; scope = 2; scopeArsenal = 2; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; displayName = "Crye CPC 1 (Multicam 1)"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelectionsTextures[] = {"\SSQN_Equipment\Data\crye_vests_mcm_co.paa"}; hiddenSelectionsMaterials[] = {"\SSQN_Equipment\Data\crye_vests.rvmat"}; class ItemInfo: ItemInfo { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02.p3d"; }; }; In the example above there are three vest defines #(technically there are four, but there are three BASE vest defines: SSQN_VestTest_01, SSQN_VestTest_02 & SSQN_VestTest_03 Each one has a different model, but more importantly for this thread, each one has different protection values. The three base vest defines are all hidden in the Arsenal (scope=1;). The fourth vest (SSQN_CryeCPC_01MCM) inherits from the first base vest (SSQN_VestTest_01) and inherits everything about that vest apart from what you overwrite within the new class itself (scope value, display name etc). It also inherits all of the ItemInfo parameters due to That line basically says, "I'm defining new ItemInfo stuff, but what I don't define here, inherit from the main class above i.e. SSQN_VestTest_01. So here, you can define different weight (mass) values, hidden selections etc but still maintain the inherited protection values from the base class. It works perfectly, thank you 1 Share this post Link to post Share on other sites
marki980908 23 Posted September 26, 2021 3 hours ago, drebin052 said: ^ as Jackal said. But if you intend on giving your vest different levels of protection from vanilla, then you need to add a HitPointsProtectionInfo property to your custom vest's ItemInfo class. I would strongly suggest reading up on how to do this on the BIKI: https://community.bistudio.com/wiki/Arma_3:_Soldier_Protection Getting the texture from Contact's EBOs requires the filepath of the model's texture (through the Config Browser) and using the in-game GUI Editor. It's a little convoluted so I would suggest not attempting it until you know the basics of how to customise your vest first. I managed to find a script used for "briefings" and made a game display the texture on my screen when I took a screenshot. Thank you, everything works 1 Share this post Link to post Share on other sites
Jackal326 1181 Posted September 26, 2021 2 minutes ago, marki980908 said: It works perfectly, thank you Glad to help 🙂 1 Share this post Link to post Share on other sites