Jump to content
Sign in to follow this  
wantafanta

anyone got a sample model.cfg for pistols?

Recommended Posts

title says it all, i tried my best with just using the pistol cfgmodel from the a2 samples pack but ive had a bit of issues doing this so id like to be able to see a working arma 3 model.cfg for sidearms

Share this post


Link to post
Share on other sites

What issue are you having?

model.cfg for pistols is fundamentally no different to the one for rifles or any other weapon. AFAIK the only characteristic difference is that they have a "recoil" animation that rotates the entire weapon frame using the reload source.

Share this post


Link to post
Share on other sites
class CfgSkeletons
{
	class Default
	{
		isDiscrete = 1;
		skeletonInherit = "";
		skeletonBones[] = {};
	};
	class YOURTAG_HandgunBase: Default
	{
		skeletonBones[]=
		{
			"zbran",		"",
			"frame", 		"zbran",
			"_camo",		"frame",
			"magazine", 		"frame",
			"bullet", 		"magazine",
			"magazine_release", 	"frame",
			"trigger", 		"frame",
			"trigger_bar", 		"frame",
			"hammer", 		"frame",
			"slide", 		"frame",
			"slide_catch", 		"frame",
			"selector_switch", 	"slide",
			"barrel", 		"frame",
			"zasleh", 		""
		};
	};
};

class CfgModels
{
	class YOURTAG_HandgunModelBase
	{
		skeletonName="YOURTAG_HandgunBase";
		class Animations
		{
			class muzzleflash_hide
			{
    				type="hide";
    				source="hasSuppressor";
    				selection="zasleh";
    				minValue = 0.0;
    				maxvalue = 0.25;
    				hideValue = 0.01;
			};

			class trigger 
			{
				type="rotationZ"; 
				source="reload"; 
				selection="trigger"; 
				axis="trigger_axis"; 
				minValue=0; 
				maxValue="1"; 
				angle0="0"; 
				angle1="-0.5"; 
			};

			class trigger_bar
			{
				type="translation"; 		//The type of animation.
				source="reload";   		//The controller that provides input.
				selection="trigger_bar"; 	//The name of the skeleton bone used.
				begin="trigger_bar_axis_begin";
				end="trigger_bar_axis_end";
				minValue="0"; 			//The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue="1"; 			//The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				offset0="0";
				offset1="1";
			};

			class hammer
			{
				type="rotationZ"; //The type of animation.
				source="reload";   //The controller that provides input.
				selection="hammer"; //The name of the skeleton bone used.
				axis="hammer_axis"; //The name of the axis in the model.
				minValue=0; //The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue="63"; //The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				angle0="0";   //The starting angle of this animation, where the animation phase is 0.
				angle1="-63"; //The ending angle of this animation, where the animation phase is 1.
			};

			class slide
			{
				type="translation"; 		// The type of animation.
				source="reload";   		// The controller that provides input.
				selection="slide"; 		// The name of the skeleton bone used.
				begin="slide_axis_begin";
				end="slide_axis_end";
				minValue=0; 			//The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue="1"; 			//The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				offset0="0";
				offset1="1";
			};

			class slide_back:slide
			{
				source="isEmpty";   		//The controller that provides input.
			};

			class slide_catch
			{
				type="rotationZ"; 		//The type of animation.
				source="isEmpty";   		//The controller that provides input.
				selection="slide_catch"; 	//The name of the skeleton bone used.
				axis="slide_catch_axis"; 	//The name of the axis in the model.
				minValue=0; 			//The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue="1"; 			//The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				angle0="0";   			//The starting angle of this animation, where the animation phase is 0.
				angle1="rad -2.5"; 		//The ending angle of this animation, where the animation phase is 1.
			};

			class magazine_release
			{
				type="translationZ"; // The type of animation.
				source="reloadMagazine";   // The controller that provides input.
				selection="magazine_release"; // The name of the skeleton bone used.
				minValue=0; //The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue=".002"; //The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				angle0="0";   //The starting angle of this animation, where the animation phase is 0.
				angle1="-.002"; //The ending angle of this animation, where the animation phase is 1.
			};

			class bullet_hide
			{
				type="hide";
				source="isempty";
				selection="bullet";
				hidevalue=0.10; // was 0.5
			};

			class reload_magazine_hide
			{
				type="hide";
				source="reloadMagazine";
				selection="magazine";
				hidevalue=0.22;
			};

			class reload_magazine
			{
				type="rotationZ"; // The type of animation.
				source="reloadMagazine";   // The controller that provides input.
				selection="magazine"; // The name of the skeleton bone used.
				axis="magazine_axis";                  // The name of the axis in the model.
				minValue="0.15"; // The minimum value of the motion range. i.e. The controller input when animation phase is 0.
				maxValue="0.5"; // The maximum value of the motion range. i.e. The controller input when animation phase is 1.
				angle0="0";   // The starting angle of this animation, where the animation phase is 0.
				angle1="rad -1.5"; // The ending angle of this animation, where the animation phase is 1.
			};

			class zaslehROT
			{
				type="rotationX";
				source="ammoRandom";
				sourceAddress="loop";
				selection="zasleh";
				axis="";
				centerFirstVertex=1;
				minValue=0;
				maxValue=4;
				angle0="rad 0";
				angle1="rad 360";
			};

			class recoil
			{
				type="rotation";
				source="reload";
				selection="frame";
				axis="recoil_axis";
				sourceAddress = clamp;
				minValue = 0.05;
				maxValue = 0.75;
				angle0 = 0.0;
				angle1 = -0.10471976;
			};
		};
		sections[]={"zasleh"};
		sectionsInherit="";
	};

	class YOUR_MODELNAME_MINUS_P3D_EXTENSION: YOURTAG_HandgunModelBase {};
};

There you go. Its a basic model.cfg, more detailed and in-depth tinkering may be required depending on what side-arm you're attempting to animate but has simple animations such as the slide-recoil (and locking back when empty), the recoil animation as da12thmonkey mentioned and muzzle-flash rotations and such. All animations will require the relevant selection names and memory points to function of course. Any questions just fire away.

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  

×