Jump to content
Vespa

Arma3 Characters Modding Tutorial

Recommended Posts

I've heard that the error of wound textures not showing when you've changed the rvmats was fixed/can be fixed, however i cant find any info about it anywhere, was i misinformed :confused:

Share this post


Link to post
Share on other sites

I want to create a custom face from a photo. Have never attempted anything like this before. Searched for tutorials, but found nothing useful. How do I even start? Thanks!

Share this post


Link to post
Share on other sites

So I am trying to retexture the INDEPENDENT main uniform, and the problem i'm having is it's using the bluefor model instead of the independent uniform. Any idea on what's causing this? TY

http://pastebin.com/u77Liaap [Link to Code]

Share this post


Link to post
Share on other sites
Great tutorial/template but when I drop the clothing it's appearing on the ground like this http://gyazo.com/ac3287f01fbf18533f0ee464b22fd492 and not in the neat piles for default clothing, how do I fix this?

In your uniform class you should have something like this.

model = "\A3\Characters_F\Common\Suitpacks\suitpack_civilian_F.p3d";

Share this post


Link to post
Share on other sites

Hi everibody, I'm new on the forum, and pretty noob in the modding and texturing world.

I've created a uniform texture that is working (I've tried it replacing the paa, inside the arma3 character_f.pbo(obviously a backup)).

I'm trying to set a config file to add a new uniform to the game, but when start the virtual arsenal just won't show up.

The mod structures is this:

@MOD
->addons
  ->tornadouniforms.pbo
     ->config.cpp
     ->Data
        ->uniformedjmitri_co.paa

The config.cpp file contain this:

enum {
    //  = 2,    // Error parsing: Empty enum name
   DESTRUCTENGINE = 2,
   DESTRUCTDEFAULT = 6,
   DESTRUCTWRECK = 7,
   DESTRUCTTREE = 3,
   DESTRUCTTENT = 4,
   STABILIZEDINAXISX = 1,
   STABILIZEDINAXESXYZ = 4,
   STABILIZEDINAXISY = 2,
   STABILIZEDINAXESBOTH = 3,
   DESTRUCTNO = 0,
   STABILIZEDINAXESNONE = 0,
   DESTRUCTMAN = 5,
   DESTRUCTBUILDING = 1,
};

class CfgPatches {
   class tornadouniforms {
       units[] = {};
       weapons[] = {};
       requiredVersion = 0.1;
       requiredAddons[] = {"A3_Characters_F_BLUFOR"};
   };
};

class CfgVehicles {

   class B_Soldier_base_F;

   class uniformedjmitri : B_Soldier_base_F {
       _generalMacro = "B_Soldier_F"; 
       scope = 2;
       displayName = "Uniforme_Djmitri";
       nakedUniform = "U_BasicBody"; 
       uniformClass = "uniformedjmitri"; 
       hiddenSelections[] = {"Camo"};
       hiddenSelectionsTextures[] = {"uniformedjmitri_co.paa"};
   };

};

class cfgWeapons {
   class Uniform_Base;
   class UniformItem;

   class uniformedjmitri : Uniform_Base {
       scope = 2;
       displayName = "Uniforme_Djmitri";
       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 = "uniformedjmitri"; 
           containerClass = "Supply20"; 
           mass = 80; 
       };
   };
};  

I've read all the pages in the thread but I can't figure out how to make it work.

Edited by Tommyb8888

Share this post


Link to post
Share on other sites

Your texture path is incomplete.

hiddenSelectionsTextures[] = {"\tornadouniforms\data\uniformedjmitri_co.paa"};

Share this post


Link to post
Share on other sites
Your texture path is incomplete.

hiddenSelectionsTextures[] = {"\tornadouniforms\data\uniformedjmitri_co.paa"};

Thank you really much!!! Now the uniform appear in the virtual arsenal uniform's list, but there is still an issue with the model and the textures. I don't know why it come out like this:

2j0dx5d.jpg

This is the code edited with your suggestion

enum {
    //  = 2,    // Error parsing: Empty enum name
   DESTRUCTENGINE = 2,
   DESTRUCTDEFAULT = 6,
   DESTRUCTWRECK = 7,
   DESTRUCTTREE = 3,
   DESTRUCTTENT = 4,
   STABILIZEDINAXISX = 1,
   STABILIZEDINAXESXYZ = 4,
   STABILIZEDINAXISY = 2,
   STABILIZEDINAXESBOTH = 3,
   DESTRUCTNO = 0,
   STABILIZEDINAXESNONE = 0,
   DESTRUCTMAN = 5,
   DESTRUCTBUILDING = 1,
};

class CfgPatches {
   class tornadouniforms {
       units[] = {};
       weapons[] = {};
       requiredVersion = 0.1;
       requiredAddons[] = {"A3_Characters_F_BLUFOR"};
   };
};

class CfgVehicles {

   class B_Soldier_base_F;

   class uniformedjmitri : B_Soldier_base_F {
       _generalMacro = "B_Soldier_F"; //unsure what this does
       scope = 2;
       displayName = "Uniforme_Djmitri";
       nakedUniform = "U_BasicBody"; //class for "naked" body
       uniformClass = "uniformedjmitri"; //the uniform item
       hiddenSelections[] = {"Camo"};
       hiddenSelectionsTextures[] = {"\tornadouniforms\data\uniformedjmitri_co.paa"};
   };

};

class cfgWeapons {
   class Uniform_Base;
   class UniformItem;

   class uniformedjmitri : Uniform_Base {
       scope = 2;
       displayName = "uniformeDjmitri";
       picture = "\A3\characters_f\data\ui\icon_U_B_CombatUniform_mcam_ca.paa";
       model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver.p3d";

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

Edited by Tommyb8888

Share this post


Link to post
Share on other sites

I solved the problem. I messed up some classes name i fust figured out

enum {
    //  = 2,    // Error parsing: Empty enum name
   DESTRUCTENGINE = 2,
   DESTRUCTDEFAULT = 6,
   DESTRUCTWRECK = 7,
   DESTRUCTTREE = 3,
   DESTRUCTTENT = 4,
   STABILIZEDINAXISX = 1,
   STABILIZEDINAXESXYZ = 4,
   STABILIZEDINAXISY = 2,
   STABILIZEDINAXESBOTH = 3,
   DESTRUCTNO = 0,
   STABILIZEDINAXESNONE = 0,
   DESTRUCTMAN = 5,
   DESTRUCTBUILDING = 1,
};

class CfgPatches {
   class tornadouniforms {
       units[] = {};
       weapons[] = {};
       requiredVersion = 0.1;
       requiredAddons[] = {"A3_Characters_F_BLUFOR"};
   };
};

class CfgVehicles {

   class B_Soldier_base_F;

   class uniformedjmitri : B_Soldier_base_F {
       _generalMacro = "B_Soldier_F"; //unsure what this does
       scope = 2;
       displayName = "Uniforme_Djmitri";
       nakedUniform = "U_BasicBody"; //class for "naked" body
       uniformClass = "multilanddjmitri"; //the uniform item
       hiddenSelections[] = {"Camo"};
       hiddenSelectionsTextures[] = {"\tornadouniforms\data\uniforme_djmitri_co.paa"};
   };

};

class cfgWeapons {
   class Uniform_Base;
   class UniformItem;

   class multilanddjmitri : Uniform_Base {
       scope = 2;
       displayName = "Uniforme Djmitri";
       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 = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
           uniformClass = "uniformedjmitri"; //would be same as our made soldier class
           containerClass = "Supply20"; //how much it can carry
           mass = 80; //how much it weights
       };
   };

};  

Thanks for the great tutorial!!!

  • Like 1

Share this post


Link to post
Share on other sites

I'm looking for some documentation or a guide on how to replace the character model.

Is it possible to add in a different character model without having to animate it?

Share this post


Link to post
Share on other sites

Hello i have some question about some import errors

I have a helmet in Blender set it up like this

image.png

image.png

image.png

so it actually don't show it in the correct sizes.

http://s26.postimg.org/kn1l66dbt/2015_04_19_00005.jpg (134 kB)

I really don't know why i did this bevor but i want to model it new and now this

config.cpp

#define private		0
#define protected		1
#define public		2


class CfgPatches {
class Star_Wars {
units[] = {};
weapons[] = {"Storm_helmet",};
requiredVersion = 0.1;
requiredAddons[] = {};
};
};

class cfgWeapons 
{

class ItemCore;	
class HeadgearItem;

class Storm_helmet : ItemCore 
{
	scope = public;
	weaponPoolAvailable = 1;
	displayName = "Stormtrooper Helmet";
	picture = "\Starwars_main\Stormtrooper\UI\S-H.paa";
	model = "\Starwars_main\Stormtrooper\Helmet.p3d";

	class ItemInfo : HeadgearItem 
	{
		mass = 100;
		uniformModel = "\Starwars_main\Stormtrooper\Helmet.p3d";
		modelSides[] = {3, 1};
		armor = 3*0.5;
		passThrough = 0.8;
	};
};
};

model.cfg

class CfgSkeletons
{
class Default
{
	isDiscrete = 1;
	skeletonInherit = "";
	skeletonBones[] = {};
};
class OFP2_ManSkeleton
{
	isDiscrete = 0;
	skeletonInherit = "";
	skeletonBones[] =
	{
		"Pelvis","",
		"Spine","Pelvis",
		"Spine1","Spine",
		"Spine2","Spine1",
		"Spine3","Spine2",
		"Camera","Pelvis",
		"weapon","Spine1",
		"launcher","Spine1",
	//Head skeleton in hierarchy
		"neck","Spine3",
		"neck1","neck",
		"head","neck1",
	//New facial features
		"Face_Hub","head",
			"Face_Jawbone","Face_Hub",
				"Face_Jowl","Face_Jawbone",
				"Face_chopRight","Face_Jawbone",
				"Face_chopLeft","Face_Jawbone",
				"Face_LipLowerMiddle","Face_Jawbone",
				"Face_LipLowerLeft","Face_Jawbone",
				"Face_LipLowerRight","Face_Jawbone",
				"Face_Chin","Face_Jawbone",
				"Face_Tongue","Face_Jawbone",
			"Face_CornerRight","Face_Hub",
				"Face_CheekSideRight","Face_CornerRight",
			"Face_CornerLeft","Face_Hub",
				"Face_CheekSideLeft","Face_CornerLeft",
			"Face_CheekFrontRight","Face_Hub",
			"Face_CheekFrontLeft","Face_Hub",
			"Face_CheekUpperRight","Face_Hub",
			"Face_CheekUpperLeft","Face_Hub",
			"Face_LipUpperMiddle","Face_Hub",
			"Face_LipUpperRight","Face_Hub",
			"Face_LipUpperLeft","Face_Hub",
			"Face_NostrilRight","Face_Hub",
			"Face_NostrilLeft","Face_Hub",
			"Face_Forehead","Face_Hub",
				"Face_BrowFrontRight","Face_Forehead",
				"Face_BrowFrontLeft","Face_Forehead",
				"Face_BrowMiddle","Face_Forehead",
				"Face_BrowSideRight","Face_Forehead",
				"Face_BrowSideLeft","Face_Forehead",
			"Face_Eyelids","Face_Hub",
			"Face_EyelidUpperRight","Face_Hub",
			"Face_EyelidUpperLeft","Face_Hub",
			"Face_EyelidLowerRight","Face_Hub",
			"Face_EyelidLowerLeft","Face_Hub",
			"EyeLeft","Face_Hub",
			"EyeRight","Face_Hub",			
	//Left upper side
		"LeftShoulder","Spine3",
		"LeftArm","LeftShoulder",
		"LeftArmRoll","LeftArm",
		"LeftForeArm","LeftArmRoll",
		"LeftForeArmRoll","LeftForeArm",
		"LeftHand","LeftForeArmRoll",
		"LeftHandRing","LeftHand",
		"LeftHandRing1","LeftHandRing",
		"LeftHandRing2","LeftHandRing1",
		"LeftHandRing3","LeftHandRing2",
		"LeftHandPinky1","LeftHandRing",
		"LeftHandPinky2","LeftHandPinky1",
		"LeftHandPinky3","LeftHandPinky2",
		"LeftHandMiddle1","LeftHand",
		"LeftHandMiddle2","LeftHandMiddle1",
		"LeftHandMiddle3","LeftHandMiddle2",
		"LeftHandIndex1","LeftHand",
		"LeftHandIndex2","LeftHandIndex1",
		"LeftHandIndex3","LeftHandIndex2",
		"LeftHandThumb1","LeftHand",
		"LeftHandThumb2","LeftHandThumb1",
		"LeftHandThumb3","LeftHandThumb2",
	//Right upper side
		"RightShoulder","Spine3",
		"RightArm","RightShoulder",
		"RightArmRoll","RightArm",
		"RightForeArm","RightArmRoll",
		"RightForeArmRoll","RightForeArm",
		"RightHand","RightForeArmRoll",
		"RightHandRing","RightHand",
		"RightHandRing1","RightHandRing",
		"RightHandRing2","RightHandRing1",
		"RightHandRing3","RightHandRing2",
		"RightHandPinky1","RightHandRing",
		"RightHandPinky2","RightHandPinky1",
		"RightHandPinky3","RightHandPinky2",
		"RightHandMiddle1","RightHand",
		"RightHandMiddle2","RightHandMiddle1",
		"RightHandMiddle3","RightHandMiddle2",
		"RightHandIndex1","RightHand",
		"RightHandIndex2","RightHandIndex1",
		"RightHandIndex3","RightHandIndex2",
		"RightHandThumb1","RightHand",
		"RightHandThumb2","RightHandThumb1",
		"RightHandThumb3","RightHandThumb2",
	//Left lower side
		"LeftUpLeg","Pelvis",
		"LeftUpLegRoll","LeftUpLeg",
		"LeftLeg","LeftUpLegRoll",
		"LeftLegRoll","LeftLeg",
		"LeftFoot","LeftLegRoll",
		"LeftToeBase","LeftFoot",
	//Right lower side
		"RightUpLeg","Pelvis",
		"RightUpLegRoll","RightUpLeg",
		"RightLeg","RightUpLegRoll",
		"RightLegRoll","RightLeg",
		"RightFoot","RightLegRoll",
		"RightToeBase","RightFoot"
	};
	// location of pivot points (local axes) for hierarchical animation
	pivotsModel="A3\anims_f\data\skeleton\SkeletonPivots.p3d";
 	};
};

class CfgModels
{
class Default
{
	sectionsInherit="";
	sections[] = {};
	skeletonName = "";
};
class ArmaMan : Default
{
	htMin = 60;          // Minimum half-cooling time (in seconds)
	htMax = 1800;        // Maximum half-cooling time (in seconds)
	afMax = 30;          // Maximum temperature in case the model is alive (in celsius)
	mfMax = 0;           // Maximum temperature when the model is moving (in celsius)
	mFact = 1;           // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
	tBody = 37;  // Metabolism temperature of the model (in celsius)

	sections[] =
	{
		"osobnost","Head_Injury","Body_Injury","l_leg_injury","l_arm_injury","r_arm_injury","r_leg_injury","injury_body", "injury_legs", "injury_hands",
		"clan","clan_sign","Camo","CamoB","Camo1","Camo2","personality","hl", "injury_head"
	};
	skeletonName = "OFP2_ManSkeleton";
};
class Helmet : ArmaMan {};
};

thanks for anyone who can help me

Edited by neodragon

Share this post


Link to post
Share on other sites

Just came here to thank the author of the mod, but I may have created a monster:

http://images.akamai.steamusercontent.com/ugc/534017684921213818/000387EA470BFBE99EA19C67FA82E6C915236A53/

I spent some 3 or 4 hours trying to figure out why my model wasn't working, turns out that I was using the class name rather than the model name in the file model.cfg

Share this post


Link to post
Share on other sites

I'm having trouble with my config in retexturing backpacks. Can someone help me?

class CfgPatches

{

class 2cr_uniform_Config

{

units[] = {"";};

weapons[] = {};

requiredVersion = 0.1;

requiredAddons[] = {"A3_Characters_F"};

author = "kripto202"

};

};

//************************************************************************************************************************************************************************************************

//***** Factions *********************************************************************************************************************************************************

//************************************************************************************************************************************************************************************************

class cfgFactionClasses

{

class Custom_Faction

{

displayName = "2nd Cavalry Regement";

priority = 3; // Position in list.

side = 1; // Opfor = 0, Blufor = 1, Indep = 2.

icon = ""; //Custom Icon

};

};

class UniformSlotInfo

{

slotType = 0;

linkProxy = "-";

};

class CfgVehicles

{

//************************************************************************************************************************************************************************************************

//***** Units *********************************************************************************************************************************************************

//************************************************************************************************************************************************************************************************

class B_Soldier_F;

class Custom_Uniform: B_soldier_F {

author = "kripto202";

_generalMacro = "B_soldier_F";

scope = 2;

displayName = "2CR Rifleman";

identityTypes[] = {"Head_NATO", "G_NATO_default"};

genericNames = "2CR Men";

faction = "2nd Cavalry Regement";

model = "\A3\characters_f\BLUFOR\b_soldier_01.p3d"; //Default NATO

uniformClass = "2cr_uniform";

hiddenSelections[] = {"Camo","Insignia"};

hiddenSelectionsTextures[] = {"2cr_uniforms\Data\ocp_2cr.paa"};

weapons[] = {"Throw","Put"};

respawnWeapons[] = {"Throw","Put"};

magazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"};

respawnMagazines[] = {"HandGrenade","HandGrenade","SmokeShell","SmokeShellGreen","Chemlight_green","Chemlight_green"};

linkedItems[] = {"ItemMap","ItemCompass","ItemWatch","ItemRadio"};

respawnLinkedItems[] = {"ItemMap","ItemCompass","ItemWatch","ItemRadio"};

};

};

class cfgWeapons

{

//********************************************************************************************************************************************************************************************

//***** Uniforms *****************************************************************************************************************************************************

//********************************************************************************************************************************************************************************************

class ItemCore;

class UniformItem;

class Uniform_Base: ItemCore

{

class ItemInfo;

};

class 2cr_uniform: Uniform_Base

{

scope = 2;

displayName = "2CR OCP Combat Uniform";

picture = "\A3\characters_f\data\ui\icon_u_b_combatuniform_mcam_ca.paa";

model = "\A3\characters_f\Common\Suitpacks\suitpack_universal_F.p3d";

class ItemInfo : UniformItem {

uniformClass = "Custom_Uniform";

containerClass = "Supply50";

mass = 50;

};

};

//************************************************************************************************************************************************************************************************

//***** Vests *********************************************************************************************************************************************************

//************************************************************************************************************************************************************************************************

class VestItem;

class Vest_Camo_Base: ItemCore

{

class ItemInfo;

};

class 2CR_vest: Vest_Camo_Base

{

scope = 2;

displayName = "2CR OCP Platecarrier";

picture = "\A3\characters_f\data\ui\icon_v_plate_carrier_1_ca.paa";

model = "\A3\Characters_F\BLUFOR\equip_b_Vest01";

hiddenSelections[] = {"Camo"};

hiddenSelectionsTextures[] = {"\2cr_uniforms\Data\vests_2cr.paa"};

class ItemInfo: VestItem

{

uniformModel = "A3\Characters_F\BLUFOR\equip_b_Vest01.p3d";

containerClass = "Supply120";

mass = 80;

armor = "5";

passThrough = 0.3;

hiddenSelections[] = {"camo"};

};

};

//*****************Backpacks*********************

class B_Carryall_Base

class 2CR_OCP_Carryall : B_Carryall_Base

{

displayname = "2CR OCP Carryall";

picture = "\A3\weapons_f\Ammoboxes\bags\data\ui\icon_b_c_tortila_mcamo.paa";

model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Tortila.p3d";

hiddenSelections[] = {"camo"};

hiddenSelectionsTextures[] = {"\2cr_uniform\data\backpack_tortila_cbr_ocp.paa"};

};

class B_AssaultPack_Base

class 2CR_OCP_AssaultPack : B_AssaultPack_Base

{

displayname = "2CR OCP Assault Pack";

picture = "\A3\weapons_f\Ammoboxes\bags\data\ui\icon_b_c_compact_mcamo_ca.paa";

model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Compact.p3d";

hiddenSelections[] = {"camo"};

hiddenSelectionsTextures[] = {"\2cr_uniform\data\2cr_assault_ocp.paa"};

};

class B_Small_Base

class 2CR_OCP_Small : B_Small_Base

{

displayname = "2CR OCP ";

picture = "\A3\weapons_f\Ammoboxes\bags\data\ui\icon_b_c_small_mcamo.paa";

model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Small.p3d";

hiddenSelections[] = {"camo"};

hiddenSelectionsTextures[] = {"\2cr_uniform\data\backpack_small_ocp.paa"};

};

class B_gorod_Base

class 2CR_OCP_gorod : B_gorod_Base

{

displayname = "2CR OCP ";

picture = "\A3\weapons_f\Ammoboxes\bags\data\ui\icon_b_c_gorod_khk_ca.paa";

model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Gorod.p3d";

hiddenSelections[] = {"camo"};

hiddenSelectionsTextures[] = {"\2cr_uniform\data\backpack_gorod_cbr_ocp.paa"};

};

class B_Fast_Base

class 2CR_OCP_Fast : B_Fast_Base

{

displayname = "2CR OCP ";

picture = "\A3\weapons_f\Ammoboxes\bags\data\ui\backpack_ca.paa";

model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Fast.p3d";

hiddenSelections[] = {"camo"};

hiddenSelectionsTextures[] = {"\2cr_uniform\data\backpack_fast_cbr_ocp.paa"};

};

};

Share this post


Link to post
Share on other sites
I'm having trouble with my config in retexturing backpacks. Can someone help me?

It seems to me like You have the backpacks as a subclass of class cfgWeapons, it should be class cfgVehicles instead. And another possible issue may be with missing semi-colons at the end of class declarations (e.g. "class B_Fast_Base;" is the correct way). I hope this helps :icon_twisted:

Share this post


Link to post
Share on other sites

In addition, there are some errors in the CfgPatches, it should be like that:

class CfgPatches
{
   class 2cr_uniform_Config
   {
       units[] = {};
       weapons[] = {};
       requiredVersion = 0.1;
       requiredAddons[] = {"A3_Characters_F"};
       author = "kripto202";
   };
}; 

Share this post


Link to post
Share on other sites

hey i have a problem my texture is not appearing and the default one is overriding it

//************************************************************************************************************************************************************************************************

//***** Headgear *********************************************************************************************************************************************************

//************************************************************************************************************************************************************************************************

class H_HelmetB: ItemCore

{

class ItemInfo;

};

class CUstom_Helmet1: H_HelmetB

{

displayName = "Iranain Pasgt";

picture = "";

model = "\custom_Uniform\sud_IBSJ_helmet01.p3d";

hiddenSelections[] = {"Camo"};

hiddenSelectionsTextures[] = {"\custom_Uniform\Data\custom_helmet_co.paa"};

class ItemInfo: ItemInfo

{

mass = 20;

allowedSlots[] = {901,605};

uniformModel = "\custom_Uniform\sud_IBSJ_helmet01";

modelSides[] = {3,1};

hiddenSelections[] = {"Camo"};

armor = "3*0.4";

passThrough = 0.65;

};

};

class CUstom_Helmet2: H_HelmetB

{

displayName = "Iranain Pasgt2";

picture = "";

model = "\custom_Uniform\sud_IRGC_helmet01";

hiddenSelections[] = {"Camo"};

hiddenSelectionsTextures[] = {"\custom_Uniform\Data\custom_helmet_co.paa"};

class ItemInfo: ItemInfo

{

mass = 15;

allowedSlots[] = {901,605};

uniformModel = "\custom_Uniform\sud_IRGC_helmet01";

modelSides[] = {3,1};

hiddenSelections[] = {"Camo"};

armor = "3*0.3";

passThrough = 0.75;

};

};

};

Share this post


Link to post
Share on other sites

Edit: fixed the problem ;D

Please delete

Edited by TDC-Insane

Share this post


Link to post
Share on other sites

Hey there,

I want to make a character mod, but I don't have any experience making any mod for any game at all. No modelling experience, no texturing experience, nothing. I've read through Vespa's tutorial, and while it covers all the bases for people who know what they're doing, for a noobie like me, it's not as helpful as it's made out to be. Right now I'm lost. I've managed to hack together something vaguely resembling a human with weird topology, an ugly texture, and I don't even know how, but I somehow got it "rigged" using Maczer's Blender skeleton with some very ugly weighting. I don't know what to do from here. Do I export to O2 with FHQ's toolbox and start adding proxies, selections, and other LODs? Should I make the other LODs in Blender? Do I make a high-poly version and bake a displacement map for texturing? I know ARMA is probably the most accessible game for modders out there, but for someone who's starting from scratch, there doesn't seem to be a lot of guidance. Can anyone help?

 

c361LtJ.png

Share this post


Link to post
Share on other sites

First post has a link that just points to this thread. "Stiltman's Excellent Guide..." seems rather interesting, but goes nowhere.

Share this post


Link to post
Share on other sites

Necro-post   :868:

 

I noticed a few people in various threads asking for retextures with most being told to do it themselves without providing any insight into actually accomplishing it.

I wrote a bare bones guide back during the A3 Alpha that has since become outdated and broken so I figured I’d update and redirect people to here.

 

 

Due to there being two ways of doing a replacement either though file replacement or hidden selection I’ve split the config and texture sections

 

DISCLAIMER: All of the below work requires the permission of the original author regardless of what technique you use. Some add-ons use a license that allows modifications for personal use/unpaid redistribution. Always check the license the author has used and if in doubt, be courteous and ask the author.

 

First off, I’m using BI Community/Steam tools for extraction, conversion and for my P Drive (Sorry .bat file elitists, I’m too lazy and need a GUI :P), Tom4897’s great Poseidon for configs and Photoshop CC for texture edits. Any version back to CS2 (Which is available for free through Adobe) should be capable of what you want to do.

There are probably programs people see as better out there by various programmers (Mikero and Kegety come to mind) which will do the same work, I just like Steam tools because it’s all in one menu and easy to use.

I’ll be using Wardan_1’s Crye JPC/Airframe helmets as an example.

 

First off we’re downloading and extracting.

If you have slow Australian internet like me, go make a coffee, a salad or write the intro to your re-texture guide to take up some time.

To extract I’m using BankRev (Steam Tools) which using the fileass tool in the steam tools package will open any PBO you double click (Assuming it’s not obscurificated).

Then we’re looking at the JPC vest files. Warden_1 has made this quite easy by grouping items to each folder with their own config, most addons do not do this while some of the larger ones will have their textures and models in one .pbo and their configs in another .pbo.

Anyway, downloaded, extracted, directed:

8HdkM3j.jpg

 

Now, configs are by default (assuming packing tools were used) converted to .binary files. To read these files you need to convert these back to .cpp format. For this I’m using CfgConvert as apart of the Steam tools package.

 

YWZi0xO.jpg

 

Now we have access to the vests configs! I’ve collapsed all the other copies (which are the same as you see anyway) and annotated the lines to help make sense.

 

 

 

4eyipL5.jpg

 

Now we can do this two ways, the dodgy way, which is replacing the file with the exact same name with the changes made to the original texture or through the use of hidden selections.

First hidden selections, most models have them to save space on having multiple models. For this we need to add a new section and a hiddenselection definition to the config. I’ve added and highlighted here below. The standard naming BI uses for their models is camo, camo2, etc. however this may change model to model and with different addon makers.

To create a new section I’ve simply copied the above section (JPC_RG) which has all the information we want already done, and changed the name to JPC_AOR1 and then added the hidden selection definition.

 

fnvCTEH.jpg

 

HOWEVER. Warden_1’s JPC doesn’t have a hiddenselection. So now what do we do? Well we have to say goodbye to one of the vests, In my case I’m going to replace the ranger green version (JPC_RG)


 

Extracting textures:

So now we’re going to access the textures

Before opening these files we’ll look at the file types. First off Arma uses .paa files for textures rather than the normal .Tiff of other engines or .jpg you’re probably familiar with. Why? I have no idea, I assume performance.

Files are also generally suffixed with their type, there are many more than listed here but this is what’s most common for characters:

Colour (xx_co.paa) – Also called Diffuse, is the colours that will be applied, camouflages are done here for example

Ambent Shadow (xx_as.paa) – commonly called ambient collusion or AO map. This creates soft shadows in the game.

Normal (xx_nohq.paa) – Also called bump mapping, is used to fake dents and and bumps light reflections and shadows would show without additional model detail.

Specular (xx_smdi.paa) – Optimiased specular maps, these define how shiny the object is.

Thermal (xx_ti.paa) – These visualize the object under thermal vision, for example a water bottle being cool and a rifle being hot.

 

Inn606P.jpg

 

For changing the camouflage we’re only looking at the color map for now, jpc_rg_co.paa

We’re going to open this with textview 2, which is in the steam tools suite and again, fileass will do the work for you. You might come across a .paa plugin written for photoshop CS3 for Arma 2, Just don’t bother. It’ll break more than it’s worth.

Next we’re going to export by going to save as… and saving as a .TGA file. Don’t use any other file types by TGA and PAA or texview will eat you alive.

 

NPzml9Xl.jpg

 

Now we open the .TGA file in your bitmap editor of choice and Make our changes, in this case I’ve added the camo and overlayed a desaturated version of the normal map to make up for the lost detail. If you’re using gimp you can simply place the camo over the desaturated normal and use the colour to alpha tool.

 

uQKoaahl.jpg

 

Now we save and export to TGA, load into texview2 and export as a .paa file in place of  the original .paa file, check the config and then repbo using addon builder

 

PLkPeS3.jpg

 

If you get a crash error error and a string of numbers from addon builder, go back and uncheck binarize.

Now load the game with the mod file running and preview it:

 

MtZSB8w.jpg

 

zB4o2f5.jpg

 

You can clearly tell I did this in 30 seconds as the colour tone doesn’t match the other AOR in the image, the stitching isn’t shown on the co map and there are parts of the original ranger green vest I didn’t cover. If you look online you can find brushes that replicate stitching, greyscales that replicate Velcro, etc.

This is ultimately an example of the more time you spend on it the better it will look.

 

There are probably better pipelines of going about the above task(s) but this is just what I could pull from memory :)

Due to there being two ways of doing a replacement either though file replacement or hidden selection I’ve split the config and texture sections

 

I'm also just going to tack on the link to stilmans guide from page 4 seeing as vespa's links are from the old forum software and broken now.

I haven't looked into the cfgweapons/scope error with apex so the above configs may cause that issue.

  • Like 1

Share this post


Link to post
Share on other sites

hi there, im trying to test skins for vests as i make them, im using the editor in arma 3 and im new to all of this, i only seem to be able to place skins onto uniforms and im using the code (this setobjecttexture[0,"item"];) but it only seems to skin the uniforms... i tired changing the number '0' to 1,2,3,4,5 but that doesnt work so what am i missing?  i think that explains how new to it i am. thanks lol

Share this post


Link to post
Share on other sites
2 hours ago, ajmtiling said:

hi there, im trying to test skins for vests as i make them, im using the editor in arma 3 and im new to all of this, i only seem to be able to place skins onto uniforms and im using the code (this setobjecttexture[0,"item"];) but it only seems to skin the uniforms... i tired changing the number '0' to 1,2,3,4,5 but that doesnt work so what am i missing?  i think that explains how new to it i am. thanks lol

that's because you need to use the same set object texture command in the vests init's and not the uniform init,as theyre both separate objects with their own model.cfg and config.cpp

  • Like 1

Share this post


Link to post
Share on other sites
9 hours ago, road runner said:

that's because you need to use the same set object texture command in the vests init's and not the uniform init,as theyre both separate objects with their own model.cfg and config.cpp

how do i open that menu up mate?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×