Jump to content
Vespa

Arma3 Characters Modding Tutorial

Recommended Posts

2013-03-08_00003_zps40c1140f.jpg

The vest is just like that all the time but it moves with me. Not sure what the problem is?

Share this post


Link to post
Share on other sites
http://i244.photobucket.com/albums/gg19/Einar7/2013-03-08_00003_zps40c1140f.jpg

The vest is just like that all the time but it moves with me. Not sure what the problem is?

Something is wrong with your model.cfg.

Overwrite your model.cfg with the following :

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 FJ_Test_Vest : ArmaMan {};
};

And change the "FJ_Test_Vest" at the bottom to whatever your vest classname is.

Share this post


Link to post
Share on other sites

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 NameOfVest : ArmaMan {};  // the .p3d name

};

Config

class cfgWeapons {
class ItemCore;	// External class reference
class InventoryItem_Base_F;	// External class reference
class HeadgearItem;
class Uniform_Base;
class UniformItem;
class Vest_Base;
class VestItem;



class U_DDAM_Vest: Vest_Base
{
	scope = 2;
	displayName = "Name Your Vest";
	picture = "\A3\characters_f\data\ui\icon_U_B_CombatUniform_mcam_tshirt_ca.paa"; // or where ever you got a picture
	model = "\YourFolderName\Na.p3d";

		class ItemInfo: VestItem
		{
			uniformModel = "\ddam_gear\NameOfVest.p3d";
			containerClass = "Supply100"; // or what ever space it got
			mass = 50;
			armor = "5*0.5"; // if bodyarmor various calues can be used
			passThrough = 0.7; // how much the vest stops a bullet going through
		};
};




};

Share this post


Link to post
Share on other sites

24810a1b-36d8-4018-a20b-25fc66d475d8_zpsca8493dc.jpg

Now it is just time to make the suit and hat

Share this post


Link to post
Share on other sites

Good job getting the vest working (and very nice to see the C8IUR in use :) )

Share this post


Link to post
Share on other sites

I'm trying to make a new helmet only.

I just can't seem to get any kind of 3DSMax to P3d exporter to work.

I've tried the VM_s-P3D_Export.mcr script but all it did was give me a error during export.

I've got a max file called Helmet1.max containing one helmet + a copy of it

with fewer polys, w/o smoothing and open faces to use as shadow lod.

It also contains the skeleton from the A3_character_template.max template file.

Not sure if I need it or not, but it's in there. Let me know if I can delete it.

I run the script,

press "Save as" and save it,

select all objects (helmets and skeleton) in the scene,

press export and get a error:

-- Runtime error: Modifier is not appropriate: Turn_to_Poly:Turn to Poly

Then I try to export without the skeleton, and just the two helmet objects. Then I get this:

-- Runtime error: Map support not enabled for specified map channel: 2

I am probably missing something simple. I've never exported something into the RV engine before. Help is appreciated :)

Edited by AlexVestin

Share this post


Link to post
Share on other sites

I dont know how max works or maxscripts.

but i would probably do it the "old" way and export every lod by itself as .3ds and import it into Oxygen that way. :)

Share this post


Link to post
Share on other sites

I'll try. It will probably make it all much easier!

I did set everything up like you told others in the other thread. The config.cpp file and the Model.cfg file. All I need is the .p3d file of a helmet.

(then learn ho to get the textures working with Oxygen)

Now to see if I've understood this correctly.

I'll just export each lod as a different (I've got two) .3ds file.

Then I'll open Oxygen to start importing each lod into one file containing them all.

My main lod goes under lod0?

My shadowlod goes under the name shadowlod0?

I need a empty lod called viewgeometry or the like to not get it disrupting first-person view.

Then rig them all to "head".

I'll probably figure out some stuff too when I see it if I got something above wrong. Do correct if you find any wrong doings on my side :)

EDIT: Stiltman helped me. My problems are gone.

Edited by AlexVestin

Share this post


Link to post
Share on other sites

I've been playing around with the "passThrough" value for the Vests alot but it doesn't seem to change anything...

It takes the same amount of shots as without a vest to kill someone. I've tried with "passThrough" set to both 0 and 1.

Share this post


Link to post
Share on other sites

might be connected to something else or bugged, I plan to explore this myself - I too get the feeling vests offer too little protection atm.

Share this post


Link to post
Share on other sites

so after some testing around, seems like the helmets of the nato soldiers dont support retexturing even though the config

has the hiddenselections defined, the textures dont change so im guessing the selection camo in the model dont work or

not defined properly in this version of the alpha.

Share this post


Link to post
Share on other sites

nope, SOMEONE :j: forgot to add the selection in models :rolleyes: I fix soon

Share this post


Link to post
Share on other sites

So, all the time taken testing and starting and ending arma 3 i should blame on that "SOMEONE" then ;)

Otherwise plate carrier vests and uniforms seem to work without problems :)

Share this post


Link to post
Share on other sites

No no, our universal culprit is Pettka :-D

So you managed to make the texture switching work for vests and uniforms? Care to post some description/example? I'll include it in the tutorial

Share this post


Link to post
Share on other sites

I can probably make something up for that sure.

---------- Post added at 14:04 ---------- Previous post was at 12:56 ----------

-Basic Retexturing Tutorial of Arma 3 content

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 Eliteness would probably work best in my opinion.

https://dev-heaven.net/projects/mikero-pbodll

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 full config would be like this

Download

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

full config example

Download

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

full config example

Download

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

Download


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

Edited by Stiltman

Share this post


Link to post
Share on other sites

This is first class! Linked.

Thank you so much for this!

Share this post


Link to post
Share on other sites

The maxscript refers to an O2 script that we're missing: convertBiTXT.bio2s. It appears to handle the conversion of the maxscript text file output to a .p3d readable by Oxygen 2.

Vespa, can you also add this to the tutorial: http://forums.bistudio.com/showthread.php?114036-STALKERGB-s-Weighting-overview for people who would want to skin/fix small errors in O2?

Edited by Contrails

Share this post


Link to post
Share on other sites

like to get a animal model.cfg for fish Catshark_F.p3d, Dolphin_F.p3d. as like to work on the ocean scene, Put lot more fish to see diving there a big part of the sea to wonder around in as there can be more coral clutter.

I feel this part of a mapping is new world and just great. I try master of sea mod gnat sub was so much fun, in preview I saw the seal fist pre shot at E3

http://3.bp.blogspot.com/-j3o1VErU6yU/T2nz6YsNROI/AAAAAAAAwfY/1_BDZDpdCR8/s1600/seal-1.jpg

thumbnail.php?file=vehicle_sdv_365086631.jpg&size=article_medium

article-2172368-1406FE28000005DC-348_468x329.jpg

SEAL+SDV_TheRegister.jpg

UKfastboat_large.jpg

first fish life sea snake, yuo the black white one there always around Eal, whale some wale watching, sharks sand and tiger. killer whale it could use the Dolphin_F model.cfg .

Thank you very much I want to try this new space. could make some cool mission

Edited by dragula

Share this post


Link to post
Share on other sites
The maxscript refers to an O2 script that we're missing: convertBiTXT.bio2s. It appears to handle the conversion of the maxscript text file output to a .p3d readable by Oxygen 2.

Vespa, can you also add this to the tutorial: http://forums.bistudio.com/showthread.php?114036-STALKERGB-s-Weighting-overview for people who would want to skin/fix small errors in O2?

convertBiTXT.bio2s - are you sure about that? I don't even have such file on my home computer, and I can import TXT just fine. Note - you import the maxscript generated txt directly into O2 - there is import option for that.

The O2 weighting tutorial is nice! I add it

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

×