Table of Contents
ArmA 3 Character Re-Texturing Tutorial
ArmA 3 Forum, ArmA 3, ArmA 3 Config, ArmA 3 Missions, ArmA 3 3D Modeling, ArmA 3 Scripting, ArmA 3 Terrain, ArmA 3 Texturing, ArmA 3 Tools
Basic Retexturing Tutorial of ArmA 3 Character by Stiltman
So, this will be a quick tutorial of how to get the retextures working. of course this also means you have some basic knowledge of how to extract the content of the arma 3 pbo files and making new pbo files and making configs with proper classnames. and the structure of a proper addon
Using Mikeros Eliteness would probably work best in my opinion.
the textures that would be used for these example items would be found in the characters_f.pbo and in the bluefor/data folder
Uniform = clothing1_co.paa
Vest = vests_rgr_co.paa
Helmet = equip1_co.paa
the basis is to add to the main class of the thing to retexture (if not already present)
hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"};
and seems that you only need one of them in the class iteminfo.
hiddenSelections[] = {"camo"};
Vests
so the basic vest config would be added to CfgWeapons
class V_PlateCarrier1_rgr : Vest_Base { scope = 2; displayName = "Example Platecarrier"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; class ItemInfo : VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; containerClass = "Supply100"; //how much it can carry mass = 50; //how much it weights armor = 5*0.5; passThrough = 0.7; };
and adding the hidden selections it would be
class V_PlateCarrier1_rgr : Vest_Base { scope = 2; displayName = "Example Platecarrier"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; containerClass = "Supply100"; mass = 50; armor = 5*0.5; passThrough = 0.7; hiddenSelections[] = {"camo"}; };
Example of the full config:
class CfgPatches { class example_vest_config { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F_BLUFOR"}; }; }; class cfgWeapons { class Vest_Base; class VestItem; class example_PlateCarrier1_rgr : Vest_Base { scope = 2; displayName = "Example Platecarrier"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; containerClass = "Supply100"; mass = 50; armor = 5*0.5; passThrough = 0.7; hiddenSelections[] = {"camo"}; }; }; };
Helmet (once its working)
would look like this in the cfgweapons.
class H_HelmetB : ItemCore { scope = 2; weaponPoolAvailable = 1; displayName = "Example Helmet"; picture = "\A3\characters_f\Data\UI\icon_H_HelmetB_CA.paa"; model = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : HeadgearItem { mass = 100; uniformModel = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; modelSides[] = {3, 1}; armor = 3*0.5; passThrough = 0.8; hiddenSelections[] = {"camo"}; };
Example of full config:
class CfgPatches { class example_helmet_config { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F_BLUFOR"}; }; }; class cfgWeapons { class ItemCore; class HeadgearItem; class example_HelmetB : ItemCore { scope = 2; weaponPoolAvailable = 1; displayName = "Example Helmet"; picture = "\A3\characters_f\Data\UI\icon_H_HelmetB_CA.paa"; model = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : HeadgearItem { mass = 100; uniformModel = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; modelSides[] = {3, 1}; armor = 3*0.5; passThrough = 0.8; hiddenSelections[] = {"camo"}; }; }; };
Uniforms
Uniforms seem to be working a little bit diffrent from what i gather they are in fact soldiers and when switching uniform the game just switches class/model on your soldier. So one would have to make a new soldier aswell as a new item.
This example will put your soldier under bluefor as Uniform Test Soldier
for the soldier its in CfgVehicles.
class Example_Soldier_F : B_Soldier_base_F { _generalMacro = "B_Soldier_F"; //unsure what this does scope = 2; displayName = "Uniform Test Soldier"; uniformAccessories[] = {}; nakedUniform = "U_BasicBody"; //class for "naked" body uniformClass = "Example_CombatUniform_mcam"; //the uniform item hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"};
and then the uniform item linking it to the soldier class making it an item in the gear menu without this it works as regular arma 2 and it will show no uniform in gear.
class Example_CombatUniform_mcam : Uniform_Base { scope = 2; displayName = "Example Mcam uniform"; picture = "\A3\characters_f\data\ui\icon_U_B_CombatUniform_mcam_ca.paa"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver"; class ItemInfo : UniformItem { uniformModel = "-"; uniformClass = "Example_Soldier_F"; //would be same as our made soldier class containerClass = "Supply20"; //how much it can carry mass = 80; //how much it weights };
Example of full config:
class CfgPatches { class example_uniform_config { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F_BLUFOR"}; }; }; class CfgVehicles { class B_Soldier_base_F; class Example_Soldier_F : B_Soldier_base_F { _generalMacro = "B_Soldier_F"; //unsure what this does scope = 2; displayName = "Uniform Test Soldier"; nakedUniform = "U_BasicBody"; //class for "naked" body uniformClass = "Example_CombatUniform_mcam"; //the uniform item hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; }; }; class cfgWeapons { class Uniform_Base; class UniformItem; class Example_CombatUniform_mcam : Uniform_Base { scope = 2; displayName = "Example Mcam uniform"; picture = "\A3\characters_f\data\ui\icon_U_B_CombatUniform_mcam_ca.paa"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver"; class ItemInfo : UniformItem { uniformModel = "-"; uniformClass = "Example_Soldier_F"; //would be same as our made soldier class containerClass = "Supply20"; //how much it can carry mass = 80; //how much it weights }; }; };
And a full config with everything in it and all gear on the soldier. Testing this ingame though without texture will make all parts invicible :)
Full config:
class CfgPatches { class example_retexture_config { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Characters_F_BLUFOR"}; }; }; class CfgVehicles { class B_Soldier_base_F; class Example_Soldier_F : B_Soldier_base_F { _generalMacro = "B_Soldier_F"; //unsure what this does scope = 2; displayName = "Uniform Test Soldier"; nakedUniform = "U_BasicBody"; //class for "naked" body uniformClass = "Example_CombatUniform_mcam"; //the uniform item hiddenSelections[] = {"Camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; linkedItems[] = {"example_PlateCarrier1_rgr", "example_HelmetB", "NVGoggles", "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio"}; respawnLinkedItems[] = {"example_PlateCarrier1_rgr", "example_HelmetB", "NVGoggles", "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio"}; }; }; class cfgWeapons { class Uniform_Base; class UniformItem; class Example_CombatUniform_mcam : Uniform_Base { scope = 2; displayName = "Example Mcam uniform"; picture = "\A3\characters_f\data\ui\icon_U_B_CombatUniform_mcam_ca.paa"; model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver"; class ItemInfo : UniformItem { uniformModel = "-"; uniformClass = "Example_Soldier_F"; //would be same as our made soldier class containerClass = "Supply20"; //how much it can carry mass = 80; //how much it weights }; }; class ItemCore; class HeadgearItem; class example_HelmetB : ItemCore { scope = 2; weaponPoolAvailable = 1; displayName = "Example helmet"; picture = "\A3\characters_f\Data\UI\icon_H_HelmetB_CA.paa"; model = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : HeadgearItem { mass = 100; uniformModel = "\A3\Characters_F\BLUFOR\headgear_b_helmet_ballistic"; modelSides[] = {3, 1}; armor = 3*0.5; passThrough = 0.8; hiddenSelections[] = {"camo"}; }; }; class Vest_Base; class VestItem; class example_PlateCarrier1_rgr : Vest_Base { scope = 2; displayName = "Example Platecarrier"; picture = "\A3\characters_f\Data\UI\icon_V_plate_carrier_1_CA.paa"; model = "\A3\Characters_F\BLUFOR\equip_b_vest02"; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; class ItemInfo : VestItem { uniformModel = "\A3\Characters_F\BLUFOR\equip_b_vest02"; containerClass = "Supply100"; mass = 50; armor = 5*0.5; passThrough = 0.7; hiddenSelections[] = {"camo"}; }; }; };