This shows you the differences between two versions of the page.
— |
arma3:config:stiltman-retexturing-tutorial [2013-04-19 21:09] (current) snakeman created stiltman-retexturing-tutorial initial page. |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== ArmA 3 Character Re-Texturing Tutorial ====== | ||
+ | **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) | ||
+ | <code cpp> | ||
+ | hiddenSelections[] = {"camo"}; | ||
+ | hiddenSelectionsTextures[] = {"pathtoyouraddonretexturefile.paa"}; | ||
+ | </code> | ||
+ | |||
+ | and seems that you only need one of them in the class iteminfo. | ||
+ | <code cpp> | ||
+ | hiddenSelections[] = {"camo"}; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== Vests ====== | ||
+ | |||
+ | so the basic vest config would be added to CfgWeapons | ||
+ | |||
+ | <code cpp> | ||
+ | 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; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | and adding the hidden selections it would be | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Example of the full config: | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== Helmet (once its working) ====== | ||
+ | |||
+ | would look like this in the cfgweapons. | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Example of full config: | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== 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. | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code cpp> | ||
+ | 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 | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Example of full config: | ||
+ | <code cpp> | ||
+ | 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 | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | <code cpp> | ||
+ | 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"}; | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | </code> |