Jump to content
Sign in to follow this  
skelebob9

Weapon attachments not working, bullets firing incorrectly

Recommended Posts

I'm fairly new to using O2, so I'm probably doing something blatantly obvious. However, I've been checking all day for tutorials on how to create proxies properly however the only tutorials that I thought would be relevant are just forward-porting ArmA 2 to ArmA 3 which say "do the same that you do in ArmA 2". I've looked through the forums both here and at Armaholic and neither have helped me.

Basically, I go ingame and any variation of my weapon just doesn't support attachments.

class CowsSlot : SlotInfo
{
	// targetProxy
	linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";

	// display name
	displayName = $STR_A3_CowsSlot0;

	// class names with items supported by weapon 
	compatibleItems[] = {"optic_Arco","optic_aco", "optic_ACO_grn","optic_hamr","optic_Holosight", "optic_Nightstalker"};
}; 

I can't add any attachments to my weapon, it's just red. I even tried the following:

class L85A2_holo: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_HoloSight";
		};
	};
};

Like I said, I couldn't find any help on creating the proxies, so I tried to do it myself:

i.imgur.com/tJZVAwo.png

I tried resizing, rotating and even doing nothing to the triangles, but nothing has worked. Attachments are still unable to be attached and when I try to attach them in the config.cpp they don't show up. My proxy paths are \A3\data_f\proxies\weapon_slots\TOP and \a3\data_f\proxies\weapon_slots\muzzle, both are where the attachments should be (I think).

My second problem is aiming and then the actual firing of my gun. When I aim, I just get my hand while when I fire, dust comes from the ground below the centre of my character, no matter my stance, and my bullets are fired at a 90-degree angle to where I'm aiming.

Does anyone know a solution to either of my problems?

#define _ARMA_

class CfgPatches
{
class L85A2
{
	units[] = {};
	weapons[] = {"L85A2_irn","L85A2_ns","L85A2_holo","L85A2_holo_laser","L85A2_arco_laser"};
	requiredVersion = 0.50;
	requiredAddons[] = {};
};
};
class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;
class SlotInfo;
class CowsSlot : SlotInfo
{
	// targetProxy
	linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";

	// display name
	displayName = $STR_A3_CowsSlot0;

	// class names with items supported by weapon 
	compatibleItems[] = {"optic_Arco","optic_aco", "optic_ACO_grn","optic_hamr","optic_Holosight", "optic_Nightstalker"};
}; 
class PointerSlot : SlotInfo
{
	// targetProxy
	linkProxy = "\A3\data_f\proxies\weapon_slots\SIDE";

	// display name
	displayName = $STR_A3_PointerSlot0;

	// class names with items supported by weapon 
	compatibleItems[] = {"acc_flashlight","acc_pointer_IR"}; 
};
class CfgWeapons
{
class Rifle;
class Rifle_Base_F: Rifle
{
	class WeaponSlotsInfo;
	class GunParticles;
};
class UGL_F;
class L85A2_Base: Rifle_Base_F
{
	magazines[] = {"30Rnd_556x45_Stanag"};
	reloadAction = "GestureReloadKhaybar";
	handAnim[] = {"OFP2_ManSkeleton","\A3\Weapons_F\Rifles\Khaybar\data\anim\khaybar.rtm"};
	class WeaponSlotsInfo: WeaponSlotsInfo
	{
		class WeaponSlotsInfo
		{
			mass = 38; /// default mass of a weapon
			class MuzzleSlot: SlotInfo
			{
			  // targetProxy
			  linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";

			  // display name
			  displayName = "Muzzle Slot";

			  // class names with items supported by weapon
			  compatibleItems[] = {}; // moved to each weapon
			};
			class CowsSlot: CowsSlot {};
			class PointerSlot: PointerSlot {};
			allowedSlots[] = {901}; // you simply cannot put this into your pants
		};
	};
	class GunParticles: GunParticles
	{
		class SecondEffect
		{
			positionName = "Nabojnicestart";
			directionName = "Nabojniceend";
		};
	};
	opticsZoomMin = 0.375;
	opticsZoomMax = 1.1;
	opticsZoomInit = 0.75;
	distanceZoomMin = 300;
	distanceZoomMax = 300;
	bullet1[] = {"A3\sounds_f\weapons\shells\5_56\metal_556_01.wav",0.1,1,15};
	bullet2[] = {"A3\sounds_f\weapons\shells\5_56\metal_556_02.wav",0.1,1,15};
	bullet3[] = {"A3\sounds_f\weapons\shells\5_56\metal_556_03.wav",0.17782794,1,15};
	bullet4[] = {"A3\sounds_f\weapons\shells\5_56\metal_556_04.wav",0.17782794,1,15};
	bullet5[] = {"A3\sounds_f\weapons\shells\5_56\asphlat_556_01.wav",0.1,1,15};
	bullet6[] = {"A3\sounds_f\weapons\shells\5_56\asphlat_556_02.wav",0.1,1,15};
	bullet7[] = {"A3\sounds_f\weapons\shells\5_56\asphlat_556_03.wav",0.1,1,15};
	bullet8[] = {"A3\sounds_f\weapons\shells\5_56\asphlat_556_04.wav",0.1,1,15};
	bullet9[] = {"A3\sounds_f\weapons\shells\5_56\grass_556_01.wav",0.01,1,15};
	bullet10[] = {"A3\sounds_f\weapons\shells\5_56\grass_556_02.wav",0.01,1,15};
	bullet11[] = {"A3\sounds_f\weapons\shells\5_56\grass_556_03.wav",0.01,1,15};
	bullet12[] = {"A3\sounds_f\weapons\shells\5_56\grass_556_04.wav",0.01,1,15};
	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};
	modes[] = {"Single","FullAuto","single_medium_optics1","single_far_optics2","fullauto_medium"};
	class Single: Mode_SemiAuto
	{
		begin1[] = {"A3\sounds_f\weapons\khaybar\khaybar_1.wav",1.0,1,900};
		begin2[] = {"A3\sounds_f\weapons\khaybar\khaybar_2.wav",1.0,1,900};
		soundBegin[] = {"begin1",0.5,"begin2",0.5};
		weaponSoundEffect = "DefaultRifle";
		reloadTime = 0.065;
		recoil = "recoil_single_trg";
		recoilProne = "recoil_single_prone_trg";
		dispersion = 0.00093;
		minRange = 2;
		minRangeProbab = 0.3;
		midRange = 250;
		midRangeProbab = 0.7;
		maxRange = 500;
		maxRangeProbab = 0.2;
	};
	class FullAuto: Mode_FullAuto
	{
		begin1[] = {"A3\sounds_f\weapons\khaybar\khaybar_1.wav",1.0,1,900};
		begin2[] = {"A3\sounds_f\weapons\khaybar\khaybar_2.wav",1.0,1,900};
		soundBegin[] = {"begin1",0.5,"begin2",0.5};
		weaponSoundEffect = "DefaultRifle";
		reloadTime = 0.07;
		recoil = "recoil_auto_trg";
		recoilProne = "recoil_auto_prone_trg";
		dispersion = 0.00093;
		minRange = 0;
		minRangeProbab = 0.9;
		midRange = 15;
		midRangeProbab = 0.7;
		maxRange = 30;
		maxRangeProbab = 0.1;
		aiRateOfFire = 1e-006;
	};
	class single_medium_optics1: Single
	{
		requiredOpticType = 1;
		showToPlayer = 0;
		minRange = 2;
		minRangeProbab = 0.2;
		midRange = 550;
		midRangeProbab = 0.7;
		maxRange = 700;
		maxRangeProbab = 0.1;
		aiRateOfFire = 6;
		aiRateOfFireDistance = 600;
	};
	class single_far_optics2: single_medium_optics1
	{
		requiredOpticType = 2;
	};
	class fullauto_medium: FullAuto
	{
		showToPlayer = 0;
		burst = 3;
		minRange = 2;
		minRangeProbab = 0.5;
		midRange = 75;
		midRangeProbab = 0.7;
		maxRange = 150;
		maxRangeProbab = 0.05;
		aiRateOfFire = 2.0;
	};
	class EGLM: UGL_F
	{
		useModelOptics = 0;
		useExternalOptic = 0;
		cameraDir = "OP_look";
		discreteDistance[] = {100,200,300,400};
		discreteDistanceCameraPoint[] = {"OP_eye","OP_eye2","OP_eye3","OP_eye4"};
		discreteDistanceInitIndex = 1;
	};
	aiDispersionCoefY = 10;
	aiDispersionCoefX = 8;
	drySound[] = {"A3\sounds_f\weapons\Other\dry_1.wav",0.01,1,10};
	reloadMagazineSound[] = {"A3\Sounds_F\weapons\Khaybar\reload_khaibar.wav",1.0,1,50};
};
class L85A2_irn: L85A2_Base
{
	scope = 2;
	displayName = "L85A2 (desert)";
	descriptionShort = "The L85 rifle variant of the SA80 family has been the standard issue service rifle of the British Armed Forces since 1987";
	class Library
	{
		libTextDesc = "The L85 rifle variant of the SA80 family has been the standard issue service rifle of the British Armed Forces since 1987, replacing the L1A1 variant of the FN FAL.";
	};
	model = "\sa80\l85a2\l85a2.p3d";
	picture = "\sa80\l85a2\l85a2ui.paa";
	UiPicture = "\A3\weapons_f\data\UI\icon_regular_CA.paa";
	class WeaponSlotsInfo: WeaponSlotsInfo
	{
		mass = 4;
	};
};
class L85A2_ns_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_Nightstalker";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_ns_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_Nightstalker";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_ns: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_Nightstalker";
		};
	};
};
class L85A2_holo: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_HoloSight";
		};
	};
};
class L85A2_holo_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_HoloSight";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_holo_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_HoloSight";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_arco_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_arco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_arco_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_arco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_arco: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_arco";
		};
	};
};
class L85A2_aco_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_aco_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_aco: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco";
		};
	};
};
class L85A2_acog: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco_grn";
		};
	};
};
class L85A2_acog_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_acog_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_aco";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_hamr_laser: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_hamr";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_pointer_IR";
		};
	};
};
class L85A2_hamr_flash: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_hamr";
		};
		class LinkedItemsAcc
		{
			slot = "PointerSlot";
			item = "acc_flashlight";
		};
	};
};
class L85A2_hamr: L85A2_irn
{
	class LinkedItems
	{
		class LinkedItemsOptic
		{
			slot = "CowsSlot";
			item = "optic_hamr";
		};
	};
};
};

class CfgModels
{
class Default
{
	sections[]={};
	sectionsInherit="";
	skeletonName="";
};
class Weapon: Default
{
	sections[]=
	{
		"zasleh"
	};
	skeletonName="Weapon";
	class Animations
	{
		class magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=0;
			maxValue=1;
			hideValue=0.22;
			unhideValue=0.55000001;
		};	
	};
};
class L85A2: Weapon
{
	skeletonName="L85A2Skeleton";
	class Animations
	{
		class magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=0;
			maxValue=1;
			hideValue=0.22;
			unhideValue=0.55000001;
		};	
	};
};
};
class CfgSkeletons
{
class Default
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class Weapon: Default
{
	isDiscrete = 0;
	skeletonInherit = "Default";
	skeletonBones[]=
	{
		"magazine",
		"",
		"ammo_belt",
		"",
		"ammo_belt_bottom",
		""
	};
};
class L85A2Skeleton: Weapon
{
	skeletonInherit="Weapon";
	skeletonBones[]=
	{
		"magazine",
		""
	};
	sections[] = {"magazine"};
};
};

Here's a video:

youtube.com/watch?v=0z1WgIvqmNQ

I've already fixed the positioning of the weapon, but the way I did it is probably the reason for the gun firing at my right.

Edited by Skelebob9

Share this post


Link to post
Share on other sites

Double post, oops

Edited by Skelebob9

Share this post


Link to post
Share on other sites

Try this, or something like this. You've done your's strangely. For the aiming, you need two points, usti hlavne, and konec hlavne. Konec where you want the bullet to start from, and usti where you want it to exit. Put them in a straight line. Also add another point called "eye". This is where your eye would be if you were aiming the gun. You can then put "memorypointcamera = "eye";" into your config.cpp under your guns class.

I haven't tried attachments yet, so I can't help you there. But I assume all the info is on the biki.

class CfgSkeletons
{
class Default
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class L85A2Skeleton: Default
{
	skeletonInherit="Default";
	skeletonBones[]=
	{
		"magazine",
		""
	};
	sections[] = {"magazine"};
};
};
class CfgModels
{
   class Default
   {
       sectionsInherit="";
       sections[] = {};
       skeletonName = "";
   };

        class L85A2: Default {
	sectionsInherit="Default";
	sections[]=	{ "zasleh" };
	skeletonName="L85A2Skeletonl";

{

            class Animations
                  {
		class magazine_hide
		{
			type="hide";
			source="reloadMagazine";
			selection="magazine";
			minValue=0;
			maxValue=1;
			hideValue=0.22;
			unhideValue=0.55000001;
		};	
	};
};
};

Share this post


Link to post
Share on other sites

I tried adding the eye point and both bullet points, named the selections appropriately and adding "memorypointcamera = "eye";" to my weapon config in both the base and the individual weapons, the aiming still didn't work and neither did firing the bullets. Your model cfg did not help the problem, either. Do you have any other suggestions? And thanks for helping.

Share this post


Link to post
Share on other sites

Ok, your problem is easy to see. You only have a viewdistance LOD, which is only seen in third person. You need a view pilot LOD, which is your first person model, and a memory LOD, which tells the game where certain things are on the gun. Memory LOD is where you put the Eye, Konec Hlavne, and Usti Hlavne.

Share this post


Link to post
Share on other sites

Great, the aiming and the firing works now, the only problem is the view pilot LOD; how should I add it in? I tried simply copy/pasting the first LOD into the new one, and it just crashes on startup. Is there anything specific I need to do?

Share this post


Link to post
Share on other sites

Alright, I just copied it over to the pilot view LOD with no change ingame, if there was supposed to be one. Either way, it nearly works completely now, so thank you!

If anyone has any solutions for attachments not being usable, I'd appreciate the help.

Share this post


Link to post
Share on other sites

Look at the configs for guns that have been released already. That is the best way to figure out how things work.

Share this post


Link to post
Share on other sites

I've looked at the configs, it's just the actual model I need help with now. I don't know whether my attachments should be in the view LODs or the Memory LOD or anything, I've even tried copy/pasting a config and changing the model to my own for a 'sure-fire' way of getting it to work, and it still didn't so it's obviously something with my model.

Share this post


Link to post
Share on other sites

Alright, thanks, I'll play around with it for a while and try to get it to work. Thanks again.

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  

×