Jump to content
Sign in to follow this  
blackpixxel

How to add the Muzzle Flash?

Recommended Posts

Hi,

This is my first time that I am working on a weapon mod, so I don't know alot about the whole config-editing.

I would like to add those nice Arma 3 muzzle-flashes. The wiki tells me to create a proxy in Oxygen, but I don't know in which LOD. Because the Optic-Proxy is in the Pilot/1.000 LOD I made the muzzleflash proxy there too. Then it says that I have to add this to the "zasleh"-named selection, and at this point I don't know what to do.

Do I have to create a new selection in oxygen, in the config or in the model-config? And what next? I could not find any examples in the config's of the vanilla weapons.

I would really like to see what I have to do exactly, because all the stuff is pretty confusing to me.

Thank you for your help.

Share this post


Link to post
Share on other sites

In O2 with the muzzle flash proxy selected create the new named selection, see the sample weapon in Steam Tools.

Share this post


Link to post
Share on other sites

I did that, but now I have always the muzzle flash, that means it is static and the whole time on the model, it won't disapear..

Share this post


Link to post
Share on other sites

well does your weapon fire... in your model.cfg do you inherit zasleh ? i think that helps it appear and disapear

Share this post


Link to post
Share on other sites

Thank you, after adding the "inherit" and some trial and error with the p3d file the muzzleflash is now working as expected, thank you guys!

Share this post


Link to post
Share on other sites

Hey guys, I'm having now the same problem. A static muzzle flash.

I've been messing around with the model.cfg and I can't solve this, I'm getting very frustrated thinking about not doing this anymore.

It's a goddamn simple little cfg file, but it's giving me headaches for a week now.

@BlackPixxel Can you help me man and tell me please what have you done?

Below you can find the model.cfg: (the model name is BRAF_Imbel_IA2_556_Carbine.p3d)

#define BULLET_HIDE(x,from,count) class Bullet##x\
		{\
			type="hide";\
			source="revolving";\
			sourceAddress="mirror";\
			selection=bullet##x;\
			minValue=-1.000000;\
			maxValue= 0.000000;\
			hideValue=((count+x-from-2)/count)+0.00001;\
		};

class CfgSkeletons
{
class Default
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class BRAF_Imbel_IA2_556_Carbine_base: Default
{
	isDiscrete=1;
	skeletonInherit="Default";
	skeletonBones[]=
	{
		"bullet_cover","",
		"aimpoint_cover","",
		"aimpoint_cover02","",
		"charging_handle","",
		"misc_cover","",
		"trigger",		"", /// not in this model, but good to use
		"bolt",			"",
		"bolt_catch",	"",
		"magazine",		"",
		"safety",		"",
		"muzzleFlash",	"",
		"OP",			"",
		"ForeSight",	"",
		"BackSight",	""
	};
};
};

class CfgModels
{
class Default;
class BRAF_Imbel_IA2_556_Carbine_base: Default
{
	sections[]=
	{
		"zasleh"
	};
	sectionsInherit="";
	skeletonName="BRAF_Imbel_IA2_556_Carbine_base";
	class Animations
	{
		class muzzleFlashROT
		{
			type="rotationX";
			source="ammoRandom";      //use ammo count as phase for animation
			sourceAddress="loop";     //loop when phase out of bounds
			selection="muzzleFlash";  //selection we want to rotate
			axis="";                  //no own axis - center of rotation is computed from selection
			centerFirstVertex=true;   //use first vertex of selection as center of rotation
			minValue=0;
			maxValue=4;               //rotation angle will be 360/4 = 90 degrees
			angle0="rad 0";
			angle1="rad 360";
		};
		class trigger /// not in this model, but good to use
		{
			type = "rotation";
			source = "reload";
			sourceAddress = "clamp";
			selection = "trigger";
			axis = "trigger_axis";
			minValue = 0;
			maxValue = "1";
			angle0 = "0";
			angle1 = "rad -30";
		};

		class bolt
		{
			type = "translation";
			source = "reload";
			sourceAddress = clamp;
			selection = "bolt";
			axis = "bolt_axis";
			minValue = 0.5;
			maxValue = 1;
			offset0 = 0;
			offset1 = 0.3;
		};
		class bolt_2: bolt
		{
			minValue = 0;
			maxValue = 0.5;
			offset0 = 0;
			offset1 = 0.7;
		};
		class bolt_empty: bolt{
			source = "isEmptyNoReload";
			minValue = 0;
			maxValue = 1;
			offset0 = 0;
			offset1 = 1;
		};
		class bolt_reload_move_1: bolt_empty {
			source="reloadMagazine";	// z: should work like that only if weapon is empty
			minValue=0;
			maxValue=0.00001;
		};
		class bolt_reload_move_2: bolt_reload_move_1 {
			source="reloadMagazine";	// z: should work like that only if weapon is empty
			minValue=0.78;
			maxValue=0.80;
			offset1 = -1;
		};
		class bolt_catch: bolt {
			selection = "bolt_catch";
			axis = "bolt_catch_axis";
		};
		class bolt_catch_2: bolt_2 {
			selection = "bolt_catch";
			axis = "bolt_catch_axis";
		};
		class bolt_catch_empty: bolt_empty {
			selection = "bolt_catch";
			axis = "bolt_catch_axis";
		};
		class bolt_catch_reload_move_1: bolt_reload_move_1 {
			selection = "bolt_catch";
			axis = "bolt_catch_axis";
		};
		class bolt_catch_reload_move_2: bolt_reload_move_2 {
			selection = "bolt_catch";
			axis = "bolt_catch_axis";
		};
		class magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=0.000000;
			maxValue=1.00000;
			hideValue=0.188;
			unhideValue = 0.663;
		};
		class no_magazine
		{
			type="hide";
			source="hasMagazine";
			selection="magazine";
			minValue=0.000000;
			maxValue=1.00000;
			hideValue=0.5;
			unhideValue = -1.0;
		};
		class magazine_reload_move_1
		{
			type = "translation";
			source = "reloadMagazine";
			selection = "magazine";
			axis = "magazine_axis";
			minValue = 0.145;
			maxValue = 0.170;
			offset0 = 0.0;
			offset1 = 0.5;
		};
		class magazine_reload_move_2: magazine_reload_move_1
		{
			minValue = 0.673;
			maxValue = 0.702;
			offset0 = 0.0;
			offset1 = -0.5;
		};
		class OP_ROT
		{
			type="rotation";
			source="zeroing2";    // use second muzzle zeroing for rotation
			sourceAddress="loop"; // loop when phase out of bounds
			selection="OP";       // selection we want to rotate
			axis="OP_axis";       // has its own axis
			minValue=0;
			maxValue=3;
			angle0="rad 0";
			angle1="rad 65";
		};
		class BackSight_optic
		{
			type="rotation";
			source="hasOptics";
			selection="BackSight";
			axis="BackSight_axis";
			memory=1;
			minValue=0.0000000;
			maxValue=1.0000000;
			angle0=0.000000;
			angle1=(rad 90);
		};
		class ForeSight_optic: BackSight_optic
		{
			selection="ForeSight";
			axis="ForeSight_axis";
			angle1=(rad 90);
		};

	// Rotation of fire mode switch
		class safety_mode_rot
		{
			type			= rotation;
			source			= weaponMode;
			selection		= "safety";
			axis			= "safety_axis";
			memory			= 1;
			minValue		= 0;
			maxValue		= 0.25;
			angle0			= 0;
			angle1			= (rad -52);
		};
	};
};

class BRAF_Imbel_IA2_556_Carbine: BRAF_Imbel_IA2_556_Carbine_base 
{

};
};

Share this post


Link to post
Share on other sites

I'm sorry but I really don't know what change exactly made the thing working, I will have a look into my config, maybe I will remember what it was..

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
Sign in to follow this  

×