banner



Arma 3 How To Holster Weapon

101 - How to prepare a weapon for Arma 3

Delight exist aware of our Arma 3 modding license: http://community.bistudio.com/wiki/Arma_3_Modding_License

Additional functionality compared to A2/OA

  • Slotable weapon accessories
  • Custom reload animations
  • Adjustable sights
  • Underwater weapons
  • Ammo changes on fly and on hit
  • Rotating muzzle-flash
  • Explosion shielding

Model requirements {p3d}

  • proxies for slotable accessories
    • muzzle accessory should exist on proxy \A3\data_f\proxies\weapon_slots\MUZZLE
    • optics should be on proxy \A3\data_f\proxies\weapon_slots\TOP
    • side accompaniment should be on proxy \A3\data_f\proxies\weapon_slots\SIDE
    • bipod accessory should exist on proxy \A3\data_f_mark\proxies\weapon_slots\UNDERBARREL
    • all these proxies could be redefined in cfgWeapons >> Weapon >> WeaponSlotsInfo >> XXX >> linkProxy parameter where Thirty is the slot name
  • selections for folding iron sights
    • You need to create selections and axes for iron sights if You desire them folded once the eyes is put on the weapon
    • Front part should be named ForeSight with ForeSight_axis in memory lod
    • Rear function should be named BackSight with BackSight_axis in memory lod
  • adaptable sights for grenade launchers
    • in that location needs to be a selection that is going to rotate (in case of collimator sights), default naming is OP
    • this selection needs to accept an axis in retention lod, default naming is OP_axis
    • there needs to exist a focus point, the best identify is the red dot of collimator, with retention betoken OP_look by default and several points for heart, commonly OP_eyeX where Ten is the number of the point. Skillful do is to place them in same distance class focus point

Model config changes {model.cfg}

  • custom reload blitheness have a practiced employ of newly added parameter unHideValue for hide type of animations - yous are at present able to make asymmetrical animations eg. for hiding of magazine:

{model.cfg}

                        class            magazine_hide            {            type            =            "hide"            ;            source            =            "reloadMagazine"            ;            pick            =            "mag"            ;            minValue            =            0.000000            ;            maxValue            =            1.00000            ;            hideValue            =            0.220            ;            unhideValue            =            0.550            ;            };          
  • the animations could look a flake better by merely adding a translation for the magazine and adding an centrality for that in model - magazine should interpret at beginning, then disappear, appear and translate back

{model.cfg}

                        class            magazine_reload_move_1            {            type            =            "translation"            ;            source            =            "reloadMagazine"            ;            choice            =            "magazine"            ;            axis            =            "magazine_axis"            ;            minValue            =            0.145            ;            maxValue            =            0.170            ;            offset0            =            0.0            ;            offset1            =            0.five            ;            };          
  • foldable atomic number 26 sights use hasOptics controller

{model.cfg}

                        class            BackSight_optic            {            type            =            "rotation"            ;            source            =            "hasOptics"            ;            selection            =            "BackSight"            ;            axis            =            "BackSight_axis"            ;            retentiveness            =            ane            ;            minValue            =            0.0000000            ;            maxValue            =            1.0000000            ;            angle0            =            0.000000            ;            angle1            =            (            rad            90            );            };          
  • new blitheness controllers zeroing1 and zeroing2 take values from discreteDistance[] of starting time and second cage of the weapon. The value is index number of electric current zeroing in the array starting with nix (that means the first value is 0, second is 1, the last is number of detached distances plus one). It might be used for iron sights of the weapon if desired but amend apply is for UGL collimator sights rotation:

{model.cfg}

                        grade            OP_ROT            {            type            =            "rotation"            ;            source            =            "zeroing2"            ;            // use second cage zeroing for rotation            sourceAddress            =            "loop"            ;            // loop when phase out of premises            selection            =            "OP"            ;            // option we want to rotate            axis            =            "OP_axis"            ;            // has its own axis            minValue            =            0            ;            maxValue            =            3            ;            // this weapon has array with 4 distances            angle0            =            "rad 0"            ;            angle1            =            "rad 65"            ;            };          
  • rotating cage flashes are done using a new animation source ammoRandom which changes it is value every fourth dimension weapon is fired. Various degrees of rotation may be set up past using correct cage wink shape and minValue maxValue combination.

{model.cfg}

                        class            MuzzleFlashROT            {            type            =            "rotationX"            ;            source            =            "ammoRandom"            ;            // use ammo count as phase for animation            sourceAddress            =            "loop"            ;            // loop when stage out of bounds            pick            =            "zasleh"            ;            // selection we want to rotate            axis            =            ""            ;            // no ain centrality - center of rotation is computed from pick            centerFirstVertex            =            true            ;            // use first vertex of selection as heart of rotation            minValue            =            0            ;            maxValue            =            iv            ;            // rotation angle will exist 360/four = ninety degrees            angle0            =            "rad 0"            ;            angle1            =            "rad 360"            ;            };          

New config parameters {config.cpp}

Slotable weapons

  • Available slots are defined in each weapon just are normally inherited from a parent weapon. They are stored as classes in course WeaponSlotsInfo which contains the slots and parameters for inventory
    • Mass is a new unit of measurement used to describe weight and book of an object used. Each container has a set up chapters in the aforementioned units.
    • allowedSlots[] is an array of slot numbers where you may put the weapon. 701 stands for belong, 801 stands for uniform, 901 stands for backpack
    • each weapon slot is a dissever subclass in class WeaponSlotsInfo
      • parameter linkProxy defines a proxy in weapon model for said slot (run into standard names on top)
      • parameter displayName describes a mouse-over name of slot in Inventory
      • array compatibleItems[] lists possible accompaniment placeable into that slot. Near weapons are able to accept any RIS equipment, but eg. muzzle accessory differs co-ordinate to quotient.
    • external classes CowsSlot and PointerSlot are used for standard optics and side accessory. That means these classes are outside cfgWeapons and changeable for all weapons at once.
                        form            SlotInfo            ;            course            CowsSlot            :            SlotInfo            {            // targetProxy            linkProxy            =            "\A3\data_f\proxies\weapon_slots\TOP"            ;            // brandish proper noun            displayName            =            $            STR_A3_CowsSlot0            ;            // class names with items supported by weapon                        compatibleItems            []            =            {            "optic_Arco"            ,            "optic_aco"            ,            "optic_ACO_grn"            ,            "optic_hamr"            ,            "optic_Holosight"            };            };            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            {            form            myWeapon            {            course            WeaponSlotsInfo            {            mass            =            4            ;            // default mass of a weapon            class            MuzzleSlot            :            SlotInfo            {            // targetProxy            linkProxy            =            "\A3\data_f\proxies\weapon_slots\Muzzle"            ;            // brandish proper noun            displayName            =            "Cage Slot"            ;            // course 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            };            };            };          

Muzzle accessories

  • suppressors are configured as a weapon inheriting some detail abilities from class ItemCore
  • the class itself consists but from scope, displayName, moving picture and model, in that location is a split up subclass ItemInfo with all the required parameters
    • there is subclass MagazineCoef inside course ItemInfo with parameter initSpeed - this is only a multiplier of initSpeed of weapon'southward magazine
    • subclass AmmoCoef of form ItemInfo has more parameters for the ammo shoot through the suppressor:
      • hitting is the coefficient of hitting of original ammo
      • visibleFire, audibleFire, visibleFireTime and audibleFireTime are coefficients for detection upon shooting the weapon
      • higher cost coefficient should make AI retrieve more about shooting the suppressed weapon
      • typicalSpeed and airFriction coefficients change the ballistic characteristics of the ammo
    • there are alternate muzzleEnd and alternativeFire directly inside class ItemInfo to have different muzzle furnishings origin and muzzle flashes
                        grade            Mode_SemiAuto            ;            class            cfgWeapons            {            class            ItemCore            ;            class            InventoryMuzzleItem_Base_F            ;            grade            myMuzzleAccessory            {            scope            =            2            ;            displayName            =            "My Muzzle Accessory"            ;            picture            =            "\A3\weapons_F\Data\UI\myMuzzleAccessory_CA.paa"            ;            model            =            "\A3\weapons_f            \a            cc\myMuzzleAccessory"            ;            form            ItemInfo            :            InventoryMuzzleItem_Base_F            {            soundTypeIndex            =            1            ;            // alphabetize of audio in sounds[] in weapon modes (inherited 1 from parent class)            grade            MagazineCoef            {            initSpeed            =            0.eight            ;            };            form            AmmoCoef            {            hit            =            0.8            ;            visibleFire            =            0.3            ;            audibleFire            =            0.8            ;            visibleFireTime            =            0.5            ;            audibleFireTime            =            1.0            ;            cost            =            i.0            ;            typicalSpeed            =            0.8            ;            airFriction            =            ane.0            ;            };            muzzleEnd            =            "zaslehPoint"            ;            // memory point in muzzle supressor's model            alternativeFire            =            "Zasleh2"            ;            // course in cfgWeapons with model of muzzle wink                        class            MuzzleCoef            {            dispersionCoef            =            one.0f            ;            artilleryDispersionCoef            =            i.0f            ;            fireLightCoef            =            0.1f            ;            recoilCoef            =            1.0f            ;            recoilProneCoef            =            1.0f            ;            minRangeCoef            =            ane.0f            ;            minRangeProbabCoef            =            one.0f            ;            midRangeCoef            =            i.0f            ;            midRangeProbabCoef            =            1.0f            ;            maxRangeCoef            =            1.0f            ;            maxRangeProbabCoef            =            1.0f            ;            };            };            };            };          

Sound Values

  • Starting from patch 1.24 (dev version 1.23 from 23.6. 2014 on), in that location is a change how sounds are handled because of sound suppressors:
    • Weapon without any muzzle accessory has a soundTypeIndex equal to 0, while it could be any number (by default i) co-ordinate to suppressor type used.
    • array parameter sounds[] of fire fashion is used to chose what audio subclass is going to be used - it is sounds[] = {StandardSound, SilencedSound}; by default
    • classes defined in previous parameter are subclasses of a fire manner with diverse sound parameters: weaponSoundEffect, soundBegin[], soundClosure{}
                        class            MyWeapon            :            Rifle_Base_F            {            class            Single            :            Mode_SemiAuto            {            sounds            []            =            {            StandardSound            ,            SilencedSound            };            grade            BaseSoundModeType            // this base form has base definitions that both standard and silenced sounds volition inherit (sound of closure stays the same no matter what cage accessory is used)            {            weaponSoundEffect            =            "DefaultRifle"            ;            closure1            []            =            {            "A3\sounds_f\weapons\closure\closure_rifle_2"            ,            db            -            12            ,            one            ,            10            };            closure2            []            =            {            "A3\sounds_f\weapons\closure\closure_rifle_3"            ,            db            -            12            ,            1            ,            x            };            soundClosure            []            =            {            closure1            ,            0.5            ,            closure2            ,            0.5            };            };            grade            StandardSound            :            BaseSoundModeType            // Sounds inside this class are used when soundTypeIndex = 0, according to sounds[]            {            begin1            []            =            {            "A3\Sounds_F\weapons\SMG_02\SMG_02_st_1b"            ,            db0            ,            i            ,            500            };            begin2            []            =            {            "A3\Sounds_F\weapons\SMG_02\SMG_02_st_2b"            ,            db0            ,            1            ,            500            };            begin3            []            =            {            "A3\Sounds_F\weapons\SMG_02\SMG_02_st_3b"            ,            db0            ,            1            ,            500            };            soundBegin            []            =            {            begin1            ,            0.33            ,            begin2            ,            0.33            ,            begin3            ,            0.34            };            };            class            SilencedSound            :            BaseSoundModeType            // Sounds within this class are used when soundTypeIndex = 1, according to sounds[]            {            begin1            []            =            {            "A3\sounds_f\weapons\silenced\silent-07"            ,            db            -            1            ,            1            ,            200            };            begin2            []            =            {            "A3\sounds_f\weapons\silenced\silent-08"            ,            db            -            one            ,            1            ,            200            };            soundBegin            []            =            {            begin1            ,            0.5            ,            begin2            ,            0.5            };            };            // diverse other fire fashion parameters            };            };          

Optics

  • in improver to default parameters mentioned in muzzle accessories class, there is weaponInfoType to choose a right resources for weapon info directly inside optic form
    • in that location is the same ItemInfo bracket but with different parameters
      • don't forget that ItemInfo inherits some parameters from InventoryOpticsItem_Base_F (eg. muzzlePos and muzzleEnd) in case you rename the retentiveness points
    • parameter opticType is used for balancing the eyes for specific burn down modes (should be further described by balancing crew)
    • modelOptics is the 2D model for selected eyes
    • subclass OpticsModes works the same way it used to work in A2/OA
                        course            cfgWeapons            {            course            ItemCore            ;            course            InventoryOpticsItem_Base_F            ;            course            myOpticsAccessory            {            scope            =            two            ;            displayName            =            "My Optics Accessory"            ;            motion-picture show            =            "\A3\weapons_F\Data\UI\myOpticsAccessory_CA.paa"            ;            model            =            "\A3\weapons_f            \a            cc\myOpticsAccessory"            ;            weaponInfoType            =            "RscOptics_myOptics"            ;            course            ItemInfo            :            InventoryOpticsItem_Base_F            {            mass            =            7            ;            modelOptics            =            "\A3\Weapons_f            \a            cc            \r            eticle_MyOptics_F"            ;            form            OpticsModes            {            course            MyOptics            {            opticsID            =            1            ;            useModelOptics            =            true            ;            opticsPPEffects            []            =            {            "OpticsCHAbera1"            ,            "OpticsBlur1"            };            opticsZoomMin            =            0.0555            ;            opticsZoomMax            =            0.1300            ;            opticsZoomInit            =            0.1300            ;            discreteDistance            []            =            {            100            ,            300            ,            400            ,            500            ,            600            ,            700            ,            800            ,            900            ,            1000            };            discreteDistanceInitIndex            =            1            ;            distanceZoomMin            =            100            ;            distanceZoomMax            =            1000            ;            nFovLimit            =            0.07            ;            discreteFov            []            =            {            0.1300            ,            0.0555            };            discreteInitIndex            =            0            ;            modelOptics            []            =            {            "\A3\Weapons_f            \a            cc            \r            eticle_MyOptics_F"            ,            "\A3\Weapons_f            \a            cc            \r            eticle_MyOptics_z_F"            };            memoryPointCamera            =            "opticView"            ;            visionMode            []            =            {            "Normal"            ,            "NVG"            };            opticsFlare            =            true            ;            opticsDisablePeripherialVision            =            true            ;            cameraDir            =            ""            ;            };            class            IronOnTopOfMyOptics            :            MyOptics            {            opticsID            =            ii            ;            useModelOptics            =            false            ;            opticsFlare            =            false            ;            opticsDisablePeripherialVision            =            false            ;            opticsZoomMin            =            0.375            ;            opticsZoomMax            =            one.ane            ;            opticsZoomInit            =            0.75            ;            memoryPointCamera            =            "eye"            ;            visionMode            []            =            {};            discretefov            []            =            {};            };            };            };            };            };          

Side Accompaniment

  • the class of side accessory is made the same style equally for muzzle accessory
    • bracket ItemInfo contains some specific parameters, but they work the same way as they did in A2/OA
                        course            cfgWeapons            {            class            ItemCore            ;            class            InventoryFlashLightItem_Base_F            ;            course            mySidesAccessory            {            scope            =            2            ;            displayName            =            "My Sides Accompaniment"            ;            picture show            =            "\A3\weapons_F\Information\UI\mySidesAccessory_CA.paa"            ;            model            =            "\A3\weapons_f            \a            cc\mySidesAccessory"            ;            class            ItemInfo            :            InventoryFlashLightItem_Base_F            {            mass            =            nine            ;            form            Pointer            {            irLaserPos            =            "laser pos"            ;            irLaserEnd            =            "laser dir"            ;            };            class            FlashLight            {};            };            };            };          

Custom reload animations

  • parameter reloadAction is at present for both a mag and the weapon.
    • if it is not defined for whatever of them, default reload is played.
    • if the parameter is defined for the weapon but isn't divers for a magazine, reloadAction for weapon is played upon reloading said weapon
    • if the magazine has reloadAction divers, the action selected by this parameter is played every fourth dimension (not depending on weapon). This ensures different reloads for different magazines of one weapon (eg. UGLs)
  • the action called by reloadAction is played according to config of animations for said soldier (action in CfgMovesMaleSdr leads to a state in CfgGesturesMale for default soldier), different target states could be defined for different action maps (eg. at that place could be a unlike reload gesture for crouch and prone with rifle)
                        class            CfgMovesBasic            {            class            DefaultDie            ;            class            ManActions            {            reloadMyWeapon            =            "reloadMyWeapon"            ;            };            };            class            CfgGesturesMale            {            course            Default            ;            course            States            {            class            reloadMyWeapon            :            Default            {            file            =            "\A3            \a            nims_f\Data\Anim\Sdr\wop\erc\stp            \r            ld            \r            fl            \r            eloadMyWeapon.rtm"            ;            looped            =            0            ;            speed            =            0.400000            ;            mask            =            "handsWeapon"            ;            headBobStrength            =            0.200000            ;            headBobMode            =            two            ;            rightHandIKBeg            =            i            ;            rightHandIKEnd            =            1            ;            leftHandIKCurve            []            =            {            0            ,            ane            ,            0.050000            ,            0            ,            0.950000            ,            0            ,            i            ,            one            };            };            };            };            grade            cfgWeapons            {            class            myWeapon            {            reloadAction            =            "reloadMyWeapon"            ;            };            };          

Underwater weapons

  • weapons with canShootInWater set to one are able to shoot under water
    • parameter soundBeginWater[] has the aforementioned apply as soundBegin[] and defines what sounds and with what probability is going to be played while shooting under the water surface, both of them are defined per fire mode:
                        class            Mode_SemiAuto            ;            class            cfgWeapons            {            class            myWeapon            {            modes            []            =            {            "Single"            };            // this example weapon has just one burn mode            canShootInWater            =            1            ;            // allows to shoot under water            class            Unmarried            :            Mode_SemiAuto            {            begin1            []            =            {            "A3\sounds_f\weapons\myWeapon\myWeapon_st_1b.wav"            ,            db5            ,            one            ,            900            };            begin2            []            =            {            "A3\sounds_f\weapons\myWeapon\myWeapon_st_2b.wav"            ,            db5            ,            1            ,            900            };            begin3            []            =            {            "A3\sounds_f\weapons\myWeapon\myWeapon_st_3b.wav"            ,            db5            ,            1            ,            900            };            soundBegin            []            =            {            begin1            ,            0.33            ,            begin2            ,            0.33            ,            begin3            ,            0.34            };            // all three sounds have roughly the same probablity            beginwater1            []            =            {            "A3\sounds_f\weapons\myWeapon\underwater_myWeapon_st_1b.wav"            ,            db0            ,            1            ,            200            };            beginwater2            []            =            {            "A3\sounds_f\weapons\myWeapon\underwater_myWeapon_st_2b.wav"            ,            db5            ,            ane            ,            200            };            beginwater3            []            =            {            "A3\sounds_f\weapons\myWeapon\underwater_myWeapon_st_3b.wav"            ,            db5            ,            1            ,            200            };            soundBeginWater            []            =            {            beginwater1            ,            0.33            ,            beginwater2            ,            0.33            ,            beginwater3            ,            0.34            };            // all iii sounds take roughly the same probablity            };            };            };          
  • underwater ammo has some dissimilar characteristics
    • waterFriction is underwater equivalent of airFriction and supercavitating armament has this close to goose egg. Standard ammo doesn't have this set and that means it is set to -0.iv past default (ie. stops about right after entering h2o)
    • timeToLive for underwater ammo is rather low to let it be harmless after some 40 meters
    • the fancy bubble effect is done by having effectFly fix to AmmoUnderwater, you'll try to modify it to work fifty-fifty on ground and we all know information technology
                        grade            cfgAmmo            {            course            BulletBase            ;            class            myAmmo            :            BulletBase            // for myWeapon            {            waterFriction            =            -            0.00096            ;            // nearly direct line underwater            timeToLive            =            0.12            ;            // that's plenty for 45 meters underwater            effectFly            =            "AmmoUnderwater"            ;            };            };          

Ammo changes on wing and on striking

  • there are two new simulations of ammo available mainly for shells and missiles.
  • simulation shotSubmunitions allows to deploy multiple ammo from the parent one upon coming together sure weather
    • parameter submunitionAmmo defines class of newly created ammo and this could be used multiple times
      • yous could set the inherited ammo and it would spread in cone according to submunitionConeAngle and submunitionConeAngleHorizontal (in degrees)
      • Arma 3 logo black.png one.68 you can also define multiple sub-munition projectiles and their probability: submunitionAmmo[] = {"MySubammo1",0.eight,"MySubammo2",0.2}; (80% of sub-munition will be MySubammo1 and 20% will be MySubammo2)
    • submunitionConeType[] describes pattern of ammo in item, starting time part is a distribution role ("random", "randomcenter", "poissondisc", "poissondisccenter", "custom"), 2nd parameter is number of ammo except of custom i, where it is some other array of pairs for specific locations
                        submunitionConeType            []            =            {            "random"            ,            10            };            submunitionConeType            []            =            {            "randomcenter"            ,            ten            };            submunitionConeType            []            =            {            "randomupcone"            ,            10            };            submunitionConeType            []            =            {            "poissondisc"            ,            x            };            submunitionConeType            []            =            {            "poissondisccenter"            ,            10            };            submunitionConeType            []            =            {            "custom"            ,            {{            0            ,            0            },            {            -            1            ,            0            },            {            1            ,            0            },            {            0            ,            -            one            },            {            0            ,            1            }}            };          
    • parameter submunitionAutoleveling affects if cone has the upwardly vector in model infinite (rotated when lying on steep loma) or always upwardly in world space coord system (replaced by submunitionDirectionType)
    • parameter submunitionDirectionType defines the direction in which the submunition is generated; "SubmunitionModelDirection" retains the parent munition's vector, "SubmunitionAutoLeveling" levels the submunition out horizontally and "SubmunitionTargetDirection" generates the submunition in the management of the parent'south locked target (see PCML from 1.81+). If present the param overrides submunitionAutoleveling parameter.
    • parameter triggerDistance is used to deploy ammo in set 3D distance before expected target
    • parameter triggerTime is used to deploy ammo in set time after being fired
    • parameter triggerOnImpact(bool) is used to deploy ammo after touch
    • parameter deleteParentWhenTriggered (bool) defines if parent munition should be deleted after releasing sub munition
    • parameter submunitionInitialOffset (array) sets spawning showtime of submunition. i.e. {0,0,-0.2}; will spawn projectile 20 cm before affect position if it is coupled with SubmunitionModelDirection for example.
    • parameter submunitionInitSpeed sets the submunition init speed directly (in yard/south)
    • parameter triggerSpeedCoef is a coefficient of speed of inherited ammo relative to speed of parent ammo
      • Arma 3 logo black.png 1.68 you tin can also define the speed as range, with the actual coefficient being selected randomly from within the range: triggerSpeedCoef[] = {0.v,i.0};
    • parameter submunitionParentSpeedCoef is a coefficient of how much speed of the parent munition is retained in the submunition - i.e. submunitionParentSpeedCoef = 0; will spawn submunition exactly at its own submunitionInitSpeed regardless of how fast was the parent munition flying
    • for Arms computer use assortment aimAboveTarget[] and aimAboveDefault as a index of the array to set up dissimilar heights to change the ammo to something different (eg. flare)
                        class            cfgAmmo            {            class            SubmunitionBase            ;            course            MyAmmo            :            SubmunitionBase            {            submunitionAmmo            =            "MySubmunitionAmmo"            ;            submunitionConeType            []            =            {            "poissondisc"            ,            10            };            submunitionConeAngle            =            10            ;            triggerDistance            =            100            ;            };            };          
  • simulation shotDeploy is used to change ammo upon affect (eg. change to a mine)
    • it uses the aforementioned submunitionAmmo parameter as described above
                        class            cfgAmmo            {            class            ShotDeployBase            ;            grade            Mo_ClassicMineRange            :            ShotDeployBase            {            submunitionAmmo            =            "APERSMine_Range_Ammo"            ;            // some random mine deployable by a mortar            airFriction            =            0            ;            // arms ammo works improve without friction            EffectFly            =            "ArtilleryTrails"            ;            // some funky effect of smoke trails and stuff            };            };          

Explosion shielding

  • class hitpoints in configuration of all vehicles (including soldiers) has got a new parameter called explosionShielding
    • this parameter simply multiplies inidrectHit taken from explosives (that makes information technology explosion vulnerability in an effective way) - the higher information technology is the more damage would selected hitpoint get from the hit
                        class            cfgVehicles            {            class            myVehicle            {            class            HitPoints            {            class            HitLFWheel            {            armor            =            0.12            ;            explosionShielding            =            0.viii            ;            };            };            };            };          

Weapon inertia

  • inertia coefficient of the weapon is easily set by the inertia parameter, mutual values are 0.1 for a pistol, 0.5 for a burglarize, 0.7 for machinegun and around 1.0 for a launcher
                        form            cfgWeapons            {            form            myWeapon            {            // inertia coefficient of the weapon            inertia            =            0.v            ;            };            };          

Inventory icons overlay method

  • Update 1.xl adds a new functionality for Inventory icons of weapons - using one icon for the weapons and brandish slot icons as an overlay for that icon.
  • If there is no slot with positive value of iconScale property, the game falls dorsum to erstwhile behaviour
  • The icon lower layer of the inventory film is notwithstanding defined in property icon of the weapon itself
                        class            cfgWeapons            {            class            myWeapon            {            class            WeaponSlotsInfo            :            WeaponSlotsInfo            // default accessories for this slot, iconPicture and iconPinpoint is defined in the base form            {            class            MuzzleSlot            :            MuzzleSlot            {            iconPosition            []            =            {            0.0            ,            0.45            };            // position of the slot icon inside of the weapon icon, relative to top-left corner in {right, down} format            iconScale            =            0.2            ;            // scale of icon described in iconPicture            iconPicture            =            "\A3\Weapons_F\Data\UI            \a            ttachment_muzzle.paa"            ;            // icon for selected slot            iconPinpoint            =            "Centre"            ;            // top, bottom, left, right, middle alignment of the icon on snap indicate            };            class            CowsSlot            :            CowsSlot            // default accessories for this slot, iconPicture and iconPinpoint is defined in the base of operations course            {            iconPosition            []            =            {            0.5            ,            0.35            };            iconScale            =            0.2            ;            };            form            PointerSlot            :            PointerSlot            // default accessories for this slot, iconPicture and iconPinpoint is defined in the base class            {            iconPosition            []            =            {            0.20            ,            0.45            };            iconScale            =            0.25            ;            };            };            icon            =            "\A3\MyAddon\Rifles\MyRifle\Data\MyRifle_X_CA.paa"            // this stays the same equally before and is used as a base layer            };            };          

Magazine compatibility groups

  • Update one.eighty added new applied science chosen magazineWells (also known every bit "magwells") which replaces erstwhile, non working magazineGroups. Engineering consist from ii parts: grade CfgMagazineWellsin root config & parameters (array) magazineWell in weapon muzzle. In contrast to old solution, Magazine Wells are using split up course in root config containing all blazon of mag wells with list of arrays containing compatible classes. It'due south possible to add new entries past 3rd party modifications
                        grade            cfgWeapons            {            course            arifle_MX_Base_F            ;            grade            rhs_weap_m4_Base            :            arifle_MX_Base_F            {            [...]            // first magazine in array is used every bit a default magazine in Virtual Arsenal            // Eden editor ammo crates widget is as well using that assortment to create listing of compatible magazine which can be placed in crate            magazines            []            =            {            "rhs_mag_30Rnd_556x45_M855A1_Stanag"            };            // Link to magazine wells            magazineWell            []            =            {            STANAG_556x45            };            };            };            // Located in root config            class            CfgMagazineWells            {            class            STANAG_556x45            {            // Magazines listed by mod            // It is possible to add new arrays to form just for now inheritance (i.e. STANAG_556x45_New: STANAG_556x45 {};) is not supported                        RHS_Magazines            []            =            {            "rhs_mag_30Rnd_556x45_M855_Stanag"            ,            "rhs_mag_30Rnd_556x45_M855_Stanag_Tracer_Red"            ,            "rhs_mag_30Rnd_556x45_M855_Stanag_Tracer_Green"            ,            "rhs_mag_30Rnd_556x45_M855_Stanag_Tracer_Yellow"            ,            "rhs_mag_30Rnd_556x45_M855_Stanag_Tracer_Orange"            ,            "rhs_mag_100Rnd_556x45_M855A1_cmag"            ,            "rhs_mag_100Rnd_556x45_M855A1_cmag_mixed"            ,            "rhs_mag_100Rnd_556x45_M855_cmag"            ,            "rhs_mag_100Rnd_556x45_M855_cmag_mixed"            ,            "rhs_mag_100Rnd_556x45_Mk318_cmag"            ,            "rhs_mag_100Rnd_556x45_Mk262_cmag"            };            // Magazines divers                        BI_Magazines            []            =            {            "30Rnd_556x45_Stanag"            ,            "30Rnd_556x45_Stanag_Tracer_Red"            ,            "30Rnd_556x45_Stanag_Tracer_Green"            ,            "30Rnd_556x45_Stanag_Tracer_Yellow"            };            };            };          

Bipods

  • Update i.42 (Marksmen DLC release) adds a possibility to use #bipods by either utilizing another weapon slot - under barrel - or by using a inbuilt i
    • Bipod as an attachment works exactly the same style as for example muzzle attachment
    • In that location are ii new properties - deployedPivot describing retention indicate in model around which the weapon pivots while deployed and hasBipod which is self-explanatory
                        class            CfgWeapons            {            class            ItemCore            ;            class            InventoryUnderItem_Base_F            ;            class            test_bipod_01_F            :            ItemCore            {            scope            =            2            ;            // available in Arsenal            displayName            =            "My Little Bipod"            ;            // name of item in Inventory (and Arsenal)            moving-picture show            =            "\A3\Weapons_F_Mark\Information\UI\gear_accu_bipod_01_snd_CA.paa"            ;            // icon in Inventory            model            =            "\Samples_f\Test_weapon_01            \t            est_bipod_01_F.p3d"            ;            // path to model            class            ItemInfo            :            InventoryUnderItem_Base_F            {            deployedPivot            =            "bipod"            ;            // what point should exist used to be on surface while unfolded            hasBipod            =            true            ;            // bipod obviously has a bipod            mass            =            10            ;            // what is the mass of the object            soundBipodDown            []            =            {            "A3\Sounds_F_Mark            \a            rsenal\sfx            \b            ipods\Bipod_AAF_down"            ,            db            -            3            ,            1            ,            20            };            // sound of unfolding the bipod            soundBipodUp            []            =            {            "A3\Sounds_F_Mark            \a            rsenal\sfx            \b            ipods\Bipod_AAF_up"            ,            db            -            three            ,            1            ,            xx            };            // sound of folding the bipod            };            inertia            =            0.2            ;            // how much does the bipod add together to inertia of the weapon            };            };          
  • Inbuilt #bipods are much easier, y'all just need to add together deployedPivot and hasBipod backdrop to the weapon itself
                        class            cfgWeapons            {            class            myWeapon            {            deployedPivot            =            "bipod"            ;            // what point should exist used to exist on surface while unfolded            hasBipod            =            true            ;            // a weapon with bipod patently has a bipod            soundBipodDown            []            =            {            "A3\Sounds_F_Mark            \a            rsenal\sfx            \b            ipods\Bipod_AAF_down"            ,            db            -            3            ,            1            ,            20            };            // audio of unfolding the bipod            soundBipodUp            []            =            {            "A3\Sounds_F_Mark            \a            rsenal\sfx            \b            ipods\Bipod_AAF_up"            ,            db            -            3            ,            1            ,            20            };            // sound of folding the bipod            };            };          
  • The important office about bipods is that the actual model may be animated despite of it existence a proxy on a weapon
    • Animation source bipod_legs is used for that, possible values are 0 for weapon non deployed and 1 for weapon deployed
    • The model obviously needs to have a skeleton to piece of work properly
    • Configuration is the aforementioned in example of inbuilt bipods, the just difference is in blitheness source - information technology is bipod

{model.cfg}

                        grade            legs            {            type            =            rotation            ;            source            =            bipod_legs            ;            // this ane is for an attachment, weapon itself would accept just bipod            sourceAddress            =            clamp            ;            selection            =            "bipod_legs"            ;            axis            =            "bipod_legs_axis"            ;            minValue            =            0            ;            maxValue            =            1            ;            angle0            =            (            rad            0            );            angle1            =            (            rad            90            );            };          
  • The bipods may have even adjustable length of legs according to bodily position
    • Animation source bipod_legs_length is used for that as it returns altitude between bipod signal and surface in meters (means that v centimeters are 0.05 value of the source)
    • Configuration is the same in example of inbuilt #bipods, the only difference is in blitheness source - it is bipod_length

{model.cfg}

                        form            Leg_L_move            // we employ different animation for each leg as they are folded past default and rotate while unfolding, this one is for the left one            {            type            =            translation            ;            source            =            bipod_legs_length            ;            selection            =            "Leg_L"            ;            axis            =            "Leg_L_axis"            ;            // the axis is role of "bipod_legs" choice in model            memory            =            ane            ;            minValue            =            0            ;            maxValue            =            0.1            ;            // this #bipod extends upwards to x centimeters for instance            offset0            =            0            ;            offset1            =            1            ;            // nosotros employ axis with length of 10 centimeters, that means translation needs to be multiplied by ten            };          

Pistol holsters

  • Update 1.48 adds a possibility to use evidence pistols within of holsters of vests that have the holster
    • The belong model should contain proxy leading to \A3\Characters_F\Proxies\pistol_holstered.p3d, the standard position is in sample of vest within Characters samples, but feel free to move it according to the model
    • Every bit soon as the belong contains the proxy, weapon is going to be shown in it. There are simply two properties to conform the mode the weapon shows on the proxy:
      • The standard pistol is P07 which has its heart around the trigger. If you want to move the center of your weapon, just create a memory bespeak called holster (according to holsterOffset property in weapon configuration) to serve every bit new center of the model
      • P07 is even taken as a standard weapon for holster size, yous may adapt the calibration at which is your gun drawn in the holster with holsterScale property
                        class            Pistol            ;            course            Pistol_Base_F            :            Pistol            {            grade            WeaponSlotsInfo            ;            };            class            MyLittlePistol            :            Pistol_Base_F            {            class            WeaponSlotsInfo            :            WeaponSlotsInfo            {            holsterOffset            =            "holster"            ;            // name of a memory signal in weapon to serve as zero of the model            holsterScale            =            ane            ;            // calibration of gun in holster relative to standard size (0.5 means the gun is 50 % of original size)            };            };          

Magazine Proxies

  • With update one.78 it is possible to accept dynamic magazines using modelSpecial & modelSpecialIsProxy belongings.
    • More info tin can be plant on following page: Arma 3: Magazine Proxies

Virtual Arsenal visibility

  • In order to reduce clutter in Virtual Armory weapon list, parameter "baseWeapon" was introduced, which filters out all subvariants from the VA.
                        class            cfgWeapons            {            form            myWeapon            {            baseWeapon            =            "myWeapon"            ;            };            course            myWeapon2            :            myWeapon            {            };            class            myWeapon3            :            myWeapon            {            baseWeapon            =            "myWeapon3"            ;            };            };          
  • In above example "myWeapon" & "myWeapon3" would exist visibile in Virtual Arsenal. Please note, that all three weapons can be usually accessed in game and that baseWeapon parameter is simply used in Virtual Armory

See Also

  • Arma 2 Weapon to Arma 3
  • CfgWeapons Config Reference
  • Page discussion on the BI forums

Source: https://community.bistudio.com/wiki/Arma_3:_Weapon_Config_Guidelines

0 Response to "Arma 3 How To Holster Weapon"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel