distractor2004 14 Posted August 7, 2019 Hello all, I have been trying to create a weapon with different muzzle flashes depending on which muzzle is selected but have been unsuccessful. A version of the Promet contains a underbarrel shotgun that illustrates what I'm trying to do: https://imgur.com/a/Q4OctaW However, I cannot seem to create a similar muzzle flash for the secondary muzzle. I have tried creating "zasleh" and "zasleh2" muzzle flash proxies and copying the ARX model.cfg using ammorandom.0 & ammorandom.1. I have used the exact same proxy/memory points in my model and the exact same code shown below: class CfgSkeletons { class Skeleton { isDiscrete=0; skeletonInherit=""; skeletonBones[]={"trigger", "", "zasleh", "", "zasleh2", ""}; }; }; class CfgModels { class customPlasmaRifle { htMin=0; htMax=0; afMax=0; mfMax=0; mFact=0; tBody=0; skeletonName="Skeleton"; sectionsInherit=""; sections[]={"zasleh", "zasleh2", "camo"}; class Animations { class zaslehrot { type="rotationx"; source="ammorandom.0"; selection="zasleh"; sourceAddress="loop"; minPhase=0; maxPhase=4; minValue=0; maxValue=4; memory=0; angle0=0; angle1=6.283185; }; class zasleh2rot { type="rotationx"; source="ammorandom.1"; selection="zasleh2"; sourceAddress="loop"; minPhase=0; maxPhase=6; minValue=0; maxValue=6; memory=0; angle0=0; angle1=6.283185; }; class zasleh_hide { type="hide"; source="reload.0"; selection="zasleh"; sourceAddress="clamp"; minPhase=0; maxPhase=1; minValue=0; maxValue=1; memory=0; hideValue=0; unHideValue=0.5; }; class zasleh2_hide { type="hide"; source="reload.1"; selection="zasleh2"; sourceAddress="clamp"; minPhase=0; maxPhase=1; minValue=0; maxValue=1; memory=0; hideValue=0; unHideValue=0.5; }; }; }; }; but my weapon only seems to only create the "zasleh" muzzleflash when using the primary muzzle but does not create a "zasleh2" muzzle flash when I switch to my secondary muzzle. Has anyone figured out how to show multiple muzzle flashes from different barrels for an infantry weapon? Thanks in advance! Share this post Link to post Share on other sites
da12thMonkey 1943 Posted August 8, 2019 I would imagine (Kllrt confirmed it) it is using the reload and perhaps also ammoRandom sources, but indexed to the second muzzle e.g. reload.1 ammoRandom.1 as sources Gunpods on dynamic loadouts aircraft have to use reload for the muzzle flashes, since the native zasleh hide stuff is not supported outside the main body of the aircraft. So can use similar workarounds. Example from a gunpod here: but use reload.1 Edit:- Reyhard has also shared some information that the game doesn't recognise a second proxy for a second muzzle (only multiple proxies for the same muzzle), so it might be necessary to physically place the muzzle flash model inside the weapon as well (in my experience this may also require adding forceNotAlpha property to the geometry LOD, to stop the weapon then rendering behind hands in first person view) Share this post Link to post Share on other sites
distractor2004 14 Posted August 8, 2019 (edited) 11 hours ago, da12thMonkey said: I would imagine (Kllrt confirmed it) it is using the reload and perhaps also ammoRandom sources, but indexed to the second muzzle e.g. reload.1 ammoRandom.1 as sources Gunpods on dynamic loadouts aircraft have to use reload for the muzzle flashes, since the native zasleh hide stuff is not supported outside the main body of the aircraft. So can use similar workarounds. Example from a gunpod here: but use reload.1 Edit:- Reyhard has also shared some information that the game doesn't recognise a second proxy for a second muzzle (only multiple proxies for the same muzzle), so it might be necessary to physically place the muzzle flash model inside the weapon as well (in my experience this may also require adding forceNotAlpha property to the geometry LOD, to stop the weapon then rendering behind hands in first person view) Thank you for this info. I'm going to apply these tips and report my findings as soon as possible. Update: It worked! Thank you so much for your advice. I do not have my own custom model to show yet, but once I do I will post screenshots to go along with these basic steps. Per your advice, here is how I was able to produce a secondary muzzle flash for an under-barrel weapon: 1. I pasted the physical model of a muzzle flash into the 0 LOD (to be clear: NOT a proxy) and named the selection "muzzleflash2". 2. I went to Geometry LOD and created a new Property named forceNotAlpha with a Value of 1. 3. In my model config, I added the "muzzleflash2" selection to "SkeltonBones[]" and "sections[]" and list it as a selection within a "class zasleh2_hide" Animation, as shown below: class CfgSkeletons { class Default { isDiscrete = 1; skeletonInherit = ""; skeletonBones[] = {}; }; class customPlasmaRifle_base : Default { SkeletonBones[]= { "trigger","", "magazine","", "zasleh","","muzzleflash2",""//muzzleflash2 model added as a bone }; }; }; class CfgModels { class Default { sections[] = {}; sectionsInherit=""; skeletonName = ""; }; class max_plasma_rifle3 : Default { skeletonName="customPlasmaRifle_base"; sections[] = {"zasleh","muzzleflash2","Camo"};//muzzleflash2 model added as section class Animations { class trigger { type="rotation"; angle0=0; angle1=-0.5235988; axis="zbran"; memory=1; minValue=0; maxValue=1; minPhase=0; maxPhase=1; source="reload"; sourceAddress=0; selection="trigger"; }; class zaslehrot { type="rotationX"; source="ammorandom.0"; selection="zasleh"; axis = ""; sourceAddress="loop"; centerFirstVertex=true; minPhase=0; maxPhase=4; minValue=0; maxValue=4; memory=0; angle0="rad 0"; angle1="rad 360"; }; /*class zasleh2rot //Hiding second muzzle's rotation for now. Will work on keeping it centered later. { type="rotationX"; source="ammorandom.1"; selection="muzzleflash2"; axis = ""; sourceAddress="loop"; centerFirstVertex=true; minPhase=0; maxPhase=6; minValue=0; maxValue=6; memory=0; angle0="rad 0"; angle1="rad 360"; };*/ class zasleh_hide { type="hide"; source="reload.0"; selection="zasleh"; sourceAddress="clamp"; minPhase=0; maxPhase=1; minValue=0; maxValue=1; memory=0; hideValue=0; unHideValue=0.5; }; class zasleh2_hide { type="hide"; source="reload.1"; selection="muzzleflash2";//muzzleflash2 model added as selection sourceAddress="clamp"; minPhase=0; maxPhase=1; minValue=0; maxValue=1; memory=0; hideValue=0; unHideValue=0.5; }; }; }; }; 4. After compiling, the secondary muzzle flash shows up in Arma 3, at least in 3rd person. I'll try to figure out proper rotation and viewing the muzzleflash in 1st person (maybe need to add another LOD?) and post further updates as I progress. Thanks again for all the info! Edited August 9, 2019 by distractor2004 Successfully added secondary Muzzle Flash! Share this post Link to post Share on other sites