#arma3_config

1 messages · Page 137 of 1

stray sage
#

cfgUserActions have 3 event handlers, as I said before, event handlers are taking code.. So you can directly put code in there too...

hardy crow
stray sage
hardy crow
#

i have the cfguseraction cfguseractiongroups cfgdefaultkeyspresets, but not the cfgfunctions, or any SQF file, but dont want any SQF file, just want they keybind to trigger an animation to play, so how does this work?

stray sage
# hardy crow i have the `cfguseraction` `cfguseractiongroups` `cfgdefaultkeyspresets`, but no...

You do not necessarily need a SQF file, you can put your code into onActivate/onDeactivate/onAnalog, but it is heavily opposed and instead it is suggested to make a function along with an SQF file because that is how you achieve a more clean, readable, easier to test product you get. Right now you just want to do it and be done with it because you are all new to this and you do not want to bother yourself much. But if you do it that way, one day when you understand these stuff more , you will regret it. It is why people keep telling you to register a function into cfgFunctions and call it from there instead of directly writing your code into the event handlers.

#

In coding, you always prefer to split stuff into little chunks and handle them separately. This way you achieve modularity, and your product is easier to be read and processed by others mind and also your mind when you return back to your code one day.

#

This is the same (at least in my opinion but I doubt anyone will oppose it) in Arma whether it be , scripting, config and so on.

hardy crow
#

read this sub conversation please^^***

then check this out...
#arma3_config message

i might be interpreting this wrong, but running a switch on every button press is releated ('not so good on performance'),
hence why i want it just via onactivate/ondeactivate

I hope im making sense

#

sorry, had made a reference error

stray sage
# hardy crow but, even then, if you have an indexed system at the top of the config with tit...

I have made my suggestion, I know many other people have done their suggestions to your questions. If you want to ignore them, it is fine by me. You do not need to explain how you complete your task at hand. These are all suggestions, and I am not gonna push onto that. But do not think that you will be able to avoid cfgFunctions or SQF files at all, if you want to do some interesting stuff, considering you are a person who wants to propose a CDLC to BI.

stray sage
hardy crow
stray sage
# hardy crow ' are all new to this and you do not want to bother yourself much', this isnt ex...

The only impact of adding your function in cfgFunctions and calling it from there will have the following:
pros:
Better (negligible) performance due registered function.
Experience to you, you ll learn how to create functions.
Better structure to your addon.

cons:
30 mins from your life to learn how to register a function.

Instead of worrying this much about stuff, you should actually start learning stuff and make use of them, and also learn when to use these stuff and when not to... The impact of that performance which btw will not have any impact at all because that is not even related to performance, it will even have a positive effect on the contrary but imo a negligible one. You should start worrying about how you gonna actually write the script since that is what will affect the performance most :)

stray sage
# hardy crow ' are all new to this and you do not want to bother yourself much', this isnt ex...

switch is a command that is not really performance friendly. There are better options but in the referenced script; they are not buttons to be activated(so it is not like WSAD style very important continuously activated and deactivated buttons) thus less amount of times the switch code will be evaluated which is most likely why the writer of that function has decided to use so. At this point, I have got only 1 suggestion to you. First make stuff work, then worry about their performance. You cannot handle all things at the same time without knowing anything about Config, Scripting, Performance and many more concepts you will come across especially during scripting.

hardy crow
hearty sandal
#

performance comes after practice

#

I'll put +1 to start making and exploring it instead fo trying to learn it all just in theory

hardy crow
stray sage
hardy crow
stray sage
hearty sandal
#

👆 this @hardy crow you are trying to be too fast. you cant hurry this.

#

and you are again spiralling into the overthingking mode.

sullen fulcrum
#

hello guys so im trying to have a custom configs out of a vehicle for personal testing (trying to make it have greater speed then it already defined , which if i am not wrong this one is defined on physxX.hpp so my question is should i just add some lines into my config.hpp to reference that or just by adding some custom class refering the block about it will do?

shy knot
#

So, enginePower=X;

#

maxSpeed=X; and so on

sullen fulcrum
#

ty

shy knot
#

Also, config.hpp should not exist. Should be config.cpp. You can then separate vehicles, weapons, etc into hpp files instead

#

Each mod needs a cpp file

hardy crow
glass quail
#

Does anyone have any sort of documentation on faction creation or do i have to pull apart a mod on the workshop and start from there

#

(Faction patches would be cool, too)

delicate comet
steady beacon
#

@delicate comet try mass = in the magazine's, pretty sure that's what it looks for

hearty sandal
jade bone
#

hm does anyone know what these config values in CfgVehicles.CaManBase do?

        ISangleMod[]={0.1,0.029999999,0.1};
        ISrecoilMod[]={0,0,0.2};
        ISspeedMod[]={9.9999997e-005,9.9999997e-005,0};
        ISmaxTurn=0.5;
        ISanimMod[]={0.029999999,0.059999999,0.039999999};
hardy crow
hearty sandal
#

before you can understand anything about better options youll need to grasp the basics

#

just start trying out how sqf works

hardy crow
# hearty sandal just start trying out how sqf works

hey, i get im on a learning curve, but withholding the better option for me more obstructive/disruptive/interruptive, negative than positive, and very frustrating, because its withholding specific info, just knowing it will help me grasp where im at and where i need to be

hearty sandal
#

it wont help you grasp it

#

basics first.

#

advanced stuff is built on basics

#

I get that in your mind you are in a hurry

#

but you will need to lose that idea completely and focus on the learning

#

you cant hurry this along

plucky notch
opal ravine
#

learning from the start makes you avoid having to fix stupid things in the future

stray sage
# hardy crow <@!425037946379304990> hired someone to help me with learning this process, real...

Then surely they will advise on that better options already when the time comes (if (s)he is a good one). There is no point of doing that right now because you do not know the basics. How am I supposed to teach you something without teaching you the all prerequisites of it? You will not understand it. I know you will not as I am also training people in private to learn SQF and Config to achieve what they desire, I am teaching these stuff to people for years. There are at least 3 topics I need to mention to you before talking about why they preferred to design and code it like this, why would you want to use it or not, and at the end you would need to be able to ask to yourself whether or not you are able to use it. Right now, you are insisting on me talking about this but the thing is, you are not even aware that best code is not 100% performance wise efficiency. There are trades of many things. Time Cost, Code complexity, Code Performance, Code Cleanliness are some of those that starters should be aware to some extent and you do not know these either. But there is one thing, none of these matters if you cannot produce a code that is working and you are right now at that stage. So time to stop discussing matters and start producing. Otherwise it is all text-book style learning and once you take the keyboard into your hand to write, you will be disappointed to waste so much time to stuff you learned but cannot use because you simply did not unlock previous steps by putting your knowledge into practice.

hardy crow
# stray sage Then surely they will advise on that better options already when the time comes ...

Ok, well firstly, thankyou for taking the time to send a well thought out message, its definitely put the topic at hand into perspective for me, secondly, on the producing, will endeavour to start on that process, as early as tomorrow

class CfgFunctions
{
    class modtest
            TAG = {"modtest_fnc_animsgesturesuagdkp"}
        {;
            class modtest_animsgesturesuagdkp
            {
                file = "@modtest\addons\";
                class myFunction {"@modtest\addons\modtest_animsgestures.sqf"};
            };
                class modtest_animsgesturesuagdkp
            {
                file = "@modtest\addons\";
                class myFunction {"@modtest\addons\modtest_animsgestures.sqf"};
            };            

this is what i came up with today, without getting into the .SQF, but will fail forward, to push on, thanks again for your effort and time 🙏

stray sage
# hardy crow Ok, well firstly, thankyou for taking the time to send a well thought out messag...

I would list you all the mistakes but I cannot see a single line that could be understood by the related tools that has to make this work so I am not going to do that. If you do not understand how a config should be structured in order to work, I suggest you to start studying the structure first and till you figure out, to use samples related to what you want to create(you can simply copy and change them according to your need, then create further copies from the working parts and enrich what you have). Copy them and modify to your needs and see if that works. If you are curious what I mean with the mistakes, you can simply compare yours with the examples provided in; https://community.bistudio.com/wiki/Arma_3:_Functions_Library
and I am sure you will notice some of them instantly with a glance on any example.

hardy crow
desert wing
#

Shot in the dark: anyone know if CBA’s animated/pip optic feature supports showing NV/Thermals on the pip?

urban basin
#

I’m looking to add a skull “mask” to some custom units I’m making but I would prefer to not have to attach the skull object to the face or create a model from scratch. Is it possible for me to use the skull object as the model for the custom helmet or is that getting into copyright territory?

delicate comet
#

how do i configure the sonic boom sound effect?

#

i just wana use the base game sound, i got this:
soundSetSonicBoom = ["Plane_Fighter_SonicBoom_SoundSet"];
from the base game config, but it didnt work for my vtol

#

haven't been able to find any wiki page

hearty sandal
#

does it go fast enough?

#

and if I recall right you might not be able to hear it in the cockpit yourself

delicate comet
#

yea, 1500km/h

#

and i'm rotating my camera around in 3rd person, that usually works in vanilla jets

#

like its silent when the camera is infront of the aircraft

#

but it doesn't do that for my vtol

slim halo
delicate comet
#

i got it from the vanilla csat jet

hearty sandal
delicate comet
#

oooh

hearty sandal
#

you are missing the []

delicate comet
#

did i miss []

#

thanks

hearty sandal
#

that could be the issue yeah

delicate comet
#

yay that works

#

ty

#

that should go in the wiki someplace

slim halo
delicate comet
#

yeah i got it from the browser thing not the source

#

i dum

#

i meant the soundSetSonicBoom should go in the wiki

#

because its not mentioned in cfgVehicles reference anywhere

slim halo
#

I'll add it

delicate comet
#

u da best

frigid flower
#

Is it possible to give a unit different footsteps, even if on top of the existing ones? Like maybe through a custom CfgMoves?

hearty sandal
#

not on top of existing ones but they can be changed in the units config

frigid flower
#

Nice, how do I do that?

hearty sandal
#

find the footstep sounds part of the man base class and copy them to your config and change to what you want them to be

pliant ridge
#

I'm having an issue with my aircraft where I can add a weapon to a pylon but I can not select it using f when cycling. this only happens for this one weapon. If I had it as a non pylon weapon it works fine. I have double checked all of my linkages between ammo/magazine/weapon/pylon.

pliant ridge
#

some further information, I narrowed it down to the ammo specifically I was inheriting from Missile_Agm_01_f switching it to M_Jian_AT fixed it. however I have another situation with the ammo_Missile_HARM but it does not have anything that inherits from it. if anyone could provide insight on to what specifically is causing this it would be greatly appreciated.

quartz rampart
#

Is there a comprehensive tutorial for getting a custom grenade properly setup with a config?

hearty sandal
#

No.

frigid flower
#

What are the reasons why a grenade, despite being added to Throw's muzzles[], would be usable by AI but not by players? As in, they can't select the custom grenade to throw it. With ACE and pressing Shift+G, it shows up for one frame and then immediately disappears - it cannot be thrown regardless of how fast you are or how low your FPS is either. Yet, like I said, AI can throw it. It also sometimes shows up if there are other, vanilla grenades in the character's inventory, but I haven't found a consistent way to replicate that - it appears to be random

ashen sluice
#

muzzles do have a config value for controlling if they are shown to players. not sure if that's what's happening here though

frigid flower
#

Well, I'm inheriting from HandGrenadeMuzzle, so ye, defo not that

    {
        muzzles[]+= {"GARG_HLSR_Satchel_Muzzle"};
        
        class ThrowMuzzle: GrenadeLauncher{};
        class HandGrenadeMuzzle: ThrowMuzzle
        {
            magazines[] += {"GARG_HLSR_HandGrenade_F"};
        };
        class GARG_HLSR_Satchel_Muzzle: HandGrenadeMuzzle
        {
            magazines[] = {"GARG_HLSR_Satchel_F"};
            displayName="Throwable Satchel Charge";
        };
    };```
#

The grenade magazine is inheriting from HandGrenade, too, and the ammo is inheriting from GrenadeHand

#

So I really don't know what's going on

#

not like I changed anything other than displayname, model etc

#

also ignore the throwable satchel part )) unless that might have to do with it ((

hearty sandal
#

Does it work without ace@frigid flower

frigid flower
#

Lemme check

#

Nope, same result

#

Oh, huh, the throwable satchel works fine

hearty sandal
#

Probably something wrong with the ammo then

pliant ridge
#

3 questions, Is allowTabLock only for the old sensor system, the new sensor system or both?
is there a way to use allowtablock to be used on ammo
can you make an ammo display their sensor picture with the aircraft sensor so that it displays in the sensor display(MFD)

steady beacon
pallid snow
#

Anyone know how the 3rd person camera is created using the offsets in extCameraPosition[]?

#

i.e where does it attachto

#

don't worry think I found the function in rscSpectator.sqf

ashen sluice
#

i belive extCameraPosition translates from the camera bone if it exists and otherwise from the origin

#

@pallid snow

pallid snow
#

👌

fair hearth
#

I'm still struggling with this despite a fair chunk of biki reading, Googling etc....
I've got a weapon (technically a launcher) that I want to use a different model (.p3d) for when a unit is holding/carrying the weapon to when it's placed on the ground.
These are all setup OK and I've got the 'dummy' class in CfgVehicles that links the static object to the actual weapon class.
So a player can pickup the weapon and it correctly transitions from the static model to the weapon model.
However, what I've not worked out is how to ensure the weapon goes back to the static model when it's placed back on the ground again.

Is this possible without scripting? (I'm hoping there's a config entry I'm missing somewhere?)

At the moment, A3 just seems to make the default dummy vehicle class when placing the weapon on the ground so uses the wrong model for this.

hardy crow
#

Hey

Trying to play an animation, but everytime its played via keybind, the camera like does a momentary reset? like a flicker, how to fix?
Please note that animation doesnt work with playmove, only with switchmove

slim halo
#

you have to make a link to your animation and use playMove/playMoveNow instead

hardy crow
#

via functions?

#

it doesnt play with playmove

slim halo
#

no. I mean animation links

#

connectTo and interpolateTo

#

(or from)

hardy crow
#

were only using interpolateto at this time

#

so maybe thats the issue?

hardy crow
slim halo
#

vanilla configs have plenty of examples

hardy crow
#

previewale in game right

slim halo
#

To is where the animation goes after it's done

#

From is what can link to it for it to begin

hardy crow
#

RIGHT

hardy crow
#

silly question, but when specifying file paths, is it;

  1. \modname\addons
    or
  2. modname\addons\

?

hardy crow
# slim halo From is what can link to it for it to begin
class CfgMovesBasic;
class CfgMovesMaleSdr: CfgMovesBasic
{
    class Default;
    class States
    {
        class asigpercmstpsraswrfldnon_advance : Default
        {
            file = "\modtest\addons\anims\asigpcrhmstpsraswrrfldnon\asigpercmstpsraswrfldnon_dab.rtm";
            looped = 0;
            speed = 1;
            mask = "rightHand";
            rightHandIKCurve[] = {0};
            leftHandIKCurve[] = {0};
            interpolateFrom[] = {"amovpercmstpsraswrfldnon", 0.1};
            interpolateTo[] = {"amovpercmstpsraswrfldnon", 0.1};
            ConnectTo[] = {"amovpercmstpsraswrfldnon", 0.1};
ashen sluice
hardy crow
#

yeah that code works, 100%, but the issue is the jumpiness of camera, on each play of animation

slim halo
#

Don't use switchMove

#

Also you might wanna remove interpolateTo and stick with connectTo

ashen sluice
#

A3 still has no way to perform an animation state transition only does it?

slim halo
#

?

ashen sluice
#

playAction and playMove will play the entire animation

#

i.e. player playAction "SlowF" cannot be interrupted by pressing A for left

slim halo
#

Yeah

ashen prairie
ashen sluice
#

does the A3 editor not have categories anymore?

hearty sandal
#

Editor categories is different feature

ashen sluice
#

well vehicle classes are for editor categories in A2 🤷‍♂️

wintry tartan
#

Updated, WS update

hardy crow
slim halo
#

no

#

maybe

#

¯_(ツ)_/¯

#

depends on what you want

hardy crow
#

what does soundedge mean?

ashen sluice
#

It is the fractions of the animation where sounds are played, primarily footsteps

#

{0.5} means one sound is played half way through

#

It doesn't make any sense to have the same connectTo and interpolateTo

hardy crow
#

Line 35 label is not alphanumeric - what does this mean?

ashen prairie
hardy crow
ashen prairie
#

is ; correct rather than , in that context?

hardy crow
#

Expected Semicolon OR bad array syntax

ashen prairie
#

that's my guess, arma configs usually use commas for lists right?

hardy crow
#

horizontally yes (e.g [here1, here2]), but vertically to next entry, no, if that makes sense 🤦‍♂️, i believe thats right

hearty sandal
#

I dont think that mask part is done right at all

#

refer to vanilla configs for example

ashen sluice
#

Blend masks are arrays of string

hearty sandal
#

        ReloadMask[]=
        {
            "LeftShoulder",
            0.30000001,
            "LeftArm",
            1,
            "LeftArmRoll",
            1,
            "LeftForeArm",
            1,
            "LeftForeArmRoll",
            1,
            "RightShoulder",
            0.30000001,
            "RightArm",
            1,
            "RightArmRoll",
            1,
            "RightForeArm",
            1,
            "RightForeArmRoll",
            1,
            "weapon",
            1
        };```
#

for example

ashen sluice
#

The mask name in a gesture state is just the name of a blend mask

hearty sandal
#
        class GestureReloadSPAR_01ContextAnimDrive: GestureReloadSPAR_01Context
        {
            mask="handsWeapon_contextAnimDrive";
        };```
#

@hardy crow you need to use the vanilla configs as reference. Dont try to invent your own things

ashen prairie
#

So I'm inheriting from I_E_Uniform_01_F for a retexture, I have it setup and working, but in Ace Arsenal I get an error for;
No entry 'bin\config.bin/cfgweapons/rsf_u_bdu_M84.namesound'.

cfgweapons is:

    class UniformItem;
    class Uniform_Base;
    class I_E_Uniform_01_F;        
...
    class RSF_u_BDU_M84: I_E_Uniform_01_F
    {
        picture="\Gear-Reskins\Uniform-Reskins\Equipment\SandT.paa";
        author="Svend";
        scope=2;
        displayName="Battle Dress Uniform (M84)";
        model="\A3\Characters_F\Common\Suitpacks\suitpack_original_F.p3d";
        class ItemInfo: UniformItem
        {
            uniformModel="-";
            uniformClass="RSF_u_BDU_M84";
            containerClass="Supply50";
            mass=40;
        };
    };

what causes this? is it incorrectly defining iteminfo?

hearty sandal
#

sdf_u_bdu_m82 does not contain parameter namesound

#

possibly your inheritance tree is not properly set up and you overwrite original inheritnace

#

thus breaking it

wheat sluice
#

You are inheriting from the wrong class. I_E_Uniform_01_F is not a CfgWeapons class but is from CfgVehicles instead (that is the uniformClass used by U_I_E_Uniform_01_F).

#

Make your custom class inherit from U_I_E_Uniform_01_F instead.

#

Whenever you're inheriting from vanilla classnames, always double check the prefix to see whether or not you're inheriting from the right CfgWeapons classes.

sand ocean
#

Anyone here who has a clue on how to change the main menu music? Seen it done it some other mods but was never able to replicate it.. any help would be appreciated!

sand ocean
#

Thanks for the heads up!

#

Now I just gotta figure that part out... 😄

delicate comet
#

trying to make an aa missile that can hit something moving at 1500~ km/h, because at the moment the aircraft can fly right over an AA site and be basically immune to any existing AA\

#

do i need to mess with the tuning? i've tried just a bigger aoe but that doesnt seem to work

strange egret
#

yes, obviously... if you miss by several hundred meters, AOE is not helping. higher maneuverability, higher thrust, longer thrust time

mortal dove
#

Is there a way to get the weapon loadout of an Air Vehicle (Like the way you use "copyToClipboard str getPylonMagazines this") but for the actual weapon class names.
Example (Using USAF):
PylonMag = USAF_PylonRack_4Rnd_AGM114P
Weapon = USAF_AGM114P_Launcher

#

For note, the reason I know what weapon classname is for what pylon is they have a classname wiki on github.

#

But RHS doesnt seem to have a similar way :/

grand zinc
#

correct, { doesn't belong there

#

class CfgMovesBasic;
what are you trying to do here? have a declaration so you can inherit from it? or add a entry into that class?

#

class mtaa_asigpercmstpsraswrfldnon_dab ; Default
its : to inherit, not ;

hardy crow
#

sorted @grand zinc dont worry, rookie errors again, thanks again for reaching out

steady beacon
#

@delicate comet Theres a lot of things to consider not just maneuverability, making it to agile can cause missiles to behave funky, but also the missilelockcone, missilekeeplockedcone, missilemaxlockspeed, tracklead and trackoversteer will all play a big part, if you can get the missile within 50 odd meters you could use proximityfusedistance to help "cover" the remaining distance

hardy crow
#

whats the technical difference (if any) between crh and knl?

#

ok so animationtitles, say;
knl - crouched down, when stopped, so kneeling.
crh 'crouched unit (Arma 3)

wat is this blobdoggoshruggoogly 😢

slim halo
#

it's just a name...

#

knl is what you see often in A3 anims

#

never seen crh

strange linden
#

Hi! I am looking where Laserdesignator_pilotCamera (weapon) is described in the pbos? Has anyone an idea about where I can find the pbo? I am looking to understand which display camera is the Laserdesignator_pilotCamera (maybe 46?)

frigid flower
#

Yo is it CfgGroups or CfgVehicles misconfiguration that can cause the OPFOR group composition list in Curator mode to read BLUFOR instead?

#

I remember doing it and going "I'll fix it later", but now later has come and now I forgot how it's fixed

hearty sandal
#

yes misconfigurations can cause that

frigid flower
#

... yes, but where

#

CfgGroups or CfgVehicles

#

Maybe even factions config

hardy crow
sharp yoke
#

anyway to make it so it checks any headgear instead of a specific classname? something like this.
|| headgear _curplayer == "HelmetOpsCore_V1")

hearty sandal
sharp yoke
hearty sandal
#

dont have anything at hand for such.

desert wing
#

Hey folks, I'm trying to use the __has_include pre-processor to only use a reload anim if the western sahara CDLC exists and is enabled - but it doesn't seem to be working - anyone able to help figure out why it isn't?

My thinking is - check to see if an asset from the CDLC exists, and if so use the right anim

#if __has_include("\lxws\data_f_lxws\Logos\arma3_lxws_icon_ca.paa")
// File exists! Do something with it
reloadAction = "lxWS_GestureReload_slr_GL";
#else
// File does not exist
reloadAction = "GestureReloadMXUGL";
#endif
shy knot
#

How do you create a selectable component?

hearty sandal
#

selectable where?

shy knot
#

Like, how you can select to have bags or a camo net on a vehicle

#

How I do that

hearty sandal
#

in game oor where?

shy knot
#

Like, how you can select camos and components for vehicles

#

I’m not sure how to do components in the garage where you select them

hearty sandal
#

oh the garage

#

right

shy knot
#

Camos are simple, IK how to do that

#

But not the component part

hearty sandal
#

have you checked any vanilla vehicle with those optional parts for reference?

stray sage
shy knot
#

Yep

#

Thanks

hearty sandal
#

👌

crisp charm
#

Ok so this won't show up in game

#

class CfgVehicles
{
class CUP_M113_Base;
class CUP_B_M113_ADF: CUP_M113_Base
{
scope = 1;
_generalMacro = "M113_AUS";
side = 1;
displayName = "ADF M113";
accuracy = 0.3;
faction = "AUSpack";
vehicleClass = "APCs";
crew = "USP_OFFICER_LAV1";
typicalCargo[] = {"USP_OFFICER_LAV1","USP_OFFICER_LAV1","USP_OFFICER_LAV1","USP_OFFICER_LAV1"};
author = "Artermus";
hiddenSelectionsTextures[] = {"adf_m113\m113a3_01_adf_co.paa","adf_m113\m113a3_02_adf_co.paa"};

#

It's a retexture of one of the CUP vehicles

stray sage
crisp charm
#

Aww

stray sage
#

scope = 1 means it can only be created with scripts but is unlisted.

crisp charm
#

Thanks a bunch

#

Oh this is sweet, works great 😄

shy knot
#

Next question, how would I get a certain portion of the camo net to follow the gun, while being selectable with the entire camo net

nimble sequoia
#

When you need to apply two animations to the same object, such as a move and a hide, then you can use a "dummy" bone

"objectA_dummy",  "",
"objectA", "objectA_dummy"```
Apply the hide animation to `objectA_dummy` and the translation/rotation to `objectA`.
shy knot
#

@nimble sequoia So, make a selection that's nothing, then make the selection I need paired to the dummy selection correct?

nimble sequoia
#

The dummy is a virtual bone, it doesn't have a corresponding named selection in the p3d. But when you hide the dummy bone, it's children will also be hidden.

shy knot
#

This?

nimble sequoia
#

Impossible to guess without a picture seeing what the pieces are named and some idea of how you want them to behave.

nimble sequoia
#

Oh, you effectively have two camonets then - one that is static, and the other which follows the gun movement. But you want to hide all camonet together

shy knot
#

Yes, the camo net is a single piece

#

But, it has a portion that needs to move with the gun

#

Would it be easier to have them separate camo net options?

shy knot
nimble sequoia
#

Probably splitting the net into 2 or 3 named selections is the way to go

"net_gun", "net_static",

class net_static_hide {
    source = "net_hide";
    type = "hide";
    selection = "net_static";
    minValue = 0;
    maxValue = 1;
    hideValue = 1;
};

class net_gun_elevation {
    source = "main_gun";
    type = "rotation";
    selection = "net_gun";
    axis = "main_gun_axis";
    minValue = "rad -360";
    maxValue = "rad +360";
    angle0 = "rad -360";
    angle1 = "rad +360";
};```
#

net_static being the part on the hull that doesn't move and net_gun the part covering the gun barrel

#

You'd need some traverse animation too of course

shy knot
#

@nimble sequoia I made them into 3 different camo net components. Thanks for your help

hardy crow
# hearty sandal ```cpp ReloadMask[]= { "LeftShoulder", ...

(belated response, as was getting around to issue)

ReloadMask[]= {"LeftShoulder",0.30000001,"LeftArm",1,"LeftArmRoll",1,"LeftForeArm",1,"LeftForeArmRoll",1,"RightShoulder",0.30000001,"RightArm",1,"RightArmRoll",1,"RightForeArm",1,"RightForeArmRoll",1,"weapon",1};

Apart from just including

mask = "ReloadMask";

is there anything else one needs to do to make the mask work please?

What is causing this issue?

https://imgur.com/ZjPeptP

lavish prairie
#

anyone know how to change the FIA flag texture into the flag texture I want?

#

I've created a mod folder, the flag texture and its paa, addons folder, etc.

#

I've got it all set up but now I just need to know how to edit the config so that I can force replace the FIA flag texture in game to the flag texture I want

hearty sandal
hardy crow
hearty sandal
ashen sluice
hardy crow
ashen sluice
#

because that's what the engine expects from it

#

it expects a set of string-float pairs representing the target and cost of the animation graph edge

hardy crow
#

right, but what does it call exactly?

ashen sluice
#

what do you mean by that?

hardy crow
ashen sluice
#

animation states, i.e. classes nested in CfgMovesSomething/States, e.g. AmovPercMstpSnonWnonDnon form a directed graph with each state being a vertex in that graph.
ConnectTo, ConnectFrom, InterpolateTo, InterpolateFrom specify edges between the vertices, i.e. the states. each edge also has a cost associated with it.

class AmovPercMstpSnonWnonDnon
{
  InterpolateTo[] = {"AmovPercMwlkSnonWnonDf", 0.01};
};```
here `InterpolateTo` specifies that there exists a directed edge from `AmovPercMstpSnonWnonDnon` to `AmovPercMwlkSnonWnonDf` with a cost of `0.01`
#

the animation graph is used by the engine to find the path from one animation state to another, desired animation state

#

each edge can also be either normal or interpolated. that is specified by the choice of ConnectTo/ConnectFrom or InterpolateTo/InterpolateFrom

ashen sluice
#

https://i.imgur.com/O6APBNr.png here is a small part of the CfgMovesMaleSdr animation graph (at least in A2)
you can see the transitions of an unarmed man going down to prone from standing and back up, all while being still.
you can also see the transition of diving from a standing run to prone.

#

when you press Z to go prone, the game knows it wants to go to the prone state. so it starts at the current state and finds the path of lowest cost through the animation graph to get to that state. if you're standing still, it is 0.01+0.01=0.02 through AmovPercMstpSnonWnonDnon_AmovPpneMstpSnonWnonDnon. if you're running forward, this path would now have a cost of 0.01+0.01+0.02=0.04, so the diving forward animation path through AmovPercMrunSnonWnonDf_AmovPpneMstpSnonWnonDnon with a cost of 0.01+0.01=0.02 is preferred.

hardy crow
#

ok i think i get it, so this is how the config code works?:

codehere [] = {""};, when this ({""}), will automatically refer to the engines animation graph? making it not necessary to explain each animation, on each interpolationto/from, connectto/from

hardy crow
hardy crow
ashen sluice
#

the config is just data. its meaning depends on how the engine happens to use that particular piece of data

ashen sluice
hardy crow
#

as in {"amovpercmstpsraswrfldnon", 0.1 "amovpcrhmstpsraswrfldnon", 0.1...

(one animation state being an interval, sorry im not fluent with coding lingo, so used my own aha)

ashen sluice
#

you can call it vertex, node, or animation state. between two vertices you have an edge. i guess you could call that a transition

#

each state-cost pair, e.g. "amovpercmstpsraswrfldnon", 0.1 specifies an edge between two vertices

#

that is not inherent to the config however. that's just because this particular array of pure data is interpreted by the engine as describing an animation graph edge

hardy crow
ashen sluice
#

the engine wants a string-float pair, yes

#

the float is the cost of the transition

#

you can use whatever value you want (within some limits)

#

float means number if that eluded you

#

and string means text

hardy crow
ashen sluice
#

it's on the relative cost of other edges and the topology of the graph which you must base that decision.

#

when standing still you want the path of lowest cost to prone to be through the animation that goes down directly, instead of through the diving animation

hardy crow
# ashen sluice when standing still you want the path of lowest cost to prone to be through the ...

meaning, the higher the value, the more other animations will be used through the animation states*,, e.g

'For instance, from the kneeling with a pistol state (PistolKneelActions), you cannot directly go into crawling forward on your stomach with a rifle (even if you have a rifle). First you would have to holster the pistol and grab your rifle, then lie down, or viceversa'
(https://community.bistudio.com/wiki/CfgMoves_Config_Reference) ?

ashen sluice
#

the cost affects which path is chosen, not the length of the path

hardy crow
#

so, the higher cost = more animations played

ashen sluice
#

i wouldn't put it that way

#

take the diving example. if i increase the cost of one of the diving edges too much, then instead of performing a dive, the character will just stop and go to prone while stopped

hardy crow
ashen sluice
#

https://i.imgur.com/O6APBNr.png
in this example the lowest cost from AmovPercMrunSnonWnonDf (standing run forward) to AmovPpneMstpSnonWnonDnon (prone still) is 0.01+0.01=0.02
there is an alternative path through AmovPercMrunSnonWnonDnon (standing still) with a total cost of 0.02+0.01+0.01=0.04
if i increase the total cost of the first path to 0.04 then either path may be chosen. if i increase it to 0.05 then the second path will always be chosen

#

here i've highlighted the two paths

#

when you add up the cost of path 1 you can see it is 0.02. adding up the cost of path 2 you can see it is 0.04. therefore path 1 will always be picked

hardy crow
#

ok this makes sense now

#

so, to summarise, this error doesnt even need the "" inside the {}?

#

it can be just connectfrom[] = {};?

#

but if it has the "" inside the {} then youll find to define the {"SomeState", 0.01}?

ashen sluice
#

yeah, empty array is fine. it just means no edges of this particular kind.
if you do define edges then they must name an existing state ("" does not) and they must have a cost

hardy crow
ashen sluice
#

look at the picture. the arrows are edges

#

each of those pairs "SomeState", 0.01 defines a new edge

hardy crow
zenith drift
#

Question: A2OA. Something is overriding my CfgWeapons mod, and I cannot determine what. I believe it is something in the base game or its official expansions. Is there a way to determine which mods are writing to a weapon entry? And how can I affect my patches so that my mod loads after absolutely everything in the base game is finished loading?

ashen sluice
zenith drift
#

yes, but I don't know which ones to include. It's already a long list.

hearty sandal
#

basically you need to include everything you want your stuff to load after

#

with A2 there isnt really any good way to determine that if I remember right

zenith drift
#

So for more than a decade people have been making weapons mods totally blind?

ashen sluice
#

this is just a fundamental problem of two mods mutating the same resource

#

there is no good way to order them except explicitly

zenith drift
#

But how do I find which dependencies in the base game to include in my cfgpatches?

ashen sluice
#

have you extracted all of \ca into P:/ca?

zenith drift
#

and where would I be looking inside of there?

ashen sluice
#

depends on what in CfgWeapons you're modifying

#

if it's small arms then weapons*/**/config.cpp

#

there's also corepatch though

zenith drift
#

I'm modifying basically all the guns

#

what is a corepatch

ashen sluice
#

it's a set of community made patches on top of the base game

zenith drift
#

included in the main game?

ashen sluice
#

yeah

zenith drift
#

so how would i account for that in cfgpatches

ashen sluice
#

same thing. you add them as dependencies

zenith drift
#

I see no "weapons/*" in Ca

ashen sluice
#
P:\ca\weapons
P:\ca\weapons_acr
P:\ca\weapons_baf
P:\ca\weapons_e
P:\ca\weapons_pmc
P:\ca\weapons2
zenith drift
#

where is the corepatch located?

ashen sluice
#

you might see it in P:/corepatch

zenith drift
#

I don't see any sign of a corepatch anywhere. maybe it doesn't exist as its own entity in OA?

#

oh wait i found it

#

A lot of other mods contain within cfgpatches references like these: "CAWeapons_DMR",
"CAWeapons_M1014",
"CAWeapons_Saiga12K",
"CAweapons_ksvk",

#

where are those coming from?

#

I see no pbo's by those names anywhere

shy knot
#

Or the mod section itself

urban basin
#

I'm creating some attributes for units but I'm running into an issue where they are overlapping each other but it's only the top 4 attributes
I can send a screenshot if needed

wheat sluice
#

Vanilla A2 also has its own CorePatch pbo but it's easy to find since it's in the same Addons folder as the main pbos.

#

The CorePatch CfgPatches entry already loads CCP's changes by default so you only have to list CorePatch in your custom pbo's requiredAddons array.

#

Or you can simply list individual CorePatch configs based on whatever thing that you need to change (i.e. CorePatch_Weapons for something that alters the vanilla vehicle cannons/guns).

#

Just a word of caution though. CorePatch is kinda messy with all the individual patches that were accumulated over time...especially since the WITHSIX feedback tracker is long gone.

#

So you may need to unpack corepatch.pbo and take a peek at the changelog.txt file to find the configs that match the CIT ticket number.

ashen sluice
night nova
#

Does anyone know what baseclass soldier the Russian gorka: "U_O_R_Gorka_01_F" is inheriting from?
What i mean is that all clothes is inheriting from a specific "soldier_base": I_L_Uniform_01_tshirt_skull_F: I_L_Soldier_Base_F.
But i really cannot figure out which baseclass the gorkas are inheriting from...

slim halo
night nova
night nova
#

I looked through the config viewer and got the following for the "clean" granit suit: O_R_Gorka_F, and i also found the baseclass. To that i wrote the follwing : class O_R_Gorka_F: O_R_Gorka_Base_F {modelSides[] = {6};};

#

But that sadly didn't work either

night nova
#

U_O_R_Gorka_01_F: O_Soldier_base_F {modelSides[] = {6};}; Didn't work either, if anyone knows how to get Blufor units to wear the Granit / Gorka via configs suit ping me.

hardy crow
hot pine
#

data type - string, number, array

hardy crow
hot pine
#

you are missing number type

hardy crow
hot pine
ashen sluice
#

green is number, red is string, blue is array

#

though it doesn't seem to colour array elements correctly

slim halo
ashen sluice
#

i'm sure it could with a bit of effort

wheat sluice
# night nova `U_O_R_Gorka_01_F: O_Soldier_base_F {modelSides[] = {6};};` Didn't wor...

CfgWeapons
U_O_R_Gorka_01_F = Granit-B Suit
U_O_R_Gorka_01_camo_F = Granit-T Suit
U_O_R_Gorka_01_brown_F = Granit-B Suit (Weathered)
U_O_R_Gorka_01_black_F = Tracksuit (Black)

All uniforms inherit from Uniform_Base.

CfgVehicles
U_O_R_Gorka_01_F's uniformClass is O_R_Gorka_F
U_O_R_Gorka_01_camo_F's uniformClass is O_R_Gorka_camo_F
U_O_R_Gorka_01_brown_F's uniformClass is O_R_Gorka_brown_F
U_O_R_Gorka_01_black_F's uniformClass is O_R_Gorka_black_F

All uniformClasses inherit from O_R_Gorka_base_F (this is where the model Gorka_01_F.p3d is defined along with its injury materials/selections).
O_R_Gorka_base_F inherits from O_R_Man_Base_F (contains stuff for faces/identities/voices used by Russian Spetsnaz units).
Lastly, O_R_Man_Base_F inherits from O_Soldier_F (Mediterranean CSAT basic rifleman class).

#

If you want to make a BLUFOR compatible Granit, you need to create a custom CfgVehicles uniformClass that inherits from O_R_Gorka_F but changes the modelSides array to {1} so that only BLUFOR units can wear it. Don't forget to link it to your own uniform item in CfgWeapons too.

#

Also one more thing. For whatever reason, BI decided to add underscores to the selection names of Contact's models. If you aren't inheriting from vanilla Granits, you will have to define the hiddenSelections as "camo_1" (with an underscore) instead of "camo1" (used by most non-Contact models).

night nova
#

Shouldn't that work?

#
    {
        author="AugCph";
        editorPreview="";
        scope=2;
        ScopeCurator=2;
        displayName="CBRN MOPP4 Rifleman";
        uniformClass="O_R_Gorka_F"; ```
#

And then have this uniform class on the unit i want to wear the uniform

wheat sluice
#

Can you post your full config somewhere? I get the feeling that your inheritance got borked somewhere.

night nova
#

Sure

#

I can DM it to you

sullen fulcrum
#

Has anyone ever encountered something along these lines?

#

No entry 'bin\config.bin/CfgMagazines.#'.

I'm not sure why it's happening, I thought the issue was with my #include but that is also fine. It allows me to go fully in the game

#

And it happens when using ACE CSW and attempting to load a custom magazine into the HMG

neat iron
#

Truncated file. Missing one or more};. Error starts near token 'Wheeled_APC' : Car_F
In File Shinobi_Main\config.cpp: circa Line 255 EOF encountered

#

getting this error when packing the vehicle im making

#

everything that should be there IS there

#

so i have no clue why im getting this error

hot pine
night nova
#

I got it working

hardy crow
ashen sluice
#

can you post the whole class definition?

ashen sluice
#

does CfgGesturesMale not inherit from CfgMovesBasic ?

#

also it would be better if you posted a code block instead of picture

#

!code

charred sealBOT
#
How to use SQF syntax highlighting in Discord

```sqf
// your code here
hint "good!";
```

// your code here
hint "good!";
hardy crow
ashen sluice
#

CPP instead of SQF will probably produce decent highlighting for config

hardy crow
#
class CfgGesturesMale
{
    class Default;
    class States
    { 
        class asigpercmstpsraswrfldnon;
        class asigpercmstpsraswrfldnon_advance : asigpercmstpsraswrfldnon
        {
            file = "\mod_test\addons\anims\fp_asigpcrhmstpsraswrfldnon\fp_asigpercmstpsraswrfldnon_advance";          
            weaponlowered = 0;
            weaponik = 0; 
            lefthandikbeg = 0;
            lefthandikend = 0;
            lefthandikcurve[] = {};
            righthandikbeg = 0;
            righthandikend = 0;
            righthandikcurve[] = {};
            mask = "walkrun";
            canblendanims[] = {"legs"};
            ConnectFrom[] = {"amovpercmstpsraswrfldnon", 0.1 };
            ConnectTo[] = {"amovpercmstpsraswrfldnon", 0.1 };
        };
    };
};
hardy crow
ashen sluice
#

edit it and put CPP after the opening backticks

#

well it's not terrible...

#

anyway, if CfgGesturesMale inherits from CfgMovesBasic then it should be reflected here too

#

same with States if it inherits from CfgGesturesMale/States, i.e. States : States

#

though i am not sure if that is the case in A3

hardy crow
hardy crow
ashen sluice
#

okay, i wasn't sure off the top of my head if that was the case

#

does asigpercmstpsraswrfldnon exist?

hardy crow
ashen sluice
#

then you can't use it as a base class

hardy crow
ashen sluice
#

a base class has to exist

hardy crow
#

whats a base class, one of the stances?

ashen sluice
#

class asigpercmstpsraswrfldnon_advance : asigpercmstpsraswrfldnon the name after the colon specifies a base class

hardy crow
#

righttttt

ashen sluice
#

all the fields (like connectTo) are inherited from the base class

#

though any field in the child class can override an inherited field

#
class Base
{
  A = 1;
  B = 2;
};

class Derived : Base
{
  B = 3;
};

here
Derived.A = 1 (inherited from Base) and
Derived.B = 3 (overridden by Derived)

ashen sluice
neat iron
#

Cant really post the config here

ashen sluice
hardy crow
neat iron
#

Cant post attachments and its more or less 90% of it

ashen sluice
neat iron
#

Im at work so I’ll do it later. Had someone else check and they said nothing was missing in it

ashen sluice
ashen sluice
hardy crow
ashen sluice
#

primary moves and gestures are separate

#

they exist in CfgMovesMaleSdr but not in CfgGesturesMale

hardy crow
#

"AmovPercMevaSlowWrflDf" afaiwa is a cfgmove, will check

hardy crow
ashen sluice
#

i'm pretty sure neither of those are gestures

#

look in CfgGesturesMale/States in the config viewer

hardy crow
#

i didnt* checked cfgmovesmalesdr***

hardy crow
ashen sluice
#

do you understand the difference between a normal move and a gesture?

hardy crow
ashen sluice
#

okay. if you want to create a gesture then you cannot use a base class from CfgMovesMaleSdr

ashen sluice
#

you can't just take some random class as your base class. you have to make an informed decision based on your needs

#

maybe we should start with what it is you actually want to achieve

hardy crow
#

play a gesture, (e.g hand signal) from a standard, standing rasied rifle position

jade bone
#

in CfgCloudlets, are the variability fields (e.g. sizeVar for size) a scalar multiple of size, or absolute? so e.g. if i have size=10000 and sizeVar=0.5 would i see things of [9999.5,10000.5] variability, or [5000,15000] variability?

hardy crow
ashen sluice
#

okay. if you just want to play the gesture, first we should find out if that gesture already exists

#

the way you play the gesture is player playAction "SomeAction"

#

in CfgMovesMaleSdr/ManActions you can find the list of all actions

#

there you might see SomeAction[] = {"SomeMove", "Gesture"};

#

however ManActions only lists the full set of available actions. there are actual action maps in CfgMovesMaleSdr/Actions

ashen sluice
ashen sluice
#

execute the script in game

#

i'm sure A3 has many gesture actions you can try out

hardy crow
#

https://imgur.com/CRibbOU
are these all polymorphed from one blendanim? or rewritten for every single anim, or in here gesture?

hardy crow
ashen sluice
#

why do you want to make your own?

hardy crow
ashen sluice
hardy crow
#

think its the right time now to no longer keep asking these questions anymore in config makers, this petty following crumb trail isnt productive, thank @ashen sluice for your help and all others, but yeah, lets leave this channel open for everyone else

ashen sluice
hardy crow
#

i dont just want to get given the answer, and use it, i want to know the why and how that comes with it, for more independant working, but, this, 'investigative' type approach is just not a feasible approach to keep on the path of, i gave it my all, and, happy to start again from scratch another way, it is what it is

ashen sluice
#

you probably have a mismatched brace somewhere

neat iron
#

Doesnt look like it. Ive looked through it multiple times and had other people look

ashen sluice
#

you need to bisect

#

delete half, see if it passes. if yes then the error was in the other half. rinse and repeat with ever smaller subset until you find the problem

neat iron
#

I’ll give it a go

urban basin
neat iron
#

that said, whats the nato faction name for configs

#

think i might have it

neat iron
#

yeah managed to get it all into game

#

rn the animations are working at all though

#

is it better to ask here or in model makers

#

like suspension, steering, wheels turning etc

slim halo
#

or maybe it's a game bug

#

¯_(ツ)_/¯

zenith drift
#

CfgVehicles: MinFireTime. Biki says only this: "Minimal time spent firing on single target". Does a low minfiretime allow the ai to react more quickly, or to switch targets more quickly? Or would a low minfiretime only cause the ai to shoot less?

urban basin
#

There a way to create a class only if a mod is loaded? What I think it would look like

#if __has_include("configFile >> CfgPatches >> rhsusf_main")
class NEW_CLASS : OLD_CLASS    
{
      ...  
};
#endif
shy knot
#

I don’t know scripting so can’t be any help there. But, you could probably create the class and reference stuff without adding it to the required addons. And once the mod is loaded, it’ll read the class

#

I think

neat iron
#

i imagine this is a config issue, but the wheels arent contacting the ground, making the suspension bottomed out constantly

#

it also acts like its sat on top of a stick when it drives

grand zinc
hearty sandal
neat iron
#

so flip them 180 vertically and see what happens?

#

physx doesnt look like theres an issue

#

could it be the basic damper axis? @hearty sandal

hearty sandal
#

No idea how you have set it up. 😅

neat iron
#

just throwing ideas at what could cause it

#

like its not going to be the headlight memory points

#

but it could be basic_damper or individual wheels

hearty sandal
#

Possibly if you have that kind of setup in the model

#

For damper animations

neat iron
#

i just followed the samples hatchback car for guidance

#

since youtube tutorials tend to be sketchy at best, and i cant find a hand to hold through it

urban basin
#

Oops I forgot to tick off the ping sry

grand zinc
#

pboprefix

urban basin
#

K thanks 🙏

neat iron
#

@hearty sandal it was the dampers being inverted. drove it over some bumps to see which way the suspension extended to test

neat iron
#

need to resolve the fact its floating and isnt driving right

hearty sandal
#

Probably physx spring setup issue

#

And possibly weight distribution is not centered

neat iron
#

sprung mass is the same for every wheel

#

right now its acting like its sat on top of a cone

#

that and one of the wheels isnt animated for some reason

hearty sandal
#

Typo

neat iron
#

theres a long list of issues
another one is that right now, the first person view is like its a UAV

neat iron
#

but yeah. no drivers seat for some reason, but has the commander and gunner which shouldnt be there

hearty sandal
#

Inheritance, missing proxies, missing actions, config set up as uav

#

Lot of options

neat iron
#

mind if i send you the config to have a look through? I didnt put UAV in it at all

#

could be because its inheriting from a wheeled APC

neat iron
#

mass issue

hardy crow
#

Does anyone know what the base class is to use gesture based animations?

urban basin
grand zinc
#

"\WagonsCustomFactions" what is that

#

You put the path of the mod, the path of the file you want to check

#

not... I don't know what that is

#

do you have a copy of RHS in your own mod? surely not

urban basin
#

Yeah like I said idk what I'm doing

grand zinc
#

eeeeeeee

#

\rhsusf\addons\rhsusf_main\config.bin"

urban basin
#

not mine

grand zinc
#

has_include checks if a file exists

urban basin
#

I'm dumb

grand zinc
#

if you want to check if a mod is loaded, you check if some file inside the mod exists
so ofc you give it the path to the file inside that mod, and not inside your own

urban basin
#

Thank you for the help 🙏

hearty sandal
hardy crow
hearty sandal
#

this is the main base class

urban basin
#

So it works now but only in eden it seems

#if __has_include("\rhsusf\addons\rhsusf_main\config.bin")

When I try to use the unit in zeus they won't show up if they are in this #if

#

These are set tho

scope = 2;
scopeCurator = 2;
grand zinc
#

zeus also needs the CfgPatches units[] entry afaik

urban basin
#

🤦‍♂️ Forgot about that

hardy crow
urban basin
#

Well now that I've got the structure setup I can finally start making some factions praise_the_sun

ashen sluice
hardy crow
ashen sluice
#

try Default. it makes for a good default

hardy crow
ashen sluice
#

okay. i don't know why you would want to derive from GestureAdvance but fine. you were talking about deriving from CfgGesturesMale before though

hearty sandal
#

I meant the class default being the base class for all gestures

#

inside cfgGesturesMale

#

you dont need a base class unless you mean to inherit its properties

ashen sluice
#

that's why Default is good. it gives you good defaults for all the one million fields where the defaults are fine

hearty sandal
#

yep

#

"base class" is invented structure that allows definition of shared same properties between multiple classes

#

and in case something in baseclass needs changing the changes apply to all of its child classes

#

however "class default" is core config base that you should not change

hearty sandal
#

idk.

fair hearth
#

Is it possible to adjust how steerable parachutes fly through config tweaks?
I've tried adjusting all the parameters that sound like they are related to flight (and do adjust things like helo flight) but nothing seems to have any effect

shy knot
#

Used the mora physX on my 31 ton vehicle and it was extremely slow for some reason. Isn’t the Mora like around 30 tons?

versed moss
#

Can anyone help me out with the config for vics? More specifically helicopters. Rn i'm just reskining a Ah-1, I got the textures and everything, I just don't know how to get the proper nerd file stuff. So far, i've ripped some from the base arma helo, just dunno how to add the actual variations part

wintry tartan
#

Tell us precisely

versed moss
#

right right, So I have a config.bin (for air_f.pboyadayada file from the base arma3/addons folder. I intend to get my retexture of the RHS Ah-1 on the game using that config since the config.bin in the air_2 pbo didn't work. Now, I don't quite know what I need to add to make this work

wintry tartan
#

What did you do so far? What's your config?

versed moss
#

So far, I've just unscrambled it. Nothing else since it was too goddamn confusing. Not anything like doing helmets

wintry tartan
#

So you have nothing so far?

versed moss
#

yeah pretty much

shy knot
#

You need to add hiddenSelections and hiddenSelectionsTextures to your custom variant of the helicopter

wintry tartan
#

Mhm, so where to start...

#

You need to add hiddenSelections
No. hiddenSelections are already defined and there's zero point to redefine

#

More like minus points

versed moss
#

gotcha, thanks home boy

wintry tartan
#

If you get through this one, hit us up

#

Or, if you find something wrong while doing this tut, hit us up, too

versed moss
#

alrighty, will do

versed moss
#

@wintry tartan Alright, I got through it all and mostly understand it

wintry tartan
#

Alright so you know how to make an addon now?

versed moss
#

Yeah pretty much, though I assume whenever they talk about typing stuff, i'd make a proper config.ccp text document?

#

i'm a potato

#

never mind

hardy crow
#

silly question, do all cfggestures rtms inherit from cfgmovesbasic or cfgmovesmalesdr?

hearty sandal
#

all gestures are configured in cfgGesturesMale

#

they dont have connection to cfgmoves

#

this should be clear from the separation of the different cfg classes

hardy crow
#

please define to me what an inheritance class is, and then in terms of missing inheritance class

hearty sandal
#

wiki has a page about that

hardy crow
#

where can i find the color code for armaconfig for visual studio code?

hardy crow
slim halo
#

I mean customize the theme colors

slim halo
#

google

hardy crow
slim halo
hardy crow
hardy crow
#

nvrm, answered both questions

hardy crow
#

Is this right or not? (pboproject says its missing inheritance classes)

class CfgGesturesMale
{
    class Default
    {
        class States: Default
            {
ashen sluice
#

it's not right. remove that nesting Default class

hardy crow
ashen sluice
#

the other one

#

actually both

#

yeah that's better

hardy crow
#

thanks

hardy crow
ashen sluice
#

?

hardy crow
# ashen sluice ?

initially tried to get the mod anim to show in config viewer, to no avail
(#arma3_config message)

now trying this, but its saying truncated file, error line 62 EOF
'Error starts near token 'States' :' (last change was the class mod_test)
(#arma3_config message)

this doesnt work either, same error;

class CfgGesturesMale
{
    class mod_test
    {
        class States    
        {
hardy crow
# ashen sluice ?

is it necessary to specify the modname_test eachtime underneath the start of a main inheritance?

class CfgFunctions
{
    class modname_test


class CfgUserActions
{
     class modname_test
    {
#

or could this work?

class CfgGesturesMale
{
    class mod_test_States
    {
ashen sluice
#

no

#

you want ```CPP
CfgGesturesMale
{
class States
{

};
};

hardy crow
# ashen sluice no

just checked, but still cannot see my animation in configviewer > cfggesturesmale, will sleep on it and test tomorrow, meanwhile if you have any suggestions, please send them over, would be very grateful

narrow swallow
#

Can model parts be animated based on pilotCameraRotX and Y?

hearty sandal
#

@hardy crow check the actual cfgGesturesMale how it has the classes set up 🙈

digital python
#

How can I turn a custom backpack into a LR radio for TFAR beta? I have made a model and what not and implemeted it into the game I just cant find anything straight forward on how to actually make it a TFAR LR

#

nevermind I figured it out

hardy crow
# hearty sandal <@!540584779977064470> check the actual cfgGesturesMale how it has the classes ...
class CfgGesturesMale
{
    class Actions
    {
        class BlendAnims
        {
            class Default
            {
                class Interpolations
                {
                    class ManActions
                    {
                        class States
                        {
                            text = "modname_gesture_dab";
                            file = "\fp\fp\mn_anim_dab.rtm";                        
                            actions = "NoActions";
                            mask = "modname_Gesture_Test";
                            Walkcycles = 1;
                            weaponIK = 1;
                            leftHandIKBeg = 1;
                            leftHandIKCurve[] = {0, 1, 0.1, 0, 0.8, 0, 1, 1};
                            leftHandIKEnd = 1;
                            rightHandIKBeg = 1;
                            rightHandIKCurve[] = {1};
                            rightHandIKEnd = 1;
                        };
                    };
                };
            };
        };
    };
};

Something like this?

ashen sluice
#

no

#

you can't just throw shit at the wall and see what sticks

#
class CfgGesturesMale
{
  class Default;

  class States
  {
    class MyGesture : Default
    {
      file = "\fp\fp\mn_anim_dab.rtm";
      // ...
    };
  };
};

class CfgMovesBasic;
class CfgMovesMaleSdr : CfgMovesBasic
{
  class ManActions
  {
    MyGesture[] = {"MyGesture", "Gesture"};
  };
};
hardy crow
#

so i need cfgmovesbasic/malesdr or not?

some people say yes, some people say no blobdoggoshruggoogly

ashen sluice
#

if you want to use the gesture, yes

#

you need the action in CfgMovesMaleSdr and it refers to the gesture state in CfgGesturesMale

slim halo
ashen sluice
#

ah yeah you're right

#

i'm thinking of my own move set...

#
class CfgGesturesMale
{
  class Default;

  class States
  {
    class MyGesture : Default
    {
      file = "\fp\fp\mn_anim_dab.rtm";
      // ...
    };
  };
};

class CfgMovesBasic
{
  class ManActions
  {
    MyGesture[] = {"MyGesture", "Gesture"};
  };
};
hardy crow
# slim halo no, actions are in CfgMovesBasic

@ashen sluice

something like this?

class cfgmovesbasic;
class cfgmovesmalesdr: cfgmovesbasic
{
    class cfgmovesmalesdr
    {
        class States
        {
            text = "mod_gesture_dab";
            file = "\fp\fp\mod_anim_gesture_dab.rtm";
        };
    };
};
ashen sluice
#

no

#

what did i say about throwing shit at the wall

hardy crow
ashen sluice
#

still no, that inner CfgMovesMaleSdr is wrong

hardy crow
#

has to be case sensitive??

ashen sluice
#

no, it shouldn't be there

hardy crow
#

oh

#

😂

ashen sluice
#

and gesture states go in CfgGesturesMale

#

i already showed you the exact code

#
class CfgGesturesMale
{
  class Default;

  class States
  {
    class MyGesture : Default
    {
      // you can only change things inside this block

      file = "\fp\fp\mn_anim_dab.rtm";
      // ...

      // ending here
    };
  };
};

class CfgMovesBasic
{
  class ManActions
  {
    MyGesture[] = {"MyGesture", "Gesture"};
  };
};
#

here, copy this and don't change anything except the block with the comments

#

no

#

what did i just say

hardy crow
#

its saying missing inheritance classes at; class MyGesture : Default ?

#

pbo project says inherit class 'default' doesnt exist

ashen sluice
#

okay, let's see the code. did you change something

hardy crow
ashen sluice
hardy crow
#

still says missing inheritance class @ MyGesture: Default

hardy crow
ashen sluice
#

i told you to copy my code and only edit that one block. nothing outside it

hardy crow
#

still says missing inheritance class @ MyGesture: Default

ashen sluice
#

and you copied my code exactly?

#

and changed nothing?

hardy crow
#

well i added the missing bracket under class Default

ashen sluice
#

show me

hardy crow
ashen sluice
#

no, show me your code after you changed it

hardy crow
#
class CfgGesturesMale
{
    class Default
    {
        class States
        {
            class MyGesture: Default
            {
                file = "\fp\fp\mn_anim_dab.rtm";
            };
        };
    };
};


class CfgMovesBasic
{
    class ManActions
    {
        MyGesture[] = {"MyGesture", "Gesture"};
    };
};
hearty sandal
#

It is not the same

ashen sluice
#

what did i say about not changing anything

hardy crow
#

dude

hearty sandal
#

You need better copy paste fu

ashen sluice
#
class CfgGesturesMale
{
  class Default;

  class States
  {
    class MyGesture : Default
    {
      // EDITABLE AREA STARTS HERE

      file = "\fp\fp\mn_anim_dab.rtm";
      // ...

      // EDITABLE AREA ENDS HERE
    };
  };
};

class CfgMovesBasic
{
  class ManActions
  {
    MyGesture[] = {"MyGesture", "Gesture"};
  };
};
#

is that clear enough? you are not to change one single character outside the marked region

hardy crow
hearty sandal
#

No

ashen sluice
#

i have not missed anything

hardy crow
#

😭

hearty sandal
#

Back to learning how class inheritance works

hardy crow
#

oh

#

unless

hardy crow
#

omg

#

right

#

😭 😭

#

misssed the ;

ashen sluice
#

are you unfamiliar with CTRL-C and CTRL-V by chance?

hardy crow
#
class CfgGesturesMale
{
    class Default;
    
        class States
        {
        class MyGesture: Default
        {
                file = "\fp\fp\mn_anim_dab.rtm";
        };
    };
};


class CfgMovesBasic
{
    class ManActions
    {
        MyGesture[] = {"MyGesture", "Gesture"};
    };
};
ashen sluice
#

okay, thhat's better, though you've got some weird indentation on States there

ashen sluice
#

not quite

hardy crow
#

but, why the semicolon at default;? never seen it used like that before thats weird to me

hardy crow
ashen sluice
#

it doesn't have any effect, it's just hard to read

hardy crow
hardy crow
ashen sluice
#

warmer...

#

these still don't line up

hardy crow
ashen sluice
#

well they line up now, but usually we like to indent at different levels

#
class CfgGesturesMale
{
    class Default;
    
        class States
        {
        class MyGesture: Default
        {
                file = "\fp\fp\mn_anim_dab.rtm";
        };
        };
};
class CfgGesturesMale
{
    class Default;
    
    class States
    {
        class MyGesture: Default
        {
                file = "\fp\fp\mn_anim_dab.rtm";
        };
    };
};
#

see the difference?

hardy crow
ashen sluice
#

no don't remove that, i didn't give you permission to edit anything there

hardy crow
ashen sluice
#

for every opening brace { you need a matching closing brace }

#

select the code i posted, press CTRL-C, then go to your editor and press CTRL-V

#

and only edit inside the marked region

#

okay? do this until you have succesfully played MyGesture in game

#

after that you can start thinking about making changes elsewhere

ashen sluice
#

baby steps. you can't run before you can walk

ashen sluice
#

and, did you manage to play the gesture?

hardy crow
ashen sluice
#

what kind of trouble?

hardy crow
ashen sluice
#

you sure there isn't already a mask that suits you needs?

hardy crow
#

0 = ?
1 = ?

ashen sluice
#

aha

#

that would be the hand IK then

#

that's probably still controlled by leftHandIKCurve and rightHandIKCurve

#

the Beg and End fields are not needed

#

try

leftHandIKCurve[] = {0};
rightHandIKCurve[] = {0};
hardy crow
ashen sluice
#

yeah

hardy crow
#

dude, can you please tell me, this is third time ive asked

0 = ?
1 = ?

because im doing something, somewhere to make this anim not work
this is giving me a headache, i just cant figure out what im doing wrong

ashen sluice
#

i don't know what you're asking me

hardy crow
#

0 = no IK inflence?
1 = IK influence?

ashen sluice
#

yeah

#

you don't want IK, so 0

jade bone
#

do string "math" values (like the "2+8+16" stuff you see for bitfield values, or the intensity-based interval fields for cfgCloudlets) work for any numeric field? or only for specific ones

ashen sluice
#

generally you can expect them to work anywhere, though it is possible that there are exceptions

jade bone
#

cool

#

hmm

#

what governs the "variables" that show up in the expressions?

ashen sluice
#

variables?

jade bone
#

in cfgCloudlets you see a lot of specific references to like interval="0.05*intensity + 0.01"; which i assume come from the explosion configs that reference the cloudlet

#

or there's a bunch of stuff that references isWaterSurface or distToWater and interpolate

#

like e.g.

    class MineUnderwaterWaterPDM: Default
    {
        interval="(0.004 * interval + 0.004) * (distToWater interpolate [-5,-2,10,1])";
#

are the expressions just arbitrary SQF here, and that's where interpolate comes from?

ashen sluice
#

aha. certain expressions like this are evaluated by the engine multiple times as needed with different values for variables

#

in a sense they are arbitrary SQF, but they execute in a different context with a different set of commands and a different namespace

#

they cannot interact with your usual SQF scripts

jade bone
#

is it documented anywhere what's available in the SQF execution context for various config scopes?

#

or is that just kind of an empirical black magic kind of thing from the modding side

ashen sluice
#

it might be documented somewhere but i couldn't point you to it

jade bone
#

that's fair

#

well thanks

hardy crow
#

with functions, is it fn_ or fnc_?

hardy crow
#

disregard last - found the issue

ashen sluice
# slim halo specific ones

getNumber evaluates math expressions, and so does the engine when loading most data structures, e.g. something like animation state speed

opal crater
#

not only math expressions, SQF in general.

tacit zealot
#

so I noticed allowedHeadgear can be used in a unit class to, well, define the allowed headgear. Is there something similar I can do with facewear that doesn't involve re-defining what facewear is allowed for each type of headgear? (I want to mix up quite a bit of modded facewear to get a varied look for a custom faction)

south bison
#

can u make custom ranks for a mod

stray sage
south bison
#

so its just server or mission file that is it

hardy crow
#

Hey,
MyGesture[] = {"GestureNameHere", "Gesture"};

  1. what are each of these points for?
hardy crow
ashen sluice
#

it means that this action is a gesture, and the name of the gesture state is GestureNameHere

#

a primary move action would be MyAction = "MyMoveState"; or MyAction[] = {"MyMoveState", "Primary"}

hardy crow
ashen sluice
#

okay, Primary or Gesture specify whether this action should play a primary move (like walking) or a gesture
MyMoveState is the name of some animation state, either in CfgMovesMaleSdr for Primary, or in CfgGesturesMale for Gesture

#

MyAction = "MyMoveState"; is shorthand for MyAction[] = {"MyMoveState", "Primary"};, they do the same thing

hardy crow
ashen sluice
#

no

#

you need the name of a gesture state in CfgGesturesMale

ashen sluice
#

yes

hardy crow
#

but, does the filename actual (.rtm) name have to be the exact same?

ashen sluice
#

no

hardy crow
#

@ashen sluice this does not work, have triple checked the animation inside .rtm is an actual animation and not a static.
have used the standard default setup, speed = 2, tried all the default blendanims

what am i missing?

ashen sluice
#

let's see the full code then

ashen sluice
#

okay, and when you say it doesn't work, what exactly do you mean?

fiery junco
#

Has anyone an idea where i can find a list of the vanilla mfd? I tried to seek out the hud configs in the config viewer but i cant find them?

hardy crow
ashen sluice
#

doesn't matter

shy knot
#

What could be causing a vehicle to not go its max speed? I've got an IFV that has a max speed of 74, but can only manage 16-17. The engine and stuff is taken from an MBT so its got a strong engine atm

nimble sequoia
#

Assuming you have wheels above ground, sensible maxSpeed, enginePower, peakTorque, torqueCurve and gearbox settings, look to the class Wheels {} moi and dampingRate/dampingRateInAir parameters. Set the moi then trial-and-error adjust the damping rates (for a tank, make those two the same). If the tank is too slow, reduce the damping rate.

#

If that doesn't help, sometimes the boundary point on the roller return and sprocket drive wheels (1 and 9) can be slightly too far away from the wheel axis and a small adjustment closer will make a big difference.

shy knot
#
side="left";
                boneName="wheel_podkolol1";
                center="wheel_1_2_axis";
                boundary="wheel_1_2_bound";
                steering=0;
                damping  = 75.0;
                mass=150;
                weight=150;
                MOI=11.5;
                dampingRate=1.0;
                dampingRateInAir=685;
                dampingRateDestroyed=10000;
                maxDroop=0.18;
                maxCompression=0.18;
                sprungMass=1937.5;
                springStrength=215000;
                springDamperRate=41250;
                maxBrakeTorque=6500;
                latStiffX=3;
                latStiffY=40;
                longitudinalStiffnessPerUnitGravity=100000;
                frictionVsSlipGraph[] = {{0.0,1.5},{0.5,1.5},{1,1.5}};``` @nimble sequoia This is for a 31 ton vehicle
#

Sprungmass is correct, I did that with the formula

#

Got to readjust the rest then

nimble sequoia
#

tracked or wheeled?

shy knot
#

tracked

nimble sequoia
#

damping = is not a valid parameter

#

neither is weight =

shy knot
#

I copied the physX from the OPTRE M808B. Which is pretty old model and config wise :p

nimble sequoia
#

So you have 8 weight bearing wheels on each side?

shy knot
#

Yes

nimble sequoia
#

your sprungmass is in roughly the right range

shy knot
#

Pretty sure spring strength and spring damper rate are incorrect though

#

Not sure what natural frequency is

nimble sequoia
#

try reducing springDamperRate to 20410

#

set dampingRate and dampingRateInAir to 685

#

What is the length of the damper axis in the Mem LOD (in metres)?

strange egret
#

if you cant go to max speed, then check if it switches gears properly. If it stays in first gear, theres your reason

nimble sequoia
#

As X3KJ says, there are quite a lot of prerequisites which I assume you have already checked and which I already mentioned, such as gearbox

shy knot
#

Yes

#

One moment

#
class complexGearbox
        {
            GearboxRatios[] = {"R1",-0.4,"N",0,"D1",2.0}; //GearboxRatios[] = {"R1",-0.4,"N",0,"D1",2.0};
            TransmissionRatios[] = {"High",7.85};
            gearBoxMode = "auto";
            moveOffGear = 3;
            driveString = "D";
            neutralString = "N";
            reverseString = "R";
            transmissionDelay = 0.1;
        };```
#

Wait

#

D1

#

Only one gear

#

Right?

nimble sequoia
#

Ok, so a very simple gear box of just 1 forward gear

#

That will work albeit not very realistically

#

IF your torque and torque curves are also good. Lol, so many interacting things.

strange egret
#

is it tank or wheeled?

shy knot
#

tank

#

Well, IFV

nimble sequoia
#

Run the diagnostic.exe from dev branch with EPEVehicle toggled on

#

But my best guess at the moment is that your suspension is not set correctly, as you don't know what the length of your damper axis is

strange egret
#

tracked, i mean. Well if you have bad luck, your memory LOD setup is f-ed in such a way that a something is dragging on the ground, and all the torque in the world wont help that (i had that on one tank, and it nearly drove me insane).

nimble sequoia
#

(ref wheels going underground)

strange egret
#

when you press forward, does the suspension/chassis lean in such a way that it looks like it is breaking?

nimble sequoia
#

How many WEIGHT BEARING wheels did you confirm it had on each side? You might want to count again

shy knot
strange egret
#

even when at max speed? 16kph

shy knot
#

It leans back for like

#

2 seconds

#

Before leveling out

strange egret
#

ok thats normal inertia

nimble sequoia
#

lol

shy knot
nimble sequoia
#

Are they weight bearing?

#

No, not usually.

#

So weight is distributed between 12 wheels, not 16.

strange egret
#

wont affect speed though, just how springy suspension is

shy knot
#

I'll measure the points real quick

#

One sec

nimble sequoia
#

As X3 wants to take over, I'll leave you with him. He can explain the significance of the damper length

strange egret
urban basin
#

Idk what I'm doing wrong here

class C_Truck_02_covered_F;
class WCF_Vrana_Truck_Cargo : C_Truck_02_covered_F
{
    scope = 2;
    side = 2;
    displayName = "Vrana Truck Cargo";
    faction = "wcf_construction";
    editorSubcategory="wcf_EdSubcat_VranaConstructionVehicles";
    crew = "WCF_Vrana_Worker";
    typicalCargo[] = {"WCF_Vrana_Worker"};
    textureList[] = {"OrangeBlue",0.1,"OrangeOlive",1,"BlueBlue",0,"BlueOlive",0};
};
urban basin
#

Trying to add a vehicle to my custom faction and edit it a tad

shy knot
#

You’re missing scopeCurator

#

Also, does the side represent what side the faction is on

shy knot
urban basin
shy knot
strange egret
#

what do you mean? you can start the diag-exe just like normal arma 3 exe with mods via commandline parameter , or by using third party launchers (e.g. Arma 3 Sync) if you dont want to use commandline

urban basin
shy knot
shy knot
strange egret
#

i dont think you can start diag.exe via steam

urban basin
shy knot
urban basin
#

Alrighty

shy knot
strange egret
#

if you have installed dev branch, there is an additional .exe in Arma 3 folder. That needs to be launched to have access to the diagnostics commands

shy knot
#

Which I'm running. Though, my mod relies on OPTRE to have a faction to put itself in

#

But, even with my local mod in, it doesnt show up...

shy knot
strange egret
#

just like you would do it with all windows executables with parameters
create a shortcut from arma3diag_x64.exe, and edit the target field to include parameters

shy knot
strange egret
#

is it a workshop mod or manual install?

shy knot
#

Local mod

strange egret
#

post the target line from the shortcut

shy knot
#

"F:\SteamLibrary\steamapps\common\Arma 3\arma3diag_x64.exe" -mod=@OPTRE2

strange egret
#

hm doesnt look wrong, no idea whats wrong. I never put the parameters manually...
i only get problems / no parameters used when steam isnt running first, but i assume yours is

#

if it is a workshop mod, you need to use it with a path
-mod=G:\Steam\SteamApps\common\Arma 3\!Workshop\@CBA_A3

#

@shy knot does the optrep mod use unpacked data? if yes you need to enable -filePatching

glacial spear
#

iv recently tried to get the aircraft camera ground stabilizer to work in a helicopter but it only seems to be available for pilotcamera not turrets, is this a recent change or has it always been that way

urban basin
shy knot
urban basin
narrow swallow
queen viper
#

Please i need help

#

I want to disable the option to zoom in for players in my server.

#

How do i do that

hearty sandal
#

Zoom in where

queen viper
#

Like temporary zoom in

hearty sandal
#

When aiming?

queen viper
#

No

#

When not aiming

hearty sandal
#

Not sure if that's something you can disable

#

And very unlikely through configs

#

This channel is for addon making

queen viper
#

Oh sorry

hearty sandal
narrow swallow
#

Vehicle customization doesn't seem to work for me when trying to show/hide a selection that is a proxy model.
Is that known to be not possible or is there an example where it is done?

hardy crow
#

Been racking my brain about this all day, had it figured out, then started making a load of changes to configcpp without a back up saved version to refer back to.

How do i setup the cfgmovesbasic part for a new gesture in cfggesturesmale?

class CfgMovesBasic
{
    class ManActions
    {
        GestureAdvance= "GestureAdvance";
    };
    
        class Actions
        {
            class NoActions: ManActions
            {

ashen sluice
#

GestureAdvance_Furbzeyyy[] = {"GestureAdvance_Furbzeyyy", "Gesture"};

hardy crow
ashen sluice
#

nothing so far

hardy crow
#
class CfgMovesBasic
{
    class ManActions
    {  
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
    };

    class Actions
    {
            class NoActions : ManActions
        {
            GestureAdvance[] = { "GestureAdvance", "Gesture"};
        };
            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = { "GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = { "GestureAdvanceProne", "Gesture"};
    };
};

How does this look?

#

Gestureadvance plays the new GestureAdvanceProne animation, but not GestureAdvance for Stand/Crouch?

ashen sluice
#

you're missing a closing brace

#

if you fixed your indentation it would be easy to see

#

well... it is still easy to see but the indentation on the class names makes no sense

#
        {
            GestureAdvance[] = { "GestureAdvanceProne", "Gesture"};
    };

see here, you don't have a closing brace at the same level as the opening one

hardy crow
ashen sluice
#

binarise will fail

hardy crow
#

right

#

so

hardy crow
# ashen sluice binarise will fail

edited*

class CfgMovesBasic
{
    class ManActions
    {  
        GestureAdvance[] = {"GestureAdvance", "Gesture"};

        class Actions
        {
                class NoActions : ManActions
        {
                GestureAdvance[] = { "GestureAdvance", "Gesture"};
        };
                class RifleBaseStandActions;
                class RifleProneActions: RifleBaseStandActions
        {
                GestureAdvance[] = { "GestureAdvanceProne", "Gesture"};
        };
                class PistolStandActions;
                class PistolProneActions: PistolStandActions
        {
                GestureAdvance[] = { "GestureAdvanceProne", "Gesture"};
        };
        };
    };
};
ashen sluice
#

you were supposed to dedent the names, not the braces

hardy crow
#

dedent>

ashen sluice
#

it's the opposite of indenting

#
class Foo
{
  class Bar
  {// this lines up with the `class` preceding it
    class Baz
    {// and again
    };
  };
};
hardy crow
ashen sluice
#

what code editor are you using?

hardy crow
#

visual studio code >armaconfig

#

so

hardy crow
ashen sluice
#

you already fixed it didn't you

hardy crow
#

Amendment No. 3

class CfgMovesBasic
{
    class ManActions
    {  
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
        class Actions
        {
            class NoActions: ManActions
        {;
            GestureAdvance[] = { "GestureAdvance", "Gesture"};

            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
    };
};
ashen sluice
#

what is that semicolon doing there?

#

and you're missing another brace now

#

and the indentation still sucks

#

and Actions is inside ManActions

hardy crow
#

removed the semicolon

#

Amendment No. 4

class CfgMovesBasic
{
    class ManActions;
    
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
        class Actions
        {
            class NoActions: ManActions
        {
            GestureAdvance[] = { "GestureAdvance", "Gesture"};

            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };    
        };
    };
};
hardy crow
# ashen sluice and Actions is inside ManActions

Amendment No. 4

class CfgMovesBasic
{
    class ManActions;
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
        class Actions
        {
            class NoActions: ManActions
        {
            GestureAdvance[] = { "GestureAdvance", "Gesture"};

            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };    
    };
};
ashen sluice
#

okay, you're missing the body of ManActions and have a loose brace at the end

hardy crow
#

body?

ashen sluice
#
class ManActions
{
};
#

we call the area inside the braces the body

hardy crow
ashen sluice
#

no

hardy crow
ashen sluice
#

the body, still

#

class ManActions; see you have a semicolon after it

hardy crow
#

above Riflestandactions?

hardy crow
#

no semicolon

#

?

ashen sluice
#

oh you don't want to define a new action anymore?

#

you want to override GestureAdvance?

hardy crow
#

no dont want to override gesture advance

#

oh thats what that does

#

right

#

i see

hardy crow
# ashen sluice you want to override GestureAdvance?

Amendment No. 5

class CfgMovesBasic
{
    class ManActions
    {
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
    
        class Actions
        {
            class NoActions: ManActions
        {
            GestureAdvance[] = { "GestureAdvance", "Gesture"};

            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };    
    };
};
ashen sluice
#

we were here before

#

Actions is again inside ManActions, which it shouldn't be

#

it should be nested directly inside CfgMovesBasic

hardy crow
#

you just told me no semicolon at manactions????????

ashen sluice
#

that's right, but i didn't tell you to nest Actions inside it

hardy crow
#

right

#

ah

#

actions aligned with manactions, gotcha

ashen sluice
#

yeah, and fix the indentation

hardy crow
#

pretty sure this was it

ashen sluice
#

go to your vscode settings and enable indent guides and whitespace rendering

hardy crow
#

quesht

ashen sluice
#

make it look like this. maybe then you can figure out how to indent correctly

ashen sluice
#

File > Preferences > Settings

#

then search for "indent guide" and check "Editor > Guides: Indentation"

#

then search for "render whitespace" and on "Editor: Render Whitespace" select "boundary"

hardy crow
#

indent guide was on hover before only

#

sweet

#

that will make this errors less common

#

what are you using to make parts of your code be white?

ashen sluice
#

that was just C++ higlighting

hardy crow
# ashen sluice that was just C++ higlighting

Amendment No. 6, With Questions;

  1. Effects of this? https://imgur.com/qe0YzDU
  2. Effects of this? https://imgur.com/fhwoWUU
  3. Is there ever a time this happens? https://imgur.com/rNYoj8q
  4. NoActions: Manactions - Why? what is the significance of each? Here, my brain is like 🤯 got me bamboozled for the longest time
class CfgMovesBasic
{
    class ManActions
    {
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
    };

    class Actions
    {
        class NoActions: ManActions
        {
            GestureAdvance[] = { "GestureAdvance", "Gesture"};
        };

            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };

                class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };    
    };
};
#

Also, my anim still only plays off prone stance ("GestureAdvance") and not in stand/crouch, although new filepath and anim overrides default filepath and anim 😕

ashen sluice
#
  1. whitespace has no effect on the game, only on readability

  2. that loose indent guide is there because your indentation is still messed up

  3. if you mean the lined up braces, there shouldn't be

  4. ManActions declares the full set of actions
    NoActions is the base class of all action maps, and ManActions is the base of NoActions

hardy crow
ashen sluice
#

yes

#

NoActions : ManActions means that ManActions is the base class of NoActions, and NoActions inherits all fields of ManActions

#

this is to allow specifying defaults in ManActions. it also makes that GestureAdvance[] ... in NoActions pointless

hardy crow
ashen sluice
#

need more information

hardy crow
ashen sluice
#

no, about the problem

#

you can get rid of NoActions entirely

hardy crow
#

righ

#

ohhh

#

so manactions is mentioned twice?

ashen sluice
#

how do you mean?

hardy crow
# ashen sluice how do you mean?
class CfgMovesBasic
{
    class ManActions
    {
        GestureAdvance[] = {"GestureAdvance", "Gesture"};
    };
    class Actions
    {
        class ManActions
        {
            class RifleBaseStandActions;
            class RifleProneActions: RifleBaseStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };
            class PistolStandActions;
            class PistolProneActions: PistolStandActions
        {
            GestureAdvance[] = {"GestureAdvanceProne", "Gesture"};
        };    
    };
};
ashen sluice
#

seriously fix the indentation and you'll see the problem