====== ArmA 3 Character Re-Texturing Tutorial ======
[[https://www.pmctactical.org/forum/viewforum.php?f=68|ArmA 3 Forum]], [[:arma3|ArmA 3]], [[arma3:config|ArmA 3 Config]], [[arma3:missions|ArmA 3 Missions]], [[arma3:modeling|ArmA 3 3D Modeling]], [[arma3:scripting|ArmA 3 Scripting]], [[arma3:terrain|ArmA 3 Terrain]], [[arma3:texturing|ArmA 3 Texturing]], [[arma3:tools|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 [[arma2:tools:eliteness|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"};
};
};
};