Jump to content
penguin1018

Muzzleflash and animated parts aren't working

Recommended Posts

The other day I threw together a very simple gun just to try and learn how to get it into Arma 3. The model appears correctly and it functions but the muzzle flash is simply frozen (http://i.imgur.com/ZNjJVSY.jpg) and the bolt doesn't move. I followed Zachs tutorial on making weapons, and I based my model.cfg on the one he included. In Object Builder, I added a proxy with \A3\Data_f\proxies\muzzle_flash\muzzle_flash_rifle_Mk20 and a selection of the proxy called zasleh (http://i.imgur.com/0hzTG8n.png). For the muzzleflash (Zachs guide didn't include one) I copied the relevant lines from the Arma Tools example weapon. In the config.cpp, there is selectionFireAnim = "zasleh";

 

I'm sure I did something wrong, but I just can't see what. I've included the entire model.cfg hoping someone can spot the issue.

class CfgSkeletons
{
	class Default
	{
		isDiscrete=0;
		skeletonInherit="";
		skeletonBones[]={};
	};
	class tb_arifle_m16a4_base: Default
	{
		skeletonBones[]=
		{
			"magazine",
			"",
			"bolt",
			"",
			"zasleh",
			""
		};
	};

};

class CfgModels
{
	class Default
	{
		sectionsInherit="";
		sections[]={};
		skeletonName="";
	};
	class tb_arifle_m16a4_base: Default
	{
		sections[]=
		{
			"magazine",
			"zasleh",
			"bolt"
		};
		skeletonName="tb_arifle_m16a4_base";
		class Animations
		{
		};
	};
	class Test_weapon_01_F: tb_arifle_m16a4_base
	{
		class Animations
		{
		
			class zaslehROT
			{
				type="rotation";
				source="clockMinute";
				sourceAddress="loop";
				selection="zasleh";
				begin="usti hlavne";
				end="konec hlavne";
				memory=1;
				minValue=0.0166665;
				maxValue=0.016666666666666666666666666666667;
				angle0="rad 0";
				angle1="rad 360";
			};
			//ALSO TRY THIS   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 magazine_reload_move_1
			{
				type="translation";
				source="reloadMagazine";
				selection="magazine";
				axis="magazine_axis";
				minValue=0.145;
				maxValue=0.2;
				offset0=0;
				offset1=0.40000001;
			};
			class magazine_hide
			{
				type="hide";
				source="reloadMagazine";
				selection="magazine";
				minValue= 0;
				maxValue=1;
				minPhase= 0;
				maxPhase=1;
				hideValue=1;
				sourceAddress="mirror";
			};
			class bolt_empty
			{
				type="translation";
				source="isempty";
				selection="bolt";
				memory=1;
				sourceAddress="clamp";
				minValue=0;
				maxValue=1;
				begin="bolt_start";
				end="bolt_end";
				offset0=0;
				offset1=1;
			};
			class bolt_empty_1
			{
				type="translation";
				source="reloadMagazine";
				selection="bolt";
				memory=1;
				sourceAddress="clamp";
				minValue=0;
				maxValue=1;
				begin="bolt_start";
				end="bolt_end";
				offset0=0;
				offset1=1;
			};
			{
				type="translation";
				source="reload";
				selection="bolt";
				axis="bolt_axis";
				memory=1;
				minValue=0.000000;
				maxValue=0.300000;
				offset0=0;
				offset1=0.5;
			};
			class bolt_fire_end:bolt_fire_begin
			{
				minValue=0.500000;
				maxValue=1.000000;
				offset0=0;
				offset1=-0.5;
			};
			class bolt_reload_begin
			{
				type="translation";
				source="reloadMagazine";
				selection="bolt";
				axis="bolt_axis";
				memory=1;
				minValue=0.1;
				maxValue=0.15;
				offset0=0;
				offset1=0.5;
			};
			class bolt_reload_end:bolt_reload_begin
			{
				minValue=0.980000;
				maxValue=1.000000;
				offset0=0;
				offset1=-0.5;
			};
			
			
		};
	};
};

Share this post


Link to post
Share on other sites

Then you have to change the name of your cfgModels class to be exactly the same as your .p3d name.

i.e change this:

	class Test_weapon_01_F: tb_arifle_m16a4_base
	{
to this:

	class testrifle: tb_arifle_m16a4_base
	{

Share this post


Link to post
Share on other sites

I managed to get the bolt to move properly. No luck with the muzzleflash though.

 

Let me just make sure I'm doing it right. I created a proxy and entered \A3\Data_f\proxies\muzzle_flash\muzzle_flash_rifle_Mk20 into the dialog/name box. I then selected the proxy and created a selection called "zasleh". In the config.cpp, I have selectionfireanim = "zasleh"; within CfgWeapons, just where I see it in other peoples configs. All the paths to models are correct, and I made the change you suggested. I removed the zaslehROT section from the model.cfg in case that was interfering with something. Now I'm just stumped.

Share this post


Link to post
Share on other sites

Alright I fixed it. In model.cfg I removed "zasleh", "", from skeletonBones and left it in the sections[]= under class tb_arifle_m16a4_base: Default. In the config.cpp I moved selectionFireAnim = "muzzleFlash"; to class Test_weapon_01_Base_F: Rifle_Base_F. I'm not sure which switch made it work, but it does. Thanks for the CfgModel tip too.

Share this post


Link to post
Share on other sites

Muzzleflash fixed it, devs started moving from zasleh anyway.

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

×