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"};
		};
	};
};