Jump to content
Sign in to follow this  
liukang168

Help with gatling gun

Recommended Posts

Dear community,

I am working on another project a gatling gun.

How can one make the turning animation for a new self made model?

Implementing into oxygen works fine, but which parameters needs to be set for:

Resolution lod - Barrels that turn

Memory lod - for the axis

Config.cpp

Does anyone know how to get it done? Or give me a hint where to look at? I checked several forums, looked into other older gatling guns, etc. Of course I couldnt look into the binarized models.

Share this post


Link to post
Share on other sites

I wasnt succesful in getting the animation to work:

I added the following animation to the model.cfg, does it also need to be implemented to the config.cpp? Can some please be so kind to have a detailed look into it? I didnt add anything to the config.cpp as it wasnt realy clear what to put in.

class CfgSkeletons
{
class Default
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class SKY_minigun_base: Default
{
	skeletonBones[]=
	{
		"magazine",
		"",
		"bolt",
		"",
		"",
		"siderail",
		"barrel",   <--------- the barrel (added in p3d visual mlod)
		""
	};
};

};
class Rotation;
class CfgModels
{
class Default
{
	sectionsInherit="";
	sections[]={};
	skeletonName="";
};
class SKY_minigun_base: Default
{
	sections[]=
	{
		"zasleh","magazine","bolt","barrel"
	};
	skeletonName="SKY_minigun_base";
	class Animations
	{
		class reload_magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=-0.40000001;
			maxValue=0.40000001;
			minPhase=-0.40000001;
			maxPhase=0.40000001;
			hideValue=0.75;
			sourceAddress="mirror";
		};
		class bolt
		{
			type="translation";
			source="reload";
			selection="bolt";
			axis="bolt_axis";
			memory = 1;
			minValue=0;
			maxValue="1";
			offset0="0";
			offset1="1";
		};
		class backsight_hide
		{
			 type="hide";
			 source="hasOptics";
			 selection="ironsights";
			 animPeriod=0;
			 minValue=0.0;
			 maxValue=0.3;
			 minPhase=0.0;
			 maxPhase=0.3;
			hideValue=0.1;
			sourceAddress="mirror";
		};
		class siderails_hide
		{
			 type="hide";
			 source="hasAccessory";
			 selection="siderail";
			 animPeriod=0;
			 minValue=0.0;
			 maxValue=0.3;
			 minPhase=0.0;
			 maxPhase=0.3;
			hideValue=0.1;
			sourceAddress="mirror";
		};
		class unloaded_magazine_hide {
			type = "hide";
			source = "hasMagazine";
			selection = "magazine";
			hideValue = 0.1;
		};
		class trigger      <---------------------------------------- THE ANIMATION
							{
							type = "rotationZ"; //The type of animation.
							source = "revolving";   //The controller that provides input.
							selection = "barrel"; //The name of the skeleton bone used.
							axis = "trigger_axis";                  //The name of the axis in the model.
							memory = true; //Is the axis defined in the memory level of the  //model or not?
							sourceAddress = "loop"; //Does the animation loop or not?
							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 -360"; //The ending angle of this animation,
		};                      //where the animation
       };		
};

class SKY_minigun : SKY_minigun_base
{
	class Animations : Animations 
		{};
};
};

AND here the config.cpp

class CfgPatches
{
class SKY_minigun
{
requiredaddons[] = {"A3_Weapons_F","A3_Weapons_F","A3_Weapons_F_Acc"};
requiredversion = 0.1;
units[] = {};
weapons[] = {"SKY_minigun","SKY_minigun_rco"};
magazines[] = {SKY_minigun_4000Rnd};
};
};

/*external*/ class Mode_FullAuto;
class Rifle_Long_Base_F;
class LMG_Mk200_F : Rifle_Long_Base_F {};


class CfgWeapons {
class SKY_minigun_base : LMG_MK200_F
{
	access = 3;
	afmax = 0;
	aidispersioncoefx = 8;
	aidispersioncoefy = 10;
	airateoffire = 0.5;
	airateoffiredistance = 500;
	ammo = "";
	artillerycharge = 1;
	artillerydispersion = 1;
	autofire = 1;
	autoreload = 0;
	backgroundreload = 0;
	ballisticscomputer = 0;
	bullet1[] = {"A3\sounds_f\weapons\shells\7_62\metal_762_01.wav", 0.1, 1, 15};
	bullet10[] = {"A3\sounds_f\weapons\shells\7_62\grass_762_02.wav", 0.01, 1, 15};
	bullet11[] = {"A3\sounds_f\weapons\shells\7_62\grass_762_03.wav", 0.01, 1, 15};
	bullet12[] = {"A3\sounds_f\weapons\shells\7_62\grass_762_04.wav", 0.01, 1, 15};
	bullet2[] = {"A3\sounds_f\weapons\shells\7_62\metal_762_02.wav", 0.1, 1, 15};
	bullet3[] = {"A3\sounds_f\weapons\shells\7_62\metal_762_03.wav", 0.177828, 1, 15};
	bullet4[] = {"A3\sounds_f\weapons\shells\7_62\metal_762_04.wav", 0.177828, 1, 15};
	bullet5[] = {"A3\sounds_f\weapons\shells\7_62\dirt_762_01.wav", 0.1, 1, 15};
	bullet6[] = {"A3\sounds_f\weapons\shells\7_62\dirt_762_02.wav", 0.1, 1, 15};
	bullet7[] = {"A3\sounds_f\weapons\shells\7_62\dirt_762_03.wav", 0.1, 1, 15};
	bullet8[] = {"A3\sounds_f\weapons\shells\7_62\dirt_762_04.wav", 0.1, 1, 15};
	bullet9[] = {"A3\sounds_f\weapons\shells\7_62\grass_762_01.wav", 0.01, 1, 15};
	candrop = 1;
	canlock = 0;
	canshootinwater = 0;
	cartridgepos = "nabojnicestart";
	cartridgevel = "nabojniceend";
	cmimmunity = 1;
	count = 0;
	cursor = "arifle";
	cursoraim = "CursorAim";
	cursoraimon = "";
	cursorsize = 1;
	descriptionshort = "Assault Rifle<br />Caliber: 5.56x45 mm";
	detectrange = 0;
	dexterity = 1.64;
	discretedistance[] = {100, 300, 400, 600, 800};
	discretedistanceinitindex = 1;
	dispersion = 0.0001;
	displayname = "M16A4";
	disposableweapon = 0;
	distancezoommax = 300;
	distancezoommin = 300;
	drysound[] = {"A3\sounds_f\weapons\other\dry7.wav", 0.01, 1};
	emptysound[] = {"", 1, 1};
	enableattack = 1;
	ffcount = 3;
	fffrequency = 11;
	ffmagnitude = 0.5;
	fireanims[] = {};
	firelightduration = 0.05;
	firelightintensity = 0.012;
	firespreadangle = "3.0f";
	flash = "gunfire";
	flashsize = 0.5;
	forceoptics = 0;
	handanim[] = {"OFP2_ManSkeleton", "\A3\Weapons_F\Rifles\MX\data\Anim\MX_dmr.rtm"};
	hiddenselections[] = {};
	hiddenselectionstextures[] = {};
	hiddenunderwaterselections[] = {};
	hiddenunderwaterselectionstextures[] = {};
	htmax = 600;
	htmin = 1;
	initspeed = 0;
	irdistance = 0;
	irdotintensity = 0.001;
	irlaserend = "laser dir";
	irlaserpos = "laser pos";
	laser = 0;
	lockacquire = 1;
	lockedtargetsound[] = {"\A3\sounds_f\dummysound", 0.000316228, 6};
	lockingtargetsound[] = {"\A3\sounds_f\dummysound", 0.000316228, 2};
	magazinereloadtime = 0;
	magazines[] = {"SKY_minigun_4000Rnd", "SKY_minigun_4000Rnd"};
	maxleadspeed = 200;
	maxrange = 500;
	maxrangeprobab = 0.04;
	maxrecoilsway = 0.008;
	memorypointcamera = "eye";
	mfact = 1;
	mfmax = 0;
	midrange = 150;
	midrangeprobab = 0.58;
	minrange = 1;
	minrangeprobab = 0.3;
	model = "\SKY_weapons\SKY_minigun\Sky_minigun";
	modelmagazine = "";
	modeloptics = "-";
	modelspecial = "";
	modes[] = {"manual"};
	multiplier = 1;
	muzzleend = "konec hlavne";
	muzzlepos = "usti hlavne";
	muzzles[] = {"this"};
	namesound = "rifle";
	optics = 0;
	opticsdisableperipherialvision = 0.67;
	opticsflare = 0;
	opticsid = 0;
	opticsppeffects[] = {};
	opticszoominit = 0.75;
	opticszoommax = 1.1;
	opticszoommin = 0.375;
	picture = "\SKY_weapons\\SKY_minigun\data\minigun_inventory_ca";
	primary = 10;
	recoil = "assaultRifleBase";
	recoilprone = "assaultRifleBase";
	reloadaction = "GestureReloadEBR";
	reloadmagazinesound[] = {"A3\sounds_f\weapons\reloads\new_trg.wav", 0.1, 1, 30};
	reloadsound[] = {"", 1, 1};
	reloadtime = 0.15;
	scope = 0;
	selectionfireanim = "zasleh";
	showaimcursorinternal = 1;
	showempty = 1;
	shownunderwaterselections[] = {};
	showswitchaction = 0;
	showtoplayer = 1;
	simulation = "Weapon";
	sound[] = {};
	soundbegin[] = {"sound", 1};
	soundbeginwater[] = {"sound", 1};
	soundbullet[] = {"bullet1", 0.083, "bullet2", 0.083, "bullet3", 0.083, "bullet4", 0.083, "bullet5", 0.083, "bullet6", 0.083, "bullet7", 0.083, "bullet8", 0.083, "bullet9", 0.083, "bullet10", 0.083, "bullet11", 0.083, "bullet12", 0.083};
	soundburst = 1;
	soundclosure[] = {"sound", 1};
	soundcontinuous = 0;
	soundend[] = {"sound", 1};
	soundloop[] = {"sound", 1};
	swaydecayspeed = 2;
	tbody = 100;
	texturetype = "default";
	type = 1;
	uipicture = "\A3\weapons_f\data\UI\icon_regular_CA.paa";
	useaction = 0;
	useactiontitle = "";
	useasbinocular = 0;
	usemodeloptics = 1;
	value = 4;
	weaponinfotype = "RscWeaponZeroing";
	weaponlockdelay = 0;
	weaponlocksystem = 0;
	weaponpoolavailable = 1;
	weaponsoundeffect = "";
	weight = 0;
	class Library {
		libtextdesc = "The M16 assault rifle entered service in 1965 at the onset of the Vietnam War. It answered the army's need to replace the ill-suited M14 with a lightweight rifle capable of effective automatic fire.<br/>The M16 uses a small, high velocity round with low recoil and good armor penetration, effective to about 500m. After numerous improvements and upgrades throughout its lifespan, the M16A2 remains in service today as the army's basic service rifle.";
	};
	class GunFire {
		access = 0;
		cloudletaccy = 0;
		cloudletalpha = 1;
		cloudletanimperiod = 1;
		cloudletcolor[] = {1, 1, 1, 0};
		cloudletdensitycoef = -1;
		cloudletduration = 0.2;
		cloudletfadein = 0.01;
		cloudletfadeout = 0.5;
		cloudletgrowup = 0.2;
		cloudletmaxyspeed = 100;
		cloudletminyspeed = -100;
		cloudletshape = "cloudletFire";
		cloudletsize = 1;
		deltat = -3000;
		initt = 4500;
		interval = -0.01;
		size = 3;
		sourcesize = 0.5;
		timetolive = 0;
		class Table {
			class T0 {
				color[] = {0.82, 0.95, 0.93, 0};
				maxt = 0;
			};
			class T1 {
				color[] = {0.75, 0.77, 0.9, 0};
				maxt = 200;
			};
			class T2 {
				color[] = {0.56, 0.62, 0.67, 0};
				maxt = 400;
			};
			class T3 {
				color[] = {0.39, 0.46, 0.47, 0};
				maxt = 600;
			};
			class T4 {
				color[] = {0.24, 0.31, 0.31, 0};
				maxt = 800;
			};
			class T5 {
				color[] = {0.23, 0.31, 0.29, 0};
				maxt = 1000;
			};
			class T6 {
				color[] = {0.21, 0.29, 0.27, 0};
				maxt = 1500;
			};
			class T7 {
				color[] = {0.19, 0.23, 0.21, 0};
				maxt = 2000;
			};
			class T8 {
				color[] = {0.22, 0.19, 0.1, 0};
				maxt = 2300;
			};
			class T9 {
				color[] = {0.35, 0.2, 0.02, 0};
				maxt = 2500;
			};
			class T10 {
				color[] = {0.62, 0.29, 0.03, 0};
				maxt = 2600;
			};
			class T11 {
				color[] = {0.59, 0.35, 0.05, 0};
				maxt = 2650;
			};
			class T12 {
				color[] = {0.75, 0.37, 0.03, 0};
				maxt = 2700;
			};
			class T13 {
				color[] = {0.88, 0.34, 0.03, 0};
				maxt = 2750;
			};
			class T14 {
				color[] = {0.91, 0.5, 0.17, 0};
				maxt = 2800;
			};
			class T15 {
				color[] = {1, 0.6, 0.2, 0};
				maxt = 2850;
			};
			class T16 {
				color[] = {1, 0.71, 0.3, 0};
				maxt = 2900;
			};
			class T17 {
				color[] = {0.98, 0.83, 0.41, 0};
				maxt = 2950;
			};
			class T18 {
				color[] = {0.98, 0.91, 0.54, 0};
				maxt = 3000;
			};
			class T19 {
				color[] = {0.98, 0.99, 0.6, 0};
				maxt = 3100;
			};
			class T20 {
				color[] = {0.96, 0.99, 0.72, 0};
				maxt = 3300;
			};
			class T21 {
				color[] = {1, 0.98, 0.91, 0};
				maxt = 3600;
			};
			class T22 {
				color[] = {1, 1, 1, 0};
				maxt = 4200;
			};
		};
	};
	class GunClouds {
		access = 0;
		cloudletaccy = 0;
		cloudletalpha = 0.3;
		cloudletanimperiod = 1;
		cloudletcolor[] = {1, 1, 1, 0};
		cloudletduration = 0.05;
		cloudletfadein = 0;
		cloudletfadeout = 0.1;
		cloudletgrowup = 0.05;
		cloudletmaxyspeed = 100;
		cloudletminyspeed = -100;
		cloudletshape = "cloudletClouds";
		cloudletsize = 1;
		deltat = 0;
		initt = 0;
		interval = -0.02;
		size = 0.3;
		sourcesize = 0.02;
		timetolive = 0;
		class Table {
			class T0 {
				color[] = {1, 1, 1, 0};
				maxt = 0;
			};
		};
	};
	class WeaponSlotsInfo {
		allowedslots[] = {901};
		mass = 4;
		class MuzzleSlot {};
		class CowsSlot {
			access = 1;
			compatibleitems[] = {};
			displayname = "Optics Slot";
			linkproxy = "\A3\data_f\proxies\weapon_slots\TOP";
			scope = 0;
		};
		class PointerSlot {
			access = 1;
			compatibleitems[] = {"acc_flashlight", "acc_pointer_IR"};
			displayname = "Pointer Slot";
			linkproxy = "\A3\data_f\proxies\weapon_slots\SIDE";
			scope = 0;
		};
	};	
	class GunParticles {
		class FirstEffect {
			directionname = "Konec hlavne";
			effectname = "RifleAssaultCloud";
			positionname = "Usti hlavne";
		};
	};
	class manual: Mode_FullAuto
	{
		begin1[]=
		{
			"A3\sounds_f\weapons\hmg\hmg_gun",
			3.1622777,
			1,
			1100
		};
		soundBegin[]=
		{
			"begin1",
			0.5
		};
		recoil="recoil_auto_machinegun_8outof10";
		recoilProne="recoil_auto_machinegun_prone_5outof10";
		dispersion=0.00079999998;
		soundContinuous=0;
		soundBurst=0;
		minRange=0;
		minRangeProbab=0.30000001;
		midRange=5;
		midRangeProbab=0.57999998;
		maxRange=10;
		maxRangeProbab=0.039999999;
		showToPlayer=1;
		reloadTime=0.070876203;
	};
	/*class Single: Mode_SemiAuto {
		aidispersioncoefx = 1.4;
		aidispersioncoefy = 1.7;
		airateoffire = 2;
		airateoffiredistance = 500;
		artillerycharge = 1;
		artillerydispersion = 1;
		autofire = 0;
		begin1[] = {"A3\sounds_f\weapons\Trg20\trg_single_1.wav", 2.51189, 1, 1200};
		begin2[] = {"A3\sounds_f\weapons\Trg20\trg_single_2.wav", 2.51189, 1, 1200};
		begin3[] = {"A3\sounds_f\weapons\Trg20\trg_single_3.wav", 2.51189, 1, 1200};
		burst = 1;
		canshootinwater = 0;
		closure1[] = {"A3\sounds_f\weapons\closure\closure_rifle_2.wav", 3.16228, 1, 500};
		closure2[] = {"A3\sounds_f\weapons\closure\closure_rifle_3.wav", 3.16228, 1, 500};
		dispersion = 0.00093;
		displayname = "Semi";
		ffcount = 1;
		fffrequency = 11;
		ffmagnitude = 0.5;
		flash = "gunfire";
		flashsize = 0.1;
		maxrange = 500;
		maxrangeprobab = 0.2;
		midrange = 250;
		midrangeprobab = 0.7;
		minrange = 2;
		minrangeprobab = 0.3;
		multiplier = 1;
		recoil = "recoil_single_trg";
		recoilprone = "recoil_single_prone_trg";
		reloadtime = 0.065;
		requiredoptictype = -1;
		showtoplayer = 1;
		sound[] = {"", 10, 1};
		soundbegin[] = {"begin1", 0.333, "begin2", 0.333, "begin3", 0.333};
		soundbeginwater[] = {"sound", 1};
		soundburst = 0;
		soundclosure[] = {"closure1", 0.5, "closure2", 0.5};
		soundcontinuous = 0;
		soundend[] = {};
		soundloop[] = {};
		texturetype = "semi";
		useaction = 0;
		useactiontitle = "";
		weaponsoundeffect = "DefaultRifle";
	};
	class Burst: Mode_Burst {
		aidispersioncoefx = 2;
		aidispersioncoefy = 3;
		airateoffire = "1e-006";
		airateoffiredistance = 500;
		artillerycharge = 1;
		artillerydispersion = 1;
		autofire = 0;
		begin1[] = {"A3\sounds_f\weapons\Trg20\trg_single_1.wav", 2.51189, 1, 1200};
		begin2[] = {"A3\sounds_f\weapons\Trg20\trg_single_2.wav", 2.51189, 1, 1200};
		begin3[] = {"A3\sounds_f\weapons\Trg20\trg_single_3.wav", 2.51189, 1, 1200};
		burst = 3;
		canshootinwater = 0;
		closure1[] = {"A3\sounds_f\weapons\closure\closure_rifle_2.wav", 3.16228, 1, 500};
		closure2[] = {"A3\sounds_f\weapons\closure\closure_rifle_3.wav", 3.16228, 1, 500};
		dispersion = 0.00093;
		displayname = "Burst";
		ffcount = 1;
		fffrequency = 11;
		ffmagnitude = 0.5;
		flash = "gunfire";
		flashsize = 0.1;
		maxrange = 30;
		maxrangeprobab = 0.05;
		midrange = 15;
		midrangeprobab = 0.7;
		minrange = 0;
		minrangeprobab = 0.9;
		multiplier = 1;
		recoil = "recoil_auto_trg";
		recoilprone = "recoil_auto_prone_trg";
		reloadtime = 0.07;
		requiredoptictype = -1;
		showtoplayer = 1;
		sound[] = {"", 10, 1};
		soundbegin[] = {"begin1", 0.333, "begin2", 0.333, "begin3", 0.333};
		soundbeginwater[] = {"sound", 1};
		soundburst = 0;
		soundclosure[] = {"closure1", 0.5, "closure2", 0.5};
		soundcontinuous = 0;
		soundend[] = {"sound", 1};
		soundloop[] = {};
		texturetype = "burst";
		useaction = 0;
		useactiontitle = "";
		weaponsoundeffect = "DefaultRifle";
	};*/

};
class SKY_minigun : SKY_minigun_base {
	scope = 2;
};
class SKY_minigun_las : SKY_minigun {
	scope = 2;
	class LinkedItems {
		class LinkedItemsOptic {
			item = "acc_pointer_IR";
			slot = "PointerSlot";
		};
	};
};
};

class CfgMagazines
{
class CA_Magazine;
class SKY_minigun_4000Rnd: CA_Magazine
{
	displayname="Minigun 4000 rnd mag";
	scope=2;
	ammo="TB_556x45_Ball";
	count=4000;
	maxLeadSpeed=200;
	tracersEvery=5;
	nameSound="mgun";
	picture="\SKY_minigun\data\minigun_inventory_ca.paa";
};
};
class CfgAmmo {
/*external*/ class B_556x45_Ball;
class TB_556x45_Ball : B_556x45_Ball {
	airfriction = -0.001425;
	caliber = 0.5;
	cost = 1;
	deflecting = 20;
	hit = 8;
	indirecthit = 0;
	indirecthitrange = 0;
	model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
	nvgonly = 1;
	tracerendtime = 1;
	tracerscale = 1;
	tracerstarttime = 0.05;
};
class TB_556x45_Tracer : TB_556x45_Ball {
	airfriction = -0.001425;
	caliber = 0.4;
	model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
	nvgonly = 0;
	tracerendtime = 1.4;
	tracerscale = 1;
	tracerstarttime = 0.06;
};
};	

Share this post


Link to post
Share on other sites

class cfgmodels, the classname needs to be the same as your P3D name, all explained on the BIKI - I doubt your P3D is called 'SKY_minigun_base'

Share this post


Link to post
Share on other sites
class cfgmodels, the classname needs to be the same as your P3D name, all explained on the BIKI - I doubt your P3D is called 'SKY_minigun_base'

Ok i give a try. So like this?

class SKY_minigun : SKY_minigun_base
{
	class Animations : Animations 
		{
		class trigger
							{
							type = "rotationZ"; //The type of animation.
							source = "revolving";   //The controller that provides input.
							selection = "barrel"; //The name of the skeleton bone used.
							axis = "trigger_axis";                  //The name of the axis in the model.
							memory = true; //Is the axis defined in the memory level of the  //model or not?
							sourceAddress = "loop"; //Does the animation loop or not?
							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 -360"; //The ending angle of this animation,
		};                      //where the animation};
};

Edited by liukang168

Share this post


Link to post
Share on other sites

Not quite (this assumes everything else is written correctly). Below is a 'corrected' model.cfg - you had other odd things like your bones not being linked:

class CfgSkeletons
{
class Default
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class SKY_minigun_base: Default
{
	skeletonBones[]=
	{
		"magazine","",
		"bolt","",
		"siderail","",
		"barrel",""  <--------- the barrel (added in p3d visual mlod)
	};
};

};
class Rotation;
class CfgModels
{
class Default
{
	sectionsInherit="";
	sections[]={};
	skeletonName="";
};
class SKY_minigun: Default
{
	sections[]=
	{
		"zasleh","magazine","bolt","barrel"
	};
	skeletonName="SKY_minigun_base";
	class Animations
	{
		class reload_magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=-0.40000001;
			maxValue=0.40000001;
			minPhase=-0.40000001;
			maxPhase=0.40000001;
			hideValue=0.75;
			sourceAddress="mirror";
		};
		class bolt
		{
			type="translation";
			source="reload";
			selection="bolt";
			axis="bolt_axis";
			memory = 1;
			minValue=0;
			maxValue="1";
			offset0="0";
			offset1="1";
		};
		class backsight_hide
		{
			 type="hide";
			 source="hasOptics";
			 selection="ironsights";
			 animPeriod=0;
			 minValue=0.0;
			 maxValue=0.3;
			 minPhase=0.0;
			 maxPhase=0.3;
			hideValue=0.1;
			sourceAddress="mirror";
		};
		class siderails_hide
		{
			 type="hide";
			 source="hasAccessory";
			 selection="siderail";
			 animPeriod=0;
			 minValue=0.0;
			 maxValue=0.3;
			 minPhase=0.0;
			 maxPhase=0.3;
			hideValue=0.1;
			sourceAddress="mirror";
		};
		class unloaded_magazine_hide {
			type = "hide";
			source = "hasMagazine";
			selection = "magazine";
			hideValue = 0.1;
		};
		class trigger      <---------------------------------------- THE ANIMATION
							{
							type = "rotationZ"; //The type of animation.
							source = "revolving";   //The controller that provides input.
							selection = "barrel"; //The name of the skeleton bone used.
							axis = "trigger_axis";                  //The name of the axis in the model.
							memory = true; //Is the axis defined in the memory level of the  //model or not?
							sourceAddress = "loop"; //Does the animation loop or not?
							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 -360"; //The ending angle of this animation,
		};                      //where the animation
               };		
};
};

this assumes your model name is SKY_minigun.p3d

Share this post


Link to post
Share on other sites

Dear Mesiah, the SKY_minigun_base was already correct. The other animations work with that already. Such as magzine hide, etc. What I just cant get to work is the right animation code.

So I reworked it and what is esssential:

Mlod visual 1 = labeled only the barrels = barrel_all // renamed in the skeleton definition aswell!, I even made the barrels not touch the model (dont know if this is important for a animated part of an model)

Mlod memmory = created an axis for the barrel = barrel_axis // tried also without an axis

but what goes wrong is the animation its self. Nothing happens.

class barrel_spin

{

type="rotationX"; // tried rotation,rotationY;rotationZ (X seems to be logic)

source="revolving";

selection="barrel_all"; (tried to rename it maybe barrel is already defined within the engine for something else)

axis="barrel_axis"; // also tried without a labeled axis

memory = true; // o / 1

sourceAddress = "loop"; ???

minValue=0;

maxValue="1";

angle0 = 0;

angle1 = "rad 360"; ???

};

Share this post


Link to post
Share on other sites

true, your other class inherits from it, but there's really very little need to do base classes in something like this. The barrels just have to be seperate from the mesh, doesn't matter if they touch or not :)

I'm a little rusty on weapon animations, but I know that the revolving source needs to know what weapon is being fired to trigger the revolve... the following is from the UH60, but it's a cfgvehciles entry, not a cfgweapons entry, so I'm not sure if it will work on a handheld gatling gun:

class AnimationSources: AnimationSources 
{
         class Revolving 
         {
                   source = "revolving";
                   weapon = "M240_veh_2";
         };
};

where 'weapon' would be the name of your weapon. However, I have no idea if this will work with a handheld weapon

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  

×