Jump to content
Sign in to follow this  
gvse

Bringing A2 weapon addons to A3

Recommended Posts

Thanks everybody for the tips, many things to do in config.cpp to replace missing class and dependencies (CA\Weapons....), but at least it's working, even animations :)

I just have to adjust the muzzle

famarfe2.jpg

Edited by Nanucq

Share this post


Link to post
Share on other sites

I seem to have broken the optics..by defing what ones I want the M4 to use (vanilla for testing)..now no soldier carries optics or lasers.

Only I could do this..

Share this post


Link to post
Share on other sites
great info guys - I appreciate it :)

I hope, that the awesome RH packs will be converted to A3 soon :) I got used to them so much that playing arma without my favourite M4 makes me very sad :O

Share this post


Link to post
Share on other sites

To make the mounting system better, I´ve put up this feature proposal on the tracker:

http://feedback.arma3.com/view.php?id=2766

I think something like this would be better, where this entry defines wether or not a specific slot can be accessed by a specific item (such as an optic). Then BI would just need to add a library of mounting interface classnames or whatever you want to call it, and then to mount anything on anything, you only need the basic config entry to match that of your gun.

Anybody who knows how coding works have any input on this? I think it would benefit the effort of putting in all the classical weapons (which often share the same mounting interfaces respective of their origin) and the associated optics and attachments. If you think it´s worth it, please vote on it, also to tell me wether I understood how this code thing works correctly. Because I dunno if what I´m proposing is even possible, code wise... we´ll see

Cheers

Insta

Share this post


Link to post
Share on other sites
I think something like this would be better, where this entry defines wether or not a specific slot can be accessed by a specific item (such as an optic). Then BI would just need to add a library of mounting interface classnames or whatever you want to call it, and then to mount anything on anything, you only need the basic config entry to match that of your gun.

Yes, that would be better since it allows attachments to be added without interfering with existing ones.

I would have wished for a similar system for magazines, where caliber and well size would determine whether you can load a mag into a specific weapon or not.

Share this post


Link to post
Share on other sites

Screenshot time ^^

ka1KpfMs.jpg

EDIT: Extra info

It seems that in model.cfg you can use a couple of new sources for animation:

hasSupressor - the weapon has a suppressor attached on the muzzle

hasOptics - same for optics

hasAccessory - side rail used

hasMagazine - the weapon is loaded.

Edited by Alwarren

Share this post


Link to post
Share on other sites

Looking good man :D Any chance you could help us out and do a step by step guide? :p I'm lost ha

Share this post


Link to post
Share on other sites

Yes please! :)

a step by step guide so that a noob like me can actually do something useful.

Share this post


Link to post
Share on other sites

Well, granQ pretty much already told most of it. You remove all the addons that are on the weapon that you can exchange (no more lasers, flashlights, and scopes), then pack the proxies on it.

To re-iterate:

  1. Strip the weapon down to the bare minimum, leaving only foregrip (if any) intact.
  2. Add three proxies for the top and side rails, and one for the muzzle as granQ described.
  3. Add the muzzleflash proxy.
  4. Make sure you have the front and back sight (if applicable) as a selection (for me they are "front sight" and "back sight"), and define rotation axis for them via the memoryLOD
  5. Make sure to add them to the skeleton bones in the model.cfg
  6. Define an animation that flips them up depending on hasOptics. I use something like this:
    class backsight_flip
     {
        type="rotationZ";
        source="hasOptics";
        memory=1;
        selection="back sight";
        animPeriod=0;
        axis="backsight axis";
        minValue=0.0;
        maxValue=0.3;
        minPhase=0.0;
        maxPhase=0.3;
        angle0=4.712389;
        angle1=0.0;
      };

    Use something equivalent for the front sight.

  7. Define a "hide" animation for the "zasleh" proxy based on hasSuppressor (the muzzleflash), like this
    class muzzleflash_hide
    {
       type="hide";
       source="hasSuppressor";
       selection="zasleh";
       minValue = 0.0;
       maxvalue = 0.25;
       hideValue = 0.01;
    };
    
    

    This code will prevent the flash shining through (or worse, the proxy triangle popping up) when a suppressor is attached.

That's basically it. For the config you can start out by subclassing one of the existing rifles, like the MX (class name arifle_MX_Base_F).

EDIT: In a hurry to join CiA coop night (;)), I'll write more later

Share this post


Link to post
Share on other sites

To extend on the above: Weapons in Arma 3 have a total of 8 icons:

gear_<wpnName>_x_ca.paa

gear_<wpnName>_m_ca.paa

gear_<wpnName>_ms_ca.paa

gear_<wpnName>_mst_ca.paa

gear_<wpnName>_mt_ca.paa

gear_<wpnName>_s_ca.paa

gear_<wpnName>_st_ca.paa

gear_<wpnName>_t_ca.paa

Replace <wpnName> with a generic name (example: acr_wdl). The meaning of the names are:

x - no attachment

m - muzzle (silencer) attachment

s - side rail attachment

t - top rail attachment.

So, if you attach a silencer and scope to a weapon, the inventory screen will show gear_acr_wdl_mt_ca.paa as the icon.

EDIT: I started a page about that on the Biki which I intend to update with more info soon, especially about the config stuff.

Edited by Alwarren

Share this post


Link to post
Share on other sites
To make the mounting system better, I´ve put up this feature proposal on the tracker:

http://feedback.arma3.com/view.php?id=2766

I voted it up. It's a big thing to not get community made attachments imo.

People who sees this post and missed the original. Click the link and read/vote it up so it gets seen by more.

Share this post


Link to post
Share on other sites
I voted it up. It's a big thing to not get community made attachments imo.

People who sees this post and missed the original. Click the link and read/vote it up so it gets seen by more.

Ditto, having it the way it is currently is counter productive. It would mean that the only way to add new weapons or optics would be in the form of a big pack otherwise you'll have to modify configs constantly

Share this post


Link to post
Share on other sites

Alwarren, thank you for making that page. It looks like it's exactly what we need. I am awaiting permission to do a port and the unbinarized files, and once I get these (hopefully), I'll sure be referring to that tutorial.

Meanwhile I'll post your link in my first post.

Share this post


Link to post
Share on other sites

Great work guys , but i have one little problem with pistol and i have no idea how to fix it :/

Problem is - pistol is shooting above the target and not where you aim (P07 doesnt have this issue and my config is using same things as P07) also checked the Eye in memory lod and problem isnt there

This reminds "bug" from arma 2 with silenced magazine

Edited by RobertHammer

Share this post


Link to post
Share on other sites

So pretty :butbut:

This is all putting me in two minds about whether or not to convert some old ArmA weapons to the new engine: I really want to see if I can set up some old weapon models with 'categorised' attachments based on this concept but at the same time I think my time would be better spend making some new high-quality models that I'd be more proud of seeing in game :icon_neutral:

Does anybody know if all muzzle mounted attachments are treated under the "hasSuppressor" source, and will hide the "zasleh" proxy when mounted? As outlined by Alwarren. Wondered if it's be possible to make other muzzle-mounted devices that don't eliminate muzzle flash, but also attach suppressors that do.

Share this post


Link to post
Share on other sites
So pretty :butbut:

Agreed :) I miss the familiar weapons in Arma 3. Good thing there's modding ;)

Does anybody know if all muzzle mounted attachments are treated under the "hasSuppressor" source, and will hide the "zasleh" proxy when mounted? As outlined by Alwarren. Wondered if it's be possible to make other muzzle-mounted devices that don't eliminate muzzle flash, but also attach suppressors that do.

I would guess that it doesn't make a difference between supressors and other addons. As far as I could see, there are only three sources for animation (that's by examining the Arma 3 binary for strings and looking for known animatino sources), hasOptics, hasAccessory and hasSuppressor, for the top, side and muzzle mount, respectively. I wasn't able to find out whether the silencer has a special attribute identifying it as a silencer; from what I see, it doesn't.

A few hints by a dev would be very welcome :)

Share this post


Link to post
Share on other sites

Could anyone post up a sample working weapons config? Ive done the 02 bits, but im now at a loss of how to get my gun in game :(

Share this post


Link to post
Share on other sites
Could anyone post up a sample working weapons config? Ive done the 02 bits, but im now at a loss of how to get my gun in game :(

This is my current config for the ACR. It's mostly ripped off from the MX. Hope this helps :)

#define private        0
#define protected        1
#define public        2

#define true    1
#define false    0

class CfgPatches {
   class FHQ_Remington_ACR {
       units[]={};
       weapons[]={FHQ_ACR_WDL};
       requiredVersion=1;
       requiredAddons[]={FHQ_Remington_ammo};
       version="2012-12-28";
   };
};
enum {
   destructengine = 2,
   destructdefault = 6,
   destructwreck = 7,
   destructtree = 3,
   destructtent = 4,
   stabilizedinaxisx = 1,
   stabilizedinaxesxyz = 4,
   stabilizedinaxisy = 2,
   stabilizedinaxesboth = 3,
   destructno = 0,
   stabilizedinaxesnone = 0,
   destructman = 5,
   destructbuilding = 1
};

class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;
class SlotInfo;
class CowsSlot;
class PointerSlot;

class CfgWeapons {
   class Rifle;
   class arifle_MX_Base_F;
   class WeaponSlotsInfo;
   class Rifle_Base_F: Rifle 
   {
       class WeaponSlotsInfo;
       class GunParticles;
   };


   /* Base Classes */
   class FHQ_ACR_BASE : Rifle_Base_F
   {
       scope = protected;
       magazines[] = {
           "FHQ_rem_30Rnd_680x43_ACR"
       };
       class Library
       {
           libTextDesc = "Remington ACR";
       };
       reloadAction = "GestureReloadEBR";
       maxRecoilSway = 0.0125;
       swayDecaySpeed = 1.25;
       class GunParticles: GunParticles
       {
           class SecondEffect
           {
               positionName = "Nabojnicestart";
               directionName = "Nabojniceend";
               effectName = "CaselessAmmoCloud";
           };
       };
       class WeaponSlotsInfo: WeaponSlotsInfo
       {
           class MuzzleSlot: SlotInfo
           {
               linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
               compatibleItems[] = {"muzzle_snds_h"};
           };
           class CowsSlot: CowsSlot{};
           class PointerSlot: PointerSlot{};
       };
       opticsZoomMin = 0.375;
       opticsZoomMax = 1.1;
       opticsZoomInit = 0.75;
       distanceZoomMin = 300;
       distanceZoomMax = 300;
       descriptionShort = "Assault rifle<br/>Caliber: 6.8 SPC";

       handAnim[] = {
           "OFP2_ManSkeleton",
           "\fhq_remington_a3\anims\acr_anim.rtm"
       };

       dexterity = 1.8;
       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\MX\mx-st-full-1.wav",1.0,1,1200};
           begin2[] = {"A3\sounds_f\weapons\MX\mx-st-full-2.wav",1.0,1,1200};
           soundBegin[] = {"begin1",0.5,"begin2",0.5};
           closure1[] = {"A3\sounds_f\weapons\closure\closure_rifle_6.wav",3.1622777,1,300};
           closure2[] = {"A3\sounds_f\weapons\closure\closure_rifle_7.wav",3.1622777,1,300};
           soundClosure[] = {"closure1",0.5,"closure2",0.5};
           weaponSoundEffect = "DefaultRifle";
           reloadTime = 0.096;
           recoil = "recoil_single_mx";
           recoilProne = "recoil_single_prone_mx";
           dispersion = 0.00093;
           minRange = 2;
           minRangeProbab = 0.5;
           midRange = 225;
           midRangeProbab = 0.7;
           maxRange = 500;
           maxRangeProbab = 0.2;
       };
       class FullAuto: Mode_FullAuto
       {
           begin1[] = {"A3\sounds_f\weapons\MX\mx-st-full-1.wav",1.0,1,1200};
           begin2[] = {"A3\sounds_f\weapons\MX\mx-st-full-2.wav",1.0,1,1200};
           soundBegin[] = {"begin1",0.5,"begin2",0.5};
           closure1[] = {"A3\sounds_f\weapons\closure\closure_rifle_6.wav",3.1622777,1,300};
           closure2[] = {"A3\sounds_f\weapons\closure\closure_rifle_7.wav",3.1622777,1,300};
           soundClosure[] = {"closure1",0.5,"closure2",0.5};
           weaponSoundEffect = "DefaultRifle";
           reloadTime = 0.096;
           recoil = "recoil_auto_mx";
           recoilProne = "recoil_auto_prone_mx";
           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;
       };        
       aiDispersionCoefY = 10;
       aiDispersionCoefX = 8;
       drySound[] = {"A3\sounds_f\weapons\Other\dry_1.wav",0.01,1};
       reloadMagazineSound[] = {"A3\sounds_f\weapons\reloads\new_MX.wav",0.1,1,30};
   };


   /* Woodland Variants */
   class FHQ_ACR_WDL : FHQ_ACR_BASE
   {
       scope = public;
       displayName = "ACR (Woodland)";
       model = "\fhq_remington_a3\acr\acr_wdl.p3d";
       picture = "\fhq_remington_a3\acr\ui\gear_acr_wdl_X_CA.paa";
       UiPicture = "\A3\weapons_f\data\UI\icon_regular_CA.paa";

       class WeaponSlotsInfo: WeaponSlotsInfo
       {
           mass = 40;
       };
       class ItemInfo
       {
           priority = 1;
           RMBhint = "XMC";
           onHoverText = "TODO XMC DSS";
       };
   };

   /* Desert */
   class FHQ_ACR_TAN : FHQ_ACR_WDL {
       scope = public;
       displayName = "ACR (Desert)";
       model = "\fhq_remington_a3\acr\acr_tan.p3d";
   };

};

Share this post


Link to post
Share on other sites

Hopefully somebody can get a pack of arma 2 weapons for arma 3 soon "ie. m16, m4, scar, m24."

Share this post


Link to post
Share on other sites

Thanks Alwarren, thats really useful :)

Hopefully somebody can get a pack of arma 2 weapons for arma 3 soon "ie. m16, m4, scar, m24."

Im working on bring over my rifles pack from my Nogovan Armed Forces Project, which includes G3 variants. Im sure M4s etc will appear soon.

Share this post


Link to post
Share on other sites

Oh plenty o' M4 M16 and an M24 or two will appear from me...I won't say soon but at some stage :p

Share this post


Link to post
Share on other sites
Thanks Alwarren, thats really useful :)

You're welcome :)

Im working on bring over my rifles pack from my Nogovan Armed Forces Project, which includes G3 variants. Im sure M4s etc will appear soon.

Ah, G3... the best H&K rifle ever :D

---------- Post added at 01:07 ---------- Previous post was at 01:05 ----------

Oh plenty o' M4 M16 and an M24 or two will appear from me...I won't say soon but at some stage :p

LOL I also have an M4A1 right here that I wanted to make for Arma 3. Seems there won't be any shortage of those.

I'm starting to wonder whether it wouldn't be a good idea to start a community-wide "Contemporary Armies" mod with at least Americans, Russians, Brits, and middle eastern units, vehicles and weaons. Otherwise, if people want a contemporary scenario as opposed to 2035, they'll have to rely on 20+ mods for a mission.

Share this post


Link to post
Share on other sites

Sort of a "Arrowhead Rearmed" community project?

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  

×