#dev_rc_branch

1 messages Β· Page 12 of 1

reef bobcat
#

Has the official side provided any method to pass data from JS to SQF, or is it still under development?

#

This should work.

slate tide
#

There is no need to use DLLs. Data can be sent from JS to SQF and from SQF to JS. It seems that a sqf file can be called using the Arma 3 JS API if necessary. Furthermore, the use of DLLs is not necessary.

#

Read the documentation; it explains the possible relationships.

#

By the way, where did you get the information about the DLLs?

reef bobcat
full sonnet
#

True. Might be cooler if it could be embedded into missions, without mod.
But thats so annoying to do as a developer

#

You can display basically one HTML page.
You have no other internet access, its running in a isolated very restricted sandbox.
You can design the page however you want, and can run (basically) any javascript to make it interactive. And communicate with SQF which lets you load files from a PBO.

So everything you can put into one html page, or put into a PBO. You can do.

Just no external internet access. No microphone/camera stuff. No browser local storage. And some other restrictions to make it "safe"

full sonnet
reef bobcat
slate tide
full sonnet
#

External websites/internet access are disabled.
The feature exists and works, but we disabled it for security.

full sonnet
# reef bobcat The JavaScript API shows how to load game images in JavaScript, but how can data...

SQF can ExecJS to execute javascript in the browser. You can pass any data along you want.
Javascript can run an "alert", which lets it send any string to SQF. You can pass any data you want (There is some size restriction)

Both of those methods are also how you can load game textures.
An alert sends a request to the game. The game sends base64 encoded string version of the image back by executing javascript.

full sonnet
slate tide
#

x')

#

i found it

#

i'm stupid x')

slate tide
reef bobcat
full sonnet
full sonnet
reef bobcat
solid crown
#

Just curious in general: What's the reason behind the JS alert being used as the "channel" to return data to the game/SQF?

tepid dock
feral tangle
#

Did I hallucinate that there is a map = helipad named property? πŸ€” πŸ˜΅β€πŸ’«

grim lion
near carbon
#

My upcoming game mode uses @grim lion JS Stuff + some my own

#

Our Capture UI for OBJs uses it, so much better

#

Love the js stuff

grim lion
#

Just released the os on the workshop

full sonnet
#

Dear dev diary, today I wrote bad code. But its fine, I left a note coolfrog
Just don't have hundreds of aircraft in MP I guess blobdoggoshruggoogly

verbal venture
#

You should make a video, like people did with the cs and tf2 source code when they leaked.
"The sanity of BI developers"

unreal lava
#

Only makes me wanna try having hundreds of aircraft in MP now thonk

gray quarry
#

arma code comments without context

#

few rounds, preferably long form videos, 10 min for the milking xd

#

might be too embarrassing

teal elk
#

Hi guys, anyone have by chance the proyect that some did in the past of an local, offline wiki ?

#

i have a discord bot that access to the biki, but with the cloudflare thingy...

viscid onyx
teal elk
#

someone tried to do a MCP with the wiki? hmmyes

late harbor
teal elk
#

and when i say "i tryed" was actually claude-code

full sonnet
#

Note while Windows 7 support was already canned. Windows 8 and 8.1 support is also coming up.
We already bumped the min requirement to windows 10, but so far only definitively dropped windows 7.

Not in 2.22 yet, but Microsoft removed windows 8.1 support from their latest compiler, which we will likely upgrade towards later this year.
So if you're running Windows 8.1 still (We all know no-one would be running windows 7 anymore 🀣 ), consider preparing for an upgrade.

This ALSO includes dropping Windows Server 2008 and 2012.

Someone could write a wrapper that backports new API to older OS, and if that is present the game would still run.
Such a project probably already exists somewhere on GitHub. But it'll be too much effort πŸ˜„

unreal arrow
#

Considering RAM prices are about to skyrocket, old PCs are there to stay

unreal arrow
#

Not fluent in CSAT but I think he says &@&#%!!&Β£&& GRENADE!

gray quarry
#

with or without battleye tho?

full sonnet
#

I don't know what that is

tall pumice
#

i just remembered.. does anyone else have broken mod logos on dev-branch or is it just me?

#

my ws and rf files both dont show the icons in virtual arsenal on some items, also the icon change when hovering over it (to the colored variant) doesn't seem to be working

#

example:

#

the icon works on the bandana since it's using a vanilla model file, i guess

#

the ws mask uses our own model file, which isn't detected as part of the addon

#

and if i move the mouse onto the white box in the bottom right, a popup with "any" something something image can't be found shows up

gray quarry
tall pumice
#

ok, for the fun of it i just reverted to profiling branch and there the mod logos are all showing up correctly.. so whatever is going on, it's a dev-branch only issue i guess

waxen knot
tall pumice
#

however, the icon change on mouse-over doesnt work on profiling either

#

hm ok, i see. the mouse-over icon change works if i actually load the official dlc files via the launcher (dlc menu). if i load it as a regular mod from local files, the mouse-over doesn't work

full sonnet
full sonnet
tall pumice
#

and it works in the main menu, that small mod list

full sonnet
#

Well its script that pulls the info of the item. Its just failing on it but what exactly is afiling

tall pumice
#

ok, i reverted to dev-branch again and used the dlc menu to enable ws and rf. there it works fine as well.

#

however -- if i use the workshop mod (compatibility data), the icons are also broken

ebon quail
tall pumice
#

tl;dr - the issue seems to be with mod handling, not the official launcher cdlc handling

#

the mod.cpp files are identical. the mod config entry is the same as well of course

#

mod file has a meta.cpp that is auto-generated by steam i believe. other than that, the only difference is the folder name

#

i'm 100% sure this is a new issue, though. i never noticed it in the past

#

actually, yeah. if profiling has no data changes, but it works there (mostly, except the mouse-over), but on dev-branch it is broken, then there must have been some script changes that are causing it now.

ebon quail
#

cdlc depots have the same manifests atleast on dev/prof so thonk

full sonnet
#

The DLC menu in launcher also only sets -mod parameter.
meta.cpp is only used in 4 places.
Crash reporting, server modlist, getLoadedModsInfo script command the workshop itemID.

So I don't think that should matter.
And the rest of the data is the same.
Only leaves the folder name?

#

Ah found it

#

There was a arsenal change in november.

[internal] Changed logic of detecting mod, which it belongs - for DLC assets there is now another, special check which utilizes getAssetDLCInfo. If model belongs to DLC, then it will be marked as so - even if i.e. class was defined in another mod.

#

BIS_fnc_getDLC was added. Parameter is the items config class.
That is probably failing now and returning empty string

#

I don't have time to look deeper. But testing through what that function does should find the problem

tall pumice
#

at least that seems fine

#

ok, without looking at the arsenal code, i'm pretty sure it's using "ws" as path, because that's also the addon folder name

#

and since compat data, etc. doesn't have that folder name, it's failing in arsenal to fetch the correct data

#

or maybe not. looking at the script right now it doesn't seem like it. _dlc = _itemCfg call bis_fnc_getDLC; and then a bit further down _ctrlDLC ctrlseteventhandler [ "buttonclick", format ["uiNamespace setvariable ['RscDisplayDLCPreview_dlc','%1']; ctrlparent (_this select 0) createDisplay 'RscDisplayDLCPreview';",_dlc] ];

#

ok, there's more code. also a macro. but that's where it stops for me. i'm not a good enough programmer to investigate this πŸ˜„

full sonnet
#

The old getDLC code was this

    {
        private _dlc = "";
        private _addons = configsourceaddonlist _this;
        if (count _addons > 0) then {
            private _mods = configsourcemodlist (configfile >> "CfgPatches" >> _addons select 0);
            if (count _mods > 0) then {
                _dlc = _mods select 0;
            };
        };
        _dlc
    }
#

Parameter is also config, I'd assume that also returned "ws"

#

The icon then comes from
modParams [_dlcName,["logo"]]

so modParams ["ws",["logo"]] ? That work for both variants?
But that part of the code hasn't changed in quite a while

full sonnet
#

You have a 32-bit operating system and you can't run the 64-bit version of the game.
just found this, lol

full sonnet
#

Finally we have space

verbal venture
#

diag option πŸ‘€

full sonnet
#

oh right, I forgot that

verbal venture
#

no more renaming files when I want to render an ocap map? pauseChamp

gray quarry
#

why is server listed if it's not necessary since -server exists?

full sonnet
#

Because headless client

#

or does -client work on client binary?
But you also want the no steam, and no battleye, and stuff

gray quarry
#

headless client also can be launched with game exe passing -client to it

full sonnet
#

The answer is, because

gray quarry
full sonnet
#

launching multiple instances bla bla

gray quarry
#

game exe can be used for that no problem

#

launcher properly handles -server by not launching the battleye launcher when be is enabled

#

also on the topic of launcher changes, can we remove the screen that blocks the user from accessing the mod list and do operations within it?

#

and how about a way to copy the full launch arguments? so one doesn't need to launch at least once to grab it from the rpt

gray quarry
verbal venture
#

because not every server has the same setup?
for me, I would need to prepend "mods/" before every entry
and someone uses full names as seen on workshop, someone uses IDs
There's just too much variety to get something useful

gray quarry
tall pumice
#

funny bug with glasses transparency. left side is correct, right side is bug. it works on most vanilla uniforms, but not all of them. it's mostly broken on contact and laws of war clothes. also noticed this in pretty much all of our new ws and rf uniforms, so i started to do some digging. for some reason, i can fix the issue on one of our new uniforms if i am adding a "nvg" proxy to lod0. however, if i am trying to fix our djellaba clothes with the same thing, it does not work. even if i straight up copy&paste all proxies over, it does not work. also curious.. why nvg proxy? is this thing even used? half the uniforms don't have that, they use the hmd proxy.

#

basically all facewear with transparency is affected

#

truth told, it might as well the right side that is correct, and the left is the bugged one. no clue what the wanted effect was. i'm just guessing left side is the correct one because that's how the combat goggles etc. are looking on generic nato uniforms... the default setup, kinda

feral tangle
#

I swear everytime I look in here, Lex is breaking something. πŸ™„

tall pumice
#

i'm mostly just posting here when finding bugs :p

#

back in the days i would post on the forum, but those days are long gone

#

also funny, some old uniforms have a "radio" and "backpack2" proxy. maybe radio item was supposed to be visible on the uniform at some point?

#

now i fixed it on another uniform with replacing all proxies.... does alpha sorting apply to them?

full sonnet
#

Won't fix

tall pumice
#

well, i will fix it in my stuff if i can, that's good enough for me. just figured i point it out

#

what's weird is, it doesn't appear to be a rendering issue. at least not of the kind we know from the game. it just seems the transparency is stronger in one model than in the other

tall pumice
#

this is the proxy setup, if anyone wants to test it. fixed all of my uniforms with it now. lots of seemingly useless crap in there, but that's what's in the vanilla uniforms where it works

#

i just had a funny thought. what if transparency itself is not "broken" but because of duplicated(?) proxies, the model gets rendered multiple times, and thus the transparency appears darker πŸ˜„

#

i have no idea, just making shit up. this issue is really weird. but it's noticeable that this only seems to pop up on more recent (dlc) uniforms, where someone apparently cleaned up the proxy list.

unreal lava
tall pumice
#

yeah, probably. i dunno. it's just odd that it is clearly proxy related

full sonnet
#

Mh actually, yeah why do mods not show that they have extensions up there.
Well now they do 🀷

gray quarry
#

great addition about time :3

unreal arrow
unreal arrow
#

These are the options: ```
uavControl [uav, "driver"]
uavControl [uav, "gunner"]
uavControl [uav, "crew"]
uavControl [uav, "all"]
uavControl [uav, "allbutcrew"]
uavControl [uav, "allbutdead"]

full sonnet
#

Found a probably decade old bug in publisher πŸ˜„
When you have extensions. But only one version 64 or 32, and not the other.
Its supposed to tell you that you're missing the other variant.

But there is a typo in the code.
The 32bit warning only shows, if you have 32bit extensions in the mod.
But the warning is to tell you its missing, so, you don't have. So the warning never shows 😒

Oh well, too late to fix now XD Though I guess I am fixing it, atleast the 64-bit missing warning

pallid cliff
#

Add a warning if there is only a 32 bit extension😁

ebon quail
#

error*

full sonnet
#

Yeah exactly. That was already there, it just never worked. So I'll just fix that one. And remove the "you're missing 32-bit" one

#

Probably no-one has ever seen these error's here.
The only others were if the DLL is corrupted

#

Probably also that

#

Also the tooltips take like half a second of hovering before they show up. By that time I've already given up and accepted that there isn't any tooltip
Launcher was doing the same, so annoying

pallid cliff
#

I hate it when tooltips have a delay

full sonnet
#

I found unfinished content πŸ˜„
There is a size display, telling you how large your "new" version is, compared to the version that is currently on the workshop.

verbal venture
#

(also fix the freeze when uploading large mod, thx)

full sonnet
#

Also these are a thing πŸ˜„

full sonnet
verbal venture
#

it froze for me almost every time I uploaded something sadCat

full sonnet
#

This looks better to me.
This all used to be there once, but was removed when 64-bit support was added and I cannot find a reason why

You now know how old your mod is and when the last update was. And a nice plausibility check on the size difference.
It also used to list the name of the Author of the mod, but I'd think you'd know your own....
Oh.. Unless you are only a contributor and the author is someone else πŸ€” But we already have the Contributor banner at the top for that

digital vessel
#

if you are looking at it, I've had problems with publisher and what I assume is a too long file path
(I have long file path registry-enabled but it had no effect, it may be something you have to also enable inside the app)

grave python
#

It freezes at the end of the first upload of this mod, But it won't when updating

pallid cliff
#

Iirc it happens with every mod that gets uploaded for the first time. I can test that later when I am at home.

full sonnet
pallid cliff
#

What am I looking at?

full sonnet
#

I added an X button

pallid cliff
#

So you can manage mods with game running and then just start it again?

full sonnet
#

Yes. I tried to find the person who requested that above but I can't find it

lucid totem
#

maybe nobody did and it was all in your head

full sonnet
#

Can run multiple instances now.
Can launch server, then switch to client binary and start matching client with same parameters

dark hemlock
#

yaaaaay

#

ty dedmen, launching test servers was a pain in the ass before

pallid cliff
#

I ditched the launcher and start my sessions with hemtt instead, for exactly that limitation. Great is gone now.

gray quarry
gray quarry
#

you always could launch different mod presets from the arrow in play button

#

but you cant adjust mod lists themselves when the client is running

weary niche
#

Was doing some testing today and found that the newer "WeaponChanged" eventHandler doesn't fire for the Throw weapon or on any of the Throw muzzles. I'm trying to get an event for when the grenade is swapped and am not sure if this is a bug. Reloaded and Fired muzzle events do work on at least the Throw muzzles.

unreal arrow
subtle pollen
#

can someone please help me with my server

halcyon moth
#

This is almost certainly the wrong channel.

grave python
compact salmon
#

Has anybody actually managed to make the server browser succesfully recognize and match up server mods to subscribed steam workshop mods?

harsh orbit
#

Here's the lips issue. I'm sure they weren't this bad before. (in the video it doesn't look as bad as the game at 120+ FPS)

full sonnet
#

Yeah the low fps animations issue, isn't new

harsh orbit
#

I had seen it before too but this is the first time I saw it in this mission with 100% repro rate πŸ˜…

viscid onyx
#

I wonder if maybe the mission attaches them to something for some purpose and the sim rate isn't being updated correctly

harsh orbit
#

actually that does make sense

harsh orbit
# harsh orbit Here's the lips issue. I'm sure they weren't this bad before. (in the video it d...

yeah I'm not crazy. it's definitely much worse πŸ˜…
https://youtu.be/QRcDf3-SdHA?si=lt6-JERRC9Z0PnT_&t=217

γ€ˆ4K〉ArmA 3 Prologue: FULL GAME Campaign Walkthrough - No Commentary GamePlay

Timecodes:
0:00 - Intro
0:05 - Reality Check
03:32 - Common Denominator
09:02 - Diplomatic Relations
18:01 - Rising Tensions
25:28 - Damage Control

4k60fps full game walkthrough mission 1-5 ArmA 3 2023 PC, PS5, Xbox series X, RTX 3090

Thank you for watching!
Ple...

β–Ά Play video
#

also that AAF soldier's animation used to be fine think_turtle

I wonder if it's related to the new multithreading simulation?

unreal lava
#

can confirm at least for the attachment theory - when i was making wrappers for animation sequencing i was attaching units to static invisible objects and that was happening - simulation interval does seem to matter (ergo just ended up attaching them to Game_Logic instead)

viscid onyx
unreal lava
#

ah

viscid onyx
carmine juniper
trim carbon
# harsh orbit animations issue

I remember long ago I found that certain animations would end up like that when I used BIS_fnc_ambientAnim. I think that might be one of them since my notes specifically mention "standing armed" animations having the problem.

Even after stripping the code down to just starting the animation and nothing else, I would eventually end up with units doing that. Though I could never get a 100% repro and it only seemed to happen when there were a large number of units being animated.

Attaching units to a game logic did stop it, however. rotatingparrot

verbal venture
#

diag_exportTerrainSVG doesn't escape & (and possibly others) correctly, is that something that will get no attention, if I make a FT ticket, or something that would be worth fixing?

full sonnet
verbal venture
full sonnet
#

I mean the path to it in the svg.
I don't want to download a terrain and export it

verbal venture
#

I'll send it all to you in DM with files

peak musk
# full sonnet I mean the path to it in the svg. I don't want to download a terrain and export ...

If you poke around in this part of the code base could you also remove the semicolon in the style-tag between polyline and ellipse:
Current:

<style type="text/css"><![CDATA[ polyline{ fill: none; }; ellipse{ stroke:url(#colorForest); fill: none; stroke-width: 4; } ]]></style>

Correct:

<style type="text/css"><![CDATA[ polyline{ fill: none; } ellipse{ stroke:url(#colorForest); fill: none; stroke-width: 4; } ]]></style>

It seems like a lot of parsers don't like the additional semicolon and render the trees as black circles (tested with Firefox and GIMP)

feral tangle
#

Huh, did I miss a memo about dev branch changelog going onto the wiki?

#

Maybe I am just blind.

arctic fern
feral tangle
#

So yes. I am blind. πŸ˜„

#

I tend to automatically be drawn the the "Engine" header.

arctic fern
#

Well, it was only posted to the wiki (the full content of the change log)

waxen knot
#

Fixed: Units in combat were reporting smoke throws when chemlights were thrown
Too bad there's no SentThrowingChemlight command in the RadioProtocolX classes, and no ThrowingChemlightE_1[] words so they're completely silent even in combat.
But it's still nice to see this fixed after 13 years. blobcloseenjoy

unreal arrow
ebon quail
teal snow
#

Damn, can the ppeffect blur in flir not be fixed?

teal snow
#

forgive me if this is written somewhere, but what actions does this command accept

full sonnet
#

Don't remember if I had a repro?

full sonnet
full sonnet
#

Blur is fix

lucid totem
#

fixed*, I hope πŸ˜„

#

"bad quality image"
"use blur"
:U

signal edge
full sonnet
#

Could they fix the missing objeccts in the terrain?

signal edge
#

it isn't just that terrain, i see it in arsenal when the object doesn't exist (.p3d) or when placed by other mods that have no p3d for whatever reason

#

i can ask them too but it is rampant in dev version right now

full sonnet
#

It is intentional because broken/missing objects cause issues

signal edge
#

gotcha...maybe something more placeholder-y?

feral tangle
#

A big man sized question mark.

tall pumice
#

miller head

lucid totem
#

Miller T-posing, always turned towards the player – whatever the locality

tall verge
#

The gold standard

digital vessel
carmine juniper
full sonnet
gray quarry
carmine juniper
#

No, live on Dev (at least I've tested there)

gray quarry
#

ah good

#

when itll come to live i wonder

unreal arrow
digital vessel
dusk hinge
#

Looked back in this channel after forever and saw this πŸ‘€ cant find and further info but this message and the change log of it being added in dev branch 2.21 any the wiki link from the change log goes to no where currently haha.

What actions and commands will this give us access to for pylons?

(https://community.bistudio.com/wiki/pylonAction)

Also the reason I came back to check this channel was I wanted to say you and any other devs still working to improve A3 and give us modders more commands or syntax's to work with are awesome!

I keep encountering so many new things that make life so much easier, going great ill use that only to see "since 2.22" hahaha Any idea how close it is to being ready?

full sonnet
#

What actions and commands will this give us access to for pylons?
The question is rather, what do you want it to do

#

currently its not much, and especially nothing at all for weapons pylons.
Open to ideas

carmine juniper
#

Targeting pod with laser designator (AFAIK Ded ever teased one)
Working fuel pod
External missile bay (Stealthy one)
What else? A soldier transport pod for Harrier? 🀣

tall pumice
#

i think you can already script working fuel pod. you need to check if the pylon is there and then you can change the fuel consumption rate of the vehicle

#

ok, question is where to call that script. you'd need PylonChanged EH and probably something in init

carmine juniper
#

Was about to say. We can't know it without EachFrame it

tall pumice
#

EH on object creation, check if it's vehicle / helicopter / plane, if yes, check if it has pylons, if yes, check if it has fuel pod :p

#

dont think you have to eachframe it

carmine juniper
#

Well, you can change pylon on the fly (no pun intended)

tall pumice
#

that's where the PylonChanged EH comes in

viscid onyx
carmine juniper
#

Oh that's what you mean. I meant we have to EachFrame it for now to achieve it

viscid onyx
full sonnet
full sonnet
teal snow
#

I’m trying to build a scripted weapon control system that allows either seat to take ownership of a group of weapons and fire it, even if not local to them, and it needs to work in mp

#

There are a lot of jank ways I’m trying to achieve this, there are some script firing, but it’s weird in mp, also tried swapping pylon ownership

full sonnet
hexed canyon
full sonnet
#

Oh that was a bad copy paste πŸ˜„

winter crescent
teal snow
#

What are the odds of the Cfg "sensorPosition" being fixed
it was originaly introduced to allow a sensor origin that was not the eye pos however seems to not function

full sonnet
#

need more detail of what you mean

#

on aircraft/vehicle sensors?
When does the position ever matter?

teal snow
#

So as part of the apache mod, the radar sits above the rotor disk, allowing you to peak the radar over the horizon>
battle field radars that extend up verticly to clear obstacles, Sam sites that do the same.
vehicles with telescopic cameras

#

however because its on eye pos, you need to peak the whole airframe

full sonnet
#

I'll take a look tomorrow

mossy cloak
#

Just testing the dev branch on our life server to make sure nothing breaks, and I've noticed that one of the initial remoteExec's isn't actually running the function it should.

As client on join from init.sqf, it runs a remoteExec to server_fnc_queryRequest. This file grabs server/database data and remoteExec's to client_fnc_requestReceived with remoteExecutedOwner.
This works fine on profiling and stable branches, and returns to client properly.

On the dev branch the client_fnc_requestReceived never runs.
I verified the server properly sees the remoteExecutedOwner, and have verified the remoteExec to client_fnc_requestReceived returns an empty string, implying that it successfully sent it.
I have attempted to replicate the issue, however even with the exact same params, with multiple remoteExec's back and forth, I cannot replicate the issue.

I'm at a bit of a loss as to how to figure out whats going on, hopefully someone may have some insight.
Code in server_fnc_queryRequest that remoteExecs to client.

//Works, runs the function properly
_check1 = [
    _hexIcon // "autohover"
];
_check1 remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

//Works, runs the function properly
_check1 = [
    "" // manually defining ""
];
_check1 remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

//Does not work, function never runs
_check1 = [
    _title // "" - manually defining "" works,
];
_check1 remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];
halcyon moth
#

So what exactly is _title?

#

Are you sure it's not text rather than string?

mossy cloak
#

It is 100 a string. Params as a string with only allowed types as a string
["_title","",[""]],

mossy cloak
#

It seems directly correlated with empty strings returned from a database call

halcyon moth
#

Run toArray on it.

full sonnet
#

There was a bug with empty strings that I recently introduced.
But I found it and fixed it last week

#

But I don't get what the difference would be between a variagble containing an empty string, and an empty string.
the code doesn't know where the string came from, it doesn't know the difference, so why would it make a difference πŸ€”

full sonnet
# full sonnet I'll take a look tomorrow

ah there is only one sensor position per vehicle.
But I don't knopw whats supposed to not be working about it.
The config entry is being read, and its being used (if config isn't there, it uses eyePos as you said)

I can see it being read correctly for Transport vehicles.

#

But "new" sensors added via SensorManagerComponent, don't support setting a position. They just always use the center of the object.
It might be desirable to make that configurable

mossy cloak
# halcyon moth Run `toArray` on it.

toArray returns an empty array for both the variable, and the empty string.
If I change the variable ex. _title = _title + "", even though its the same value, it works. I'm really shocked as to what is going on

mossy cloak
lucid totem
#

I would have preferred to see a "TEXT" at one point πŸ₯²

mossy cloak
#

You and me both. The code that is being run hasn't changed for years, and seems to only break with dev branch x_x

#

Interestingly enough, the function WILL run if I call it instead of remoteExec'ing.

lucid totem
#

#blameDedmen

full sonnet
#

But I don't see why that would make a difference

mossy cloak
#

Your guess is better than mine blobdoggoshruggoogly

teal snow
full sonnet
#
_title = "";
[_title] remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

vs

[""] remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

?

#

Cannot reproduce?

TheFunction = {diag_log [diag_frameNo, _this];};

_title = ("" select [5]);
[_title] remoteExec ["TheFunction"];

This does not reproduce either

#

Maybe its only broken on dev-branch but already fixed internally. But the fix was quite a while ago πŸ€”

#

I'm pretty sure the difference should be

//Works, runs the function properly
_check1 = [
    ""
];
_check1 remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

//Does not work, function never runs
_check1 = [
    ("" select [5])
];
_check1 remoteExec ["client_fnc_requestReceived", remoteExecutedOwner];

That's the only thing I can think of.

lucid totem
#

after NaN, NaS (Not a String) πŸ˜„

full sonnet
#

Checked the same again on dev branch, no difference. Its working fine for me

#

Maybe your server/client versions do not match?
Previous dev branch version is not compatible with current version.

#

This empty string thing, was broken between 10-24th february.
So last dev-branch, before wednesday, was broken. But the current one isn't anymore

mossy cloak
#

Ill take another look when I'm home, however I can confirm I was on the latest dev branch. If I attempt to remoteExec to myself (myself being server), the same issue arises. That rules out a version mismatch. Attempting to remoteExec a different client has the same result

#

If i can find a way to downgrade my dev build to find when the issue started, it might help. I haven't tested a dev build before this one

raven mist
#

Haven't really said anything on it as I really haven't tested it outside of "my local no worky". But anyway FWIW:

  • I swapped from perf to dev the same day this #dev_rc_branch message was posted at 1:26PM EST and that's when I noticed issues on our staging.
  • Keeping staging, I swapped back to perf and that resolved the issue.
  • Both times I was testing where client was server, although I do believe I remember Fraali saying he had same results with a dedi and client.
#

The database queries being performed were done with our database addon and not ExtDB3; although we haven't touched it for at least a year; outside of updating Intercept which was done roughly 6 months ago.

raven mist
#

Uhhh okay interesting...

I swapped my branch back to dev branch and am now noticing zero issues. The only thing I changed was that I updated the title entry in our database which corresponded with my player:

UPDATE my_table SET my_title=NULL WHERE my_id='76561198071959741';

Even upon swapping it back to it's prior result:

UPDATE my_table SET my_title='Ghille Warrior' WHERE my_id='76561198071959741';

It appears I am no longer experiencing any issues...

Which is really bizarre, as I believe my branch should've been the latest per the changelog message linked in my previous message and I switched my branch via Steam.

@mossy cloak you were doing a lot more testing last night, if you're able to just vibe check I am not trolling with my assessment here; would be appreciated.

#

Gonna feel really, really bad if we are trolling you guys and both our branches were out of date somehow. πŸ₯Ή

#

-# Also just to toss out for you Fraali, I am still on a62222c

full sonnet
#

Could maybe look at old RPT's

#

and check the build number there

raven mist
#

Good thinking- here appears to be the build I was running then

Exe timestamp: 2026/03/04 01:01:27
Current time:  2026/03/04 13:26:35

Type: Public
Build: Development
Version: 2.21.153584
mossy cloak
#

Doing a bit more testing.
I would assume that that the issue stems from how empty strings are handled within the dev branch has changed, and that the addon we have based on intercept is having some type of issue with how the data is accessed natively?
Database query SELECT '' is being run, and returns properly. Any remoteExec(/Call) that attempts to pass this value provided silently fails, although every other command seems to work just fine like call, spawn etc. the value seems to behave identical to normal strings, so I wonder if maybe due to a recent optimization of how empty strings are stored not matching up properly? Just theories, I don't deal with C/C++ very often.
If there is any way I can potentially scrape memory values/create dumps for this, I (probably) have the ability to do so.
ProductVersion - ["Arma 3","Arma3",221,153584,"Development",true,"Windows","x64","development"]
Image of issue/results.
https://i.imgur.com/uYbBCSO.png
Code Run for testing


o_localTest = nil;
o_localChecking = nil;
o_remoteExecTest1 = nil;
o_remoteExecTest2 = nil;

[]spawn{
    _query = "SELECT ''";    
    _check = [_query, 2] call OES_fnc_asyncCall;    

    o_localTest = _check select 0; 
    o_localChecking = [
        o_localTest isEqualTo "", 
        toArray o_localTest, 
        typeName o_localTest, 
        str o_localTest,
        count o_localTest
    ]; 
    [o_localTest,{    
        o_remoteExecTest1 = _this;    // Will not show if the issue arises
    }] remoteExec ["call",2]; 

    ["",{    
        o_remoteExecTest2 = _this;    // Will always show
    }] remoteExec ["call",2]; 
};
full sonnet
#

I don't know how to reproduce that though

#

I know of two possible variants of empty strings, and I tested both

full sonnet
full sonnet
#

Actually also works on normal binary, you can just create the dump via task manager

mossy cloak
#

Anything you want me to change in the code I have to make it easier to find?

full sonnet
#

no

#

Well

#

you could put it also in a local variable

#

and add a while true sleep loop at the end

#

Then I can just look at the local vars in the spawned script, instead of sifting through mission namespace

mossy cloak
#

Dump created and sent to your DMs with updated code used

dusk hinge
# full sonnet > What actions and commands will this give us access to for pylons? The question...

TBH I dident have any suggestion, I was moe curious what the plan for it was, but reviewing the wiki updates those are some very nice changes! Love the custom EHs for adding and removing them. I made a EW system I havent pushed out yet, I will defiantly use this for that. I'm manually managing this with the pylonsChanged EH currently.

Not related to pylons but for aircraft still, me and Peral would love the stealth config properties to me changable in the run time. We have quite a lot of stealth aircraft which I made a simple system to enable and disable external pylons but we cant change the stealth characteristics of them. (Im aware this is why the black wasp has two varients)

radarTarget    = 1;
radarTargetSize = 0.35;
visualTarget = 1;
visualTargetSize = 0.7;
irTarget = 1;
irTargetSize = 0.75;
full sonnet
# mossy cloak Dump created and sent to your DMs with updated code used

Well turns out, there are 3 possible types of strings.

An empty string with a buffer but no content (It used to have content, but was modified in-place and cut down)
An empty string with no buffer (that's what all empty strings are supposed to be)
An empty string with a buffer of size 1, which only contains a null terminator. (The game itself never creates something like this)

full sonnet
# dusk hinge TBH I dident have any suggestion, I was moe curious what the plan for it was, bu...

Oh right, yes someone asked to increase the target sizes based on pylons. I forgot about that.

Mh implementing that is quite annoying and hurts performance (probably not enough to matter, but enough for me to not like it)
Does it really make that much of a difference?

Is it enough to change it by adding a pylon.
Something like "Attaching this pylon increases the size by N"
Or do you need it fully changeable by just script. Just script is probably actually even easier to do.. but still annoying and the performance hit thing

viscid onyx
#

Scripting control over target size would be really helpful for anything that wants to do electronic warfare/countermeasures/advanced radar stuff

#

Top-of-the-head examples: an ECM pylon that can decrease your radar target size; a scripted system that increases IR target size when firing a laser; vehicles with mode switches between exposed/stealthy configurations

#

*That last one could even be applied to existing stealth aircraft, by increasing radar size when the internal bays are open

slender axle
floral arrow
#

Hey guys. RC is resetting my profile. I know it might not happen to all players, but it's still a problem. Happened on DEV as well, but the problem disappeared, but now it came back on RC. Any idea how is this happening and what steps can I do to avoid this? Basically every time I run the game, settings are reset. Ticket: http://feedback.arma3.com/view.php?id=27514 (dev branch, but the problem is the same on RC)

#

And sometimes now I cannot get trough the "Best place is to start at Bootcamp", if I click no, it changes the Intel part of the main menu, if I click yes it's either crashes or opens up the bootcamp mission selection with an error message.

formal dome
#

Can anyone tell me what the Steam app_update number is for the RC branch. Thx

tulip bane
#

it's an interesting thing that few people seem to report every now and then

formal dome
#

I tried app_update 107410 -beta rc validate but I'm still getting 1.54

formal dome
#

Tried: app_update 107410 -beta rc -betapassword Arma3Update157RC validate
and app_update 107410 -beta development -betapassword Arma3Update157RC validate
and app_update 107410 -beta rc validate
none seem to get 1.57.134516

tulip bane
#

isn't it 156 and not 157?

formal dome
#

does it have a password even?

tulip bane
#

yes

formal dome
#

just trying app_update 107410 -beta development validate

#

hmm

#

will try

tulip bane
#

app_update 107410 -beta rc -betapassword Arma3Update156RC should be right is I've understood

formal dome
#

rgr trying that

formal dome
#

no did not work. I got 1.56.0.134536 I should have got 1.57.0.134.516

#

app_update 107410 -beta rc -betapassword Arma3Update157RC does not work either

#

Got it

#

app_update 107410 -beta development validate

#

is correct

dusk hinge
# full sonnet Oh right, yes someone asked to increase the target sizes based on pylons. I forg...

How are you implementing it? (Im curious :D)

TBH idk if its something that would make a huge difference but for stealth aircraft with "beast" modes, like the F35 it would be nice. I work with peral on his aircraft and we have two F35s I've setup to have a button setup to enable or disable exterior pylons so for my purpose I would only need a scripting command to change the values.

I think it is going to make negligible difference per weapon on a pylon, but have or not having multiple external pylons would make some difference.

How I assumed it would work is instead of a value being pulled from config those values are stored in variables and can be modified. The only performance hit I could see is when a vehicles sensors checks "can I see that", it now has to pull a variable from each object rather than is config value which is faster. Ofcourse I have no knowledge on the backend or engine workings of arma because its not accessible so im curious how you are thinking to go about this πŸ™‚

#

Like NikkoJT said too with scripting commands for all of these it will lead to some fun extra things like increasing the IRSize when you fire your afterburner πŸ˜„

full sonnet
#

The problem is that these values are currently stored on the entity type. Which is shared between all vehicles of the same type.
So changing it per-vehicle, doesn't work. Thats the annoying thing.

Need to move it over to per entity, but then we have the problem that it uses memory on every entity. Even the ones that are never targets.
Can move it to only transport vehicles, but then when receiving the value we need to check if its a transport vehicle or not, and that costs performance.

dusk hinge
tulip bane
#

so you wanted dev branch and not rc?

#

that explains it then πŸ˜›

#

-beta rc is for the release candidate

past moon
#

107410 -beta rc -betapassword Arma3Update156RC

full sonnet
#

Every vehicle that has sensor components, will check almost every other vehicle, so it'll add up

full sonnet
#

lol..

#

I noticed an error in my new code. Instead of returning visualTargetSize, I was returning visualTarget, the boolean 0/1 value.
Turns out, that wasn't my error, that was a copy paste.

Its been broken since... probably forever visualTargetSize in config had no effect, it would be either 0 or 1..

#

Welp lol

full sonnet
#
[] spawn {
  systemChat str diag_tickTime;
  waitUntil [{systemChat str ["check", diag_tickTime]; false}, 10, 2];
  systemChat str diag_tickTime;
}
#

The interval time only starts after the condition was evaluated, so if the condition itself takes more than one frame, it can take longer than interval between checks.. but this is scheduled so everyone expects it to be messy

dusk hinge
# full sonnet https://community.bistudio.com/wiki/setTargetSize

ayyy thank you! And yeah I get that, after i wrote my last message I though of that how every vehicle with sensors checks all others.

is this not possible to be global effect? I would of though just on an update of the values they could be broadcasted to all clients as it only would broadcast on update

I can just use remoteExec ofc. I guess there is the argument of what if you want certain vehicles to have "better" radar than others and therefore change target sizes locally

full sonnet
#

is this not possible to be global effect
Yes, but I don't feel like implementing netcode

#

Can do that later, mayybe

dusk hinge
full sonnet
# full sonnet ```sqf [] spawn { systemChat str diag_tickTime; waitUntil [{systemChat str [...

I... have a problem here.
I actually cannot use game time for waitUntil timeout/interval, nor ui time....

Due to engine architecture, waitUntil code doesn't have accesss to time.
The only solution I see is to use real world time, not game time.

Which.. should anyway be equal to ui time.
It just means you can't rely on it, and if you really need time (which anyway.. its scheduled, so it'll never be exact) you'd have to keep track of time yourself

halcyon moth
#

Makes it pretty useless for me :/

#

I think every time I use a timeout in a waituntil, it needs to be simulation time, not UI/real time.

full sonnet
#

I can make a copy of waitUntil that lives elsewhere... but I don't know what'll all break then

halcyon moth
#

Bit baffled that the engine doesn't have general access to simulation time. Like how do you handle AIs getting stuck :P

full sonnet
#

AI's have general access to simulation time

#

Just this code is in a place that doesn't

halcyon moth
#

Oh well. It was a nice-to-have rather than replacing something really obnoxious.

full sonnet
#

I'll try

halcyon moth
#

On that note I should probably write up an _array findLowest { code }

full sonnet
#

This is ugly right?

_par = createHashMap;
_par set ["name", "testfile"];
_par set ["folder", "subfolder"];
_par set ["content", "R3voman"];

do3DENAction ["CreateTextFile", _par];

This might be better, but I still find it ugly.

do3DENAction ["CreateTextFile", createHashMapFromArray [
  ["name", "testfile"],
  ["folder", "subfolder"],
  ["content", "R3voman"]
]];

I just felt like PoC'ing around a bit..

do3DENAction ["CreateTextFile", #{
  "name": "testfile",
  "folder": "subfolder",
  "content": "R3voman"
}];
#

This would be the first addition to SQF core syntax, in like.. 20 years?
So I'm a bit scared of doing this.. It seems to work..

# is an indicator for the compiler.
{} is just a normal codeblock
The code block gets compiled into a constant.
And because of the # it inserts a new make hashmap instruction (like make array works in the assembly)
The new instruction, creates a hashmap, stores it like switch statement does its condition, and executes the codeblock, just like switch/do.
The : are alt syntax of the colon command for switch/case, that look up the hashmap and insert into it.

Also available in cursed as F.

_f = {
  hint "hello";
  "name": "testfile";
  "folder": "subfolder";
  "content": getPos player;
};

#{
  call _f
}

Currently it runs unscheduled. So this would also be alternative to isNil {codeblock}. You don't need to put anything into the hashmap.
But I think thats a bad idea, it should support scheduled

carmine juniper
#

Huh, this can help quite a bit of mass config generation etc

pallid cliff
#

Interesting

#

I have never been a super huge fan of hashmaps as arguments/parameters as they are quite wordy. But that new syntax seems nice.

full sonnet
#

notlikemeowcry Yes. But I'd prefer to not have to do it because its annoying πŸ˜„

teal snow
#

There are so many useful, functional applications of having this work

analog fractal
#

Can that write description.ext?

pallid cliff
#

Only text files if you are talking about the new 3den action

full sonnet
#

ITs a hash map

#

🀷

analog fractal
pallid cliff
#

Literally only .txt file.

bleak canopy
analog fractal
slender axle
#

You can almost do this with preprocesser macros but native syntax is cool.
Is there any possibility of adding Sets? Can already accomplish similar with HashMap structure backing but would be nice bridge between Arrays and HashMaps.

full sonnet
#

no

broken musk
#

any rough guidance on which Q we're likely to see 2.22?

pallid cliff
#

He said next release is "monthish" away

deep sleet
# full sonnet This is ugly right? ```sqf _par = createHashMap; _par set ["name", "testfile"]; ...

Wow, this looks like a great feature, but for some mod developers like me, it could actually cause serious problems.

To keep development efficient, we rely on tools like sqflint (a VS Code linter/parser for SQF) to validate our SQF code style and syntax.

If there are syntax-level changes, they could break compatibility with tools like sqflint.

For us, that would likely create more trouble than benefits.

harsh orbit
#

from what I see there's no syntax change to the SQF itself. it's just that now we have alternative syntaxes for some commands (# is now unary with code arg, and : takes ANY instead of CODE)

deep sleet
#

Actually, there is one β€” for example, : is supposed to be valid only inside a case statement, but now it is also treated as valid in general contexts.

harsh orbit
#

I don't remember there was a constraint on using :. so you can't just write cast "X" : {}; (without any switch) ? it should be possible afaik

deep sleet
#

There is, actually β€” using : outside case leads to parse errors.
I did try to patch sqflint, but I’m still not very familiar with JavaCC and related tooling.

harsh orbit
#

using : outside case leads to parse errors.
well rn it should because again : is a binary command that takes a CASE object on the left so you do need a case. (so syntax is CASE : CODE)
but once this gets released (if at all) I think Dedmen will change it to be ANY : ANY and the linter shouldn't complain anymore.
external linters like SQFLint will have to be updated manually, but internal linters like ADT will adapt automatically because they can read the syntax data directly from the game

deep sleet
#

Based on my limited understanding, this is currently how sqflint handles : .
It doesn’t treat : as a binary operator/command; instead, it validates : specifically while parsing switch-case statements.

Maybe : could be handled as a normal binary operator instead β€” I’m not completely sure. If that approach is possible, I can try to work on it, but to be honest, it would still be quite difficult.

We would need to modify sqflint itself to support this properly.
So I just wanted to kindly ask whether this change is truly necessary.
Either way, I understand your reasoning and decisions.

full sonnet
full sonnet
full sonnet
#

So I just wanted to kindly ask whether this change is truly necessary.
You don't have to use it, if your tools are not compatible with it.
What you do in your code is up to you. Why should a old tool that is not being updated, prevent everyone else from getting access to a new feature?

#

If you were to go by that logic, then any new script command should not be done, because sqflint's command list won't know it and won't know what to do with it?

unreal lava
#

honestly this ^

i'd rather have to keep updating my code to accomodate for engine changes/additions than be "alone" in modding a game where the devs abandoned it without support (having done the latter myself, it's not fun or motivating, spending 50+ hours inexperienced digging through assembly to fix/add/change one feature in the engine because the game was too limiting)

i'd much rather have it keep evolving and spend the 1-2 hours needed if i maybe have to change something on my end because we get new features than to be stuck with a game that'll never grow past its current state, im happy we're still getting updates after more than a decade

deep sleet
#

Okey fine I really appreciate all the work you’re doing, and I’m genuinely glad Arma is still evolving after all these years.
I agree with your overall point β€” continued engine updates are important, even if they sometimes require extra adjustments on our side.
For me this will likely mean some painful tooling changes, but I’ll adapt and update my workflow as needed.
Thanks again for the explanations, and for continuing to push the engine forward.

vernal remnant
#

@full sonnet Hi i was wondering if you know about the Cycle Order bug where when cycle redos the waypoints after a while they end up defaulting to world origin 0, 0, 0

#

it appears pretty consistent and I've had to stop using it for my waypoints for ground units, I've tested it with just CBA.

halcyon moth
#

What does "after a while" mean exactly?

vernal remnant
#

You'll see waypoints at 0, 0, 0

halcyon moth
#

What type of vehicle?

vernal remnant
#

any could be infantry as well

#

this is with CSAT.

#

maybe i have bad code but i dont think so all im issuing is a cycle with waypoints so πŸ€·β€β™‚οΈ

halcyon moth
#

If you can, create a minimal replication case: A mission as small as possible that can reliably generate the problem without mods. Then post that to the feedback tracker.

winter crescent
tall pumice
#

i wonder if the visualTargetSize fix will have an actual influence on the gameplay now or if nobody will notice anything

unreal lava
#

Wooo!

#

awww πŸ™

  • Removed: lineIntersects / lineIntersectsSurfaces multithreading (unresolved crashes, though the script syntax is still present)
#

bi giveth, and bi taketh away - oh well

kinda curious as to how deep of a code edge case nightmare that must've been to cause crashes (i've used it quite a lot actually and never encountered a crash)

full sonnet
#

I have also never encountered a crash while I was testing with it.
I put it in TFAR, none of the players in my unit had issues with it.
But after TFAR update got released to public after the beta testing phase, within one day people started reporting mass crashing.

Still no idea what the issue actually is

unreal lava
#

curious... maybe one day it's figured out 🀷

halcyon moth
#

Ah shit, I just used it in our latest release :P

full sonnet
#

It just iterates the loop on one thread.
Probably still faster than looping it in SQF

halcyon moth
#

Yeah but it's multithreaded on stable?

full sonnet
#

on 2.20 yea

halcyon moth
#

Maybe it's a safe case anyway because it's a lot of 10m rays in a short area.

#

I would guess TFAR is doing very long rays that might force terrain loading/unloading?

full sonnet
#

TFAR used it for object interception, which is 60m tops

unreal lava
#

it's shrimple, dont need to fix the crash issue, just use gpu for raycasting legallydistinctkekw

#

(probably changes it just enough to maybe avoid whatever was causing the crash, and totally doesn't include an additional age of work or whatever)

slender axle
#

generic pylons
Are vanilla assets going to uptake these? Would be nice if mission scripting allows to add sensor pods or pilot cameras to helos and jets.

viscid onyx
#

The generic pylon magazines don't require any changes on the aircraft itself to work, and through scripting, any pylon magazine can be added to any aircraft that has pylons. So vanilla aircraft, like all other aircraft, will support generic pylons by default. You will still need a mod to actually create new generic pylon classes to use; I don't think there are any plans to add vanilla sensor/camera pod pylons, because it would require asset work which there aren't resources for.

slender axle
#

Ah I see. Still cool.

#

And there are fuel pods that got quietly added last patch. Fingers crossed for test sensor / pilot camera pods anyway.

carmine juniper
#

I am not 100% sure about this topic, but is still there a chance of tweaking vanilla P3Ds in the future update? Is torturing reyhard still worth it?

#

I just actually thought of... Ghillie Suit but with actual head instead of goofy balaclava

#

Or Bohemian heads don't have facial bones, etc...

full sonnet
full sonnet
teal snow
#

Il test with the next update, Thank you

tawny cedar
tawny cedar
teal snow
#

if its the same as "animDirection", it will be mempoint only

tawny cedar
#

Does the Camera/Sensor pylon support adding a magazine? For example, to let a targeting pod add both the sensors, as well as a laser designator? Or would that have to be done using an EH to add/remove a laser designator weapon/magazine?

tawny cedar
#

So some feedback on sensor/camera pod configuration - I've tested using pod models from a few different mods, since there obviously aren't any in Vanilla. Camera pods work great without any memory point defined (model center default), which allows for backwards compatibility with old models; however, they need to be made with no internal textures if you aren't manually defining a memorypoint, or else you will likely get an obstructed view.

For sensor pods, it seems that the default direction is backwards. Fig. 1 shows a combined sensor/camera pod, and even with PilotCameraRotX/Y attempted for sensor direction (provided by CameraComponent according to https://community.bistudio.com/wiki/Arma_3:_Vehicle_Loadouts#CameraComponent), the associated sensor on the sensor display does not move when the camera is rotated, and constantly points backwards. Fig. 2 shows a sensor pod with no camera conmponent. No default direction is defined, and it points backwards as well.

Personally, I think it might be a good idea to take the LITENING on the A-149 and make a version of the model configured as a camera/sensor pod, just so there's a Vanilla template with all the memory points and directions to allow model makers a reference for what is required on custom pod models.

full sonnet
full sonnet
unreal lava
#

The missile knows where it is because it doesnt know where its facing

raven mist
gray quarry
#

wat

tawny cedar
#

For anyone working on TGPs, here's a couple little files I wrote to add/remove laser designators to your aircraft when a generic pylon is added/removed. v1.0 is bugged on two-seaters, fix with switch to addWeapon/MagazineTurret.

        class EventHandlers{
            added = "call compileScript ['\yourFilePath\fn_AL_pylonLaserAdded.sqf'];";//params ["_vehicle", "_pylonConfigClass", "_pylonIndex"]
            removed = "call compileScript ['\yourFilePath\fn_AL_pylonLaserRemoved.sqf'];";//params ["_vehicle", "_pylonConfigClass", "_pylonIndex"]
        };
tawny cedar
#

Some more feedback on camera component: from my test, the Camera Feed display compnent appears to use the memorypoint/direction of the vehicle class' pilot camera instead of the camera pod's properties. Curiously, it does correctly match the vision mode.
Fig. 1: The active pilot camera is underneath the aircraft, with the underside and a pylon-mounted weapon visible. Meanwhile, the Driver feed is taken from the vehicle class' default position with the aircraft's nose and forward terrain visible. It also obeys zoom level of pylon TGPs.

waxen knot
#

...did something get broken with the delete keyword?
Vanilla static AA turrets (Defender/Rhea) and their radars (AN/MPQ-53/Cronus) can somehow be flipped up by a human player if they get knocked over even though their configs specifically remove the UserAction for it (PressXToFlipTheThing).

tawny cedar
#

When assigned by default as an attachment entry to a pylon, generic pylons do not appear as selected in the Attributes->Pylons menu. However it is selectable and may be mounted like normal. Yes, I've double-checked that the version I attached is the compatible one.

full sonnet
#

XD Everything is wrong

tawny cedar
#

I also dont know if its like this for all models or just pylons (im new to object builder), but I that reminded me i had to invert the Z coordinate of my pylon's pilot camera memory point

full sonnet
#

Pylons are proxies, so they are inverted models.. kinda mess

carmine juniper
#

Inverting the invert, what an invention

full sonnet
#

It is supposed to be, that the direction you set up inside the pylon model, should match.

So if it goes out the front of the pylon model, it should also go out the front ingame.
The engine should handle all the inversions.

#

I just need to rip out this code and redo it.
The method to get the sensor direction, takes a entity transformation as argument (which seems to be nonsense, because it always gets passed the "same" thing, why even have that as argument..)
Some places pass the transformation of the vehicle having the sensor.
Some places pass the transformation of the owner of the sensor, which so far used to also be the vehicle.

But since pylons have sensors, the pylon is the owner, and the pylons position is inverted and offset.
But some places now pass the helicopter instead of the pylon... ahhh.

full sonnet
full sonnet
full sonnet
#

And the inversion of the proxy was not properly applied to the camera pos, that was probably the thing with your inverted Z coordinate.
Instead of moving forwards it moved backwarsds

full sonnet
#

Man the camera view in the HUD is such a ultra mega pain
Its all based on a memory point on the vehicle.
But its not on the vehicle for pylons notlikemeowcry

full sonnet
#

Pylon camera position memory point cannot be animated.
I could make it so, but I'd rather not add the overhead

#

Also HUD camera works by being attached to the vehicle's memory point.
The vehicle doesn't have the pylon memory point, and attaching to pylon is not possible.
But I can attach to the vehicle, with a fixed position offset (So again, the mempoint can't animate here either)
Ah the pain of trying to add a feature to this engine πŸ˜„

harsh orbit
#

I wasn't following the conversation. what are you adding again?! πŸ˜…

lucid totem
#

goats

unreal lava
lucid totem
#

FIRE!!

tawny cedar
#

Ill get some more testing in today/this weekend, one of the camera pylons im adding has a horizonal offset and i want 2 see if that will be inverted

tawny cedar
#

I'm also having this bug (I'm not sure if it's related to Devbranch or not) where if an aircraft doesn't have a particular sensor by default, it won't be able to use that sensor even if it's added by a pylon ammo.

For example, the A-10 doesn't have IR detection capabilities without a TGP or AGM-65 mounted on a pylon IRL, so I removed the VIS/IR sensors from my version of the A-164, with the intent that a TGP or Macer/Maverick could be added to grant the functionality. However, when flying around some VIS/IR targets, none of my weapons, whether it's the cannon or AA/AG missiles, can select a target. Only if I add the TGP to a pylon will it let me do so. Sure for the gun, it's fine, but for the missiles with a built-in sensor, it's definently not what I woiuld expect for functionality. Same goes for IR missiles.

tawny cedar
full sonnet
#

The fixes for the stuff should land mid next week

full sonnet
tawny cedar
#

I guess the best way to tell without a custom addon or class would be with the vanilla AH-9
>Place AH-9, assorted air/gnd targets in 3DEN; ensure ground targets have engines on via MOVE waypoint
>Set pylons to Falchion-22, Scalpel, or any other sensor-guided weapon
>Play scenario, attempt to lock on to any target with pylon-mounted sensor-guided weapon. You will be unable to unless you very precisely "boresight-lock" by lining up the target in the exact center of your screen and pressing T/R
It appears unrelated to the new Pylon feature though

viscid onyx
#

If the aircraft doesn't have a usable sensor, it uses the weapon's own sensors. If the weapon's sensors have a very narrow lock cone, then that's what you'll get. You should check the sensor config for those ammo types.

halcyon moth
#

There's one CUP Hellfire with no lock params at all, because apparently they didn't test that case :/

tawny cedar
# viscid onyx If the aircraft doesn't have a usable sensor, it uses the weapon's own sensors. ...

The BIM-9X and Macer lock cones are a lot wider than center-screen boresight though. If a target is selected via boresight, it also only has a target lock diamond, and not a target select square - from this I can presume the Square part of the target symbology refers to aircraft sensor lock and the diamond refers to ammo sensor lock.
Fig. 1: Target is demonstrated to be a valid IR target, and was selected via "boresight" (T button while HUD weapon reticle is centered on target). Only has Ammo Lock symbology because aircraft lacks sensor.
Fig. 2: Same target is well within ammo lock cone (Macer is 35Β° x 35Β° IIRC), I am spamming the R button; I could do either R or T to the same lack of effect.
Fig. 3: Same editor file, just have a Generic Pylon added with sensors+camera. Now the target appears on my scope, and I can select it from any angle (i.e. not boresight-locked). If the aircraft was appropriately using the ammo's sensor, this case would be possible without the TGP. The only difference I would expect is the the target to only appear while within the ammo's specific sensor bounds, and the ammo-only lock symbology being present, like in Fig. 1.

No DLCs, just the mod I wrote including this custom derivative of the A-143, sensor pod, etc. It does not change vanilla behavior, and the ammo class is the vanilla Macer.

#

Similar case, A2A. Heat-seeking missiles like the AIM-9 mounted (vanilla Falchion-22 ammo class) can and are intended to lock IRL with no sensor input due to using passive sensors. However, without an IR sensor on the aircraft or a RADAR activated, my heaters are nigh-useless and unable to lock at close range with very little angular deviation from boresight. It's like if it was only functional using the RADAR slave modes found on real aircraft.

unreal lava
#

dev branch got updated thonk

lucid totem
#

base game too
660 MB

unreal lava
#

am i smelling the 2.22?

viscid onyx
#

Are you sure that's not the EF update?

unreal lava
#

oh

lucid totem
#

perhaps

unreal lava
#

yeah that explains it coolfrog

lucid totem
full sonnet
#

This weeks dev-branch update is being skipped. So no pylon fixes yet πŸ«‚

full sonnet
#

Which config entry on the missile, decides its lock-on cone?

#

Is it that the weapon is missconfigured (not my thing to fix), or that the engine doesn't properly handle the weapons configuration?

broken musk
#

little Q about the radio channel stuff... does "setPlayerVoNVolume" hold thru death/respawn? Also does Direct Chat have a hardcoded range?

tawny cedar
full sonnet
#

Direct chat is 80 meters.
But the volume falloff over it will also make you stop hearing sooner than that

full sonnet
full sonnet
#

Over the years (Literally going back to 2013) there were a few requests for verifying DLL Extensions before loading them.
Either by checking their Hash or Signature.
We had an internal proposal (Also 2013) to make "bisign"'s for extensions, but that is not backwards compatible.

There were proposals to add new script command/syntax like callExtension, but you provide a hash to it and it verifies it before loading the Extension. But the problem is that if the Extension was already loaded, using the old syntax, then its already too late.

My idea would be a EventHandler, which you can return false in to block a Extension from being loaded.
This also has the problem of an Extension being loaded before the Eventhandler is added.

So on top of the Mission EventHandler added by script, also have a config class with basically config EventHandlers that do the same, which would be present before the first Extension is loaded, and can do the validation.

The EventHandler would get arguments like allExtensionInfo is providing.
Signature (full certificate chain, only windows), file hash, filesize, modfolder its in, file version info (windows).. What else?

Thoughts?

harsh orbit
#

scripted solution is bad

We had an internal proposal (Also 2013) to make "bisign"'s for extensions, but that is not backwards compatible.
why not?

full sonnet
solid island
#

It would make all the existing extensions invalid until modders update them I think

solid island
full sonnet
#

Just loading it is enough for it to do anything

harsh orbit
#

Also once an Extension is loaded, its too late. And you can load an Extension in Singleplayer, before joining a server.
well yeah. this is true of any solution you provide. no?

full sonnet
harsh orbit
#

if you load a mod that server doesn't use and the mod is not signed you can't join the server at all right? sounds like a trivial question but I've never done it so idk

full sonnet
#

Yes

ebon quail
#

depends on signature validation setting of the server no? but in this case I assume it would be set to verify all

solid island
#

Is it more to protect the players from loading "unverified" dll extensions, or rather make sure that the dll versions match between the server and the client?

full sonnet
#

The main focus is "unverified".
But if the DLL is verified and you can trust that the DLL is what it says it is, then you can also implement the version match check in script.

#

Currently you can implement version check.
But you trust that what the DLL tells you is its version, is actually it.
In the age of open source extensions, everyone could build their own and replace it with one that just states the same version.

solid island
#

Maybe backwards compatibility is not so bad if you prompt the user to confirm they want to load a mod which has a missing dll signature

full sonnet
#

Prompt doesn't work, we cannot delay the DLL loading if its requested, without breaking backwards compat

pallid cliff
full sonnet
pallid cliff
#

rgr

full sonnet
#

Currently allExtensions has sha1 hash, does it actually matter enough that I should also provide sha256?
Because of sha1 being old and "insecure" and stuff

full sonnet
#

(I know exitWith doesn't work properly.. please ignore that fact)

addMissionEventHandler ["ExtensionLoad", {
  if (_this get "name" != "ace_break_linecorrupt") exitWith { true }; // return, Allow loading

  // must have signature, so signatures can't be empty
  if ((_this get "signatures") isNotEqualTo []) exitWith { false; };

  // Find a signature that is..
  _validSignatureFound = (_this get "signatures") findIf {
    _x get "publicKey" == "308201...E4EA81730203010001" // Signed by my key
    &&
    !("expired" in (_x get "status")) // Not expired
    &&
    !("badDigest" in (_x get "status")) // The signature actually matches the binary (it was not edited after signing)
  };

  _validSignatureFound != -1 // If signature found we load, otherwise we block
}];
#

Argument is a hashmap

{
   "name":"ace_break_line",
   "hash":"676CE410E48A0D3CED71004D4F1FAC11D99D0D55",
   "signatures":[
      {
         "notAfter":"2026-04-12T16:42:56Z",
         "serialNumber":"1022",
         "extensions":{
            "authKeyId":"DB479B6C8A1F05807EDBAFCBC2823DB52D554E9C",
            "comment":"Plugin Certificate",
            "subjectKeyId":"92CF8B549101560DD5D771754E44326EE4056935"
         },
         "issuerName":"DE, Germany, Intercept, CA, Intermediary CA Dedmen",
         "issuer":{...},
         "status":[
            "ok",
            "expired",
            "revocationUnknown",
            "partialChain"
         ],
         "notBefore":"2023-04-13T16:42:56Z",
         "thumbprint":"B6C731E2ABE2113723FAB0EC5342292B576B0E27",
         "publicKey":"3082010A...203010001",
         "subjectName":"DE, Germany, Intercept, CA, Intercept Core Extension",
         "counterSignSig":{...}
      }
   ],
   "filesize":226136,
   "productVersion":"3.8.4.0",
   "hashsha256":"FFB537D2D08B081E9AB387C629F6223D00E6A6149EA91AB45E255D7B6CCDBDA7",
   "fileVersion":"3.8.4.0",
   "mod":"curator"
}
unreal lava
#

had this conversation in another chat (i think it was in scripting) - not really a failsafe per se as much as a warning (against malicious ones at least), but if there was a prompt when starting a game without battleye whilst using battleye-unverified extensions (or any extension in general if you cant check for battleye verification) that essentially tells you "you're using an mod xyz that contains an extension that wasnt verified by battleye, if you have been instructed to do so on purpose, it may contain malicious code/etc..."

#

(i know it's not exactly on topic but since its an extension conversation i figured i'd drop my two cents here)

full sonnet
#

that wasnt verified by battleye
We don't know that

unreal lava
#

gotcha, figured as much but wanted to be sure - i mean then it's just along the lines of "using mods with extensions without battleye is dangerous"

can have a "dont tell me again" cause im sure many people do this, but at least it's a warning that still happened

verbal venture
#

Would be funny if BE was also just checking the hash of the DLL

full sonnet
#

For their whitelisting, they basically are yes

#

Find a hash collision in whatever hash they use and have fun

full sonnet
#

Where to put the config eventhandler to verify the extension.

Its basically a MissionEventhandler but in config meowsweats

class CfgExtensions {
  class MyModName {
    extensions[] = {"extension1", "extension2"}; // Whitelist, which extension names to run this check on (so its not ran on unrelated extensions we don't care about)
    onCheckLoad = "call MyMod_fnc_checkExtensionLoad";
    publicKey = "308201...E4EA81730203010001"; // The handler has access to the config class, so we can store some properties here)
  }
}

Everything i come up with seems ugly in some way.

MyMod_fnc_checkExtensionLoad = {
  // must have signature, so signatures can't be empty ("signatures" entry is not present on linux")
  if ("signatures" in _this && ((_this get "signatures") isNotEqualTo [])) exitWith { false; };

  // Find a signature that is..
  _validSignatureFound = (_this getOrDefault ["signatures", []]) findIf {
    (_x get "publicKey") == (_this get "config" >> "publicKey") // Signed by my key (Easy access to config that added the handler, so can store the key there)
    &&
    !("expired" in (_x get "status")) // Not expired
    &&
    !("badDigest" in (_x get "status")) // The signature actually matches the binary (it was not edited after signing)
  };

  _validSignatureFound != -1 // If signature found we load, otherwise we block
}
raven mist
full sonnet
full sonnet
#

There was a proposal of moving extensions out of the game process, into a separate process.
Overhead for communications over there, but security benefit. And we can just kill/restart the process when we join a server. So no extensions can load before, and we could actually apply bikey/bisign verification there.

But 13 years since that proposal..
And it would've also blocked some recent features, like interacting with graphics.

gray quarry
#

why it wasn't done back then?

lucid totem
#

apparently, some other minor developments happened in between really

gray quarry
#

hm

nova wigeon
teal snow
full sonnet
full sonnet
teal snow
# full sonnet That should be in Prof.

Iv just tested Prof, this does not appear to work, I have the animPosition = "sensorPos"; set inside my ActiveRadarSensorComponent components, I do not have an "animDirection" defined and it still appears to be originating from model centre.

full sonnet
#

I'd need something to test it myself

teal snow
#

Iv got something but it aint simple, I don't know of a way to do this simply, I cant config patch a mempoint into a vanilla vehicle to test

#

Might have an easier way

teal snow
compact salmon
#

Has anybody actually gotten the "required mods" thing working in 1.56RC server browser?

#

For me it just doesn't seem to able to connect "@CBA_A3" running on the server with the "@CBA_A3" I've got from steamworkshop

compact salmon
#

@past moon Any idea what I'm doing wrong?

unreal cypress
#

Do you have CBA downloaded from steam as well, or have you downloaded it from somewhere else and added it manually?

broken musk
#

any chance an old mission maker vet could get a personal favour added to the game?

request: description.ext option to auto-join players into a randomly selected lobby slot (instead of the current first-available selection)

#

it would address this issue:

#

right now if there’s a bugged slot (appears joinable while it’s actually occupied), all joining players get auto-joined to it and get β€œstuck on receiving data”

#

if slot selection was randomized, the likelihood of encountering the bugged slot would be way lower

#

joinRandomLobbySlot = 1

#

please ❀️

#

then i can finally use the β€œskipLobby” option and bypass the lobby UI altogether. at the moment it’s essential to have so players can select a non-bugged slot

raven mist
# broken musk right now if there’s a bugged slot (appears joinable while it’s actually occupie...

To bump on this we actually have had this issue forever too. I've never brought it up because I've never been able to reproduce or get a dump to provide useful enough info.

We recently had a case where 8 or so slots went at once and people couldn't join them. Upon debugging I found the names associated with the units were either null or nil:

[swat_0, swat_1, swat_2, swat_3, swat_4, swat_5, swat_6, swat_7] apply {getPosATL _x}
// [[0,0,0],[0,0,0],array,array,[0,0,0],array,array,array]

Typically it'll only happen with a few slots at a time so we are more convinced the one I was debugging above is mission related. Those specific slots were also only implemented within the year to support adding a faction to a gamemode; and what I did to make it work wss quite hacky. It does make me wonder though if in instances of this happening where we've always thought it an Arma bug that somehow the unit is being deleted.

full sonnet
full sonnet
winter crescent
tepid dock
#

Added... Latin?
Is this a "because we can" case, here or was there a special reason behind this one?

#

I'm asking because it's been a long time since I last met someone speaking it

lucid totem
#

a special request by @pontifex in DM

winter crescent
#

https://www.bohemia.net/blog/arma-2-the-name-tale

Arma is originally a Latin word
(No special reason other than it was a high-level request from inside BI)

pallid cliff
#

*These languages were experimentally translated using an AI model. The quality of these translations is not guaranteed, and they may contain mistakes. Separate issues are unlikely to be fixed, but full regenerations using improved models may occur. All other existing languages were translated by a team of human translators.

May I ask what AI model was used?

ebon quail
#

GPT-5.4
But subject to change for whatever reason

pallid cliff
#

I wonder how that compares to DeepL

tall pumice
#

oh no, what's vojtΔ›ch thinking about this

pallid cliff
#

Pulling his hair out

halcyon moth
gray quarry
#

was latin ai translated because there's nobody at bi's reach who knows latin translation?

teal snow
#

I recently generate string tables for my mod using ai translations, the feedback iv had so far was okay with minor contextual errors in the translation

raven mist
teal snow
#

its immedietly significanty easier for people to enter using mods if there is somewhat of a translation instead of nothing

tepid dock
#

Depends. A botched translation may be more annoying, because it could break the immersion every now and then. It would constantly remind me "oh, right, I'm just playing a game, because those lines don't make sense in this context so it's not a real person who said that", so to speak

raven mist
#

I guess I could see that in the case of mission making with AI who speak dialog. I feel like for other stuff like UI I'd still rather use a botched translation over a language I don't understand though.

broken musk
#
    0,          // EAST, random role-joining disabled
    1,          // WEST, random role joining enabled
    1,          // RESISTANCE, random role joining enabled
    0           // CIVILIAN, random role joining disabled
};```
#

obviously excluded module/logic/zeus slots so players cant shuffle themselves into special roles

trim crane
#

Maybe the array should be side index instead?

raven mist
#

A little off-topic from the current request but pretty sure when they're locked on receiving data they also can't escape to chose a new slot. It'd be cool if maybe there was some sort of timeout or something before allowing user input to escape but that's probably way easier asked than to do.

#

Right now only real option is to ALT+F4 and not sure if we'd be able to use the randomized slot selection since our blurfor slots have units that require different whitelists. So maybe even just some way to chose which slots are viable too if it's not too large of an ask πŸ‘‰πŸ‘ˆ

fervent remnant
#

Create zeus slots and control the world

carmine juniper
#

Well machine translation was ever introduced to the game all the way back then, like 8 years ago. I'm not against of these new strings but it's not something entirely new. Our people suffered by playing Bootcamp already, before we fix it

unreal arrow
trim crane
broken musk
#

are players sorted evenly by faction when they first join the server @trim crane ? i’ve only ever worked with 1 lobby faction

#

my intention is to use the skipLobby option. its unusable if there’s a bugged slot that every client is getting assigned to, so random assignment will sidestep the bug

misty aspen
#

What could be neat is replacing the idea with the faction name

#

So

assignRandomRoleForSides[] = {east,west};
tall pumice
#

cant you do that with #define

misty aspen
#

Why make complicated when can be simple blobcloseenjoy

pallid cliff
#

Gotta be a string then.

#

Just stick to numbers and use defines as Lexx said.

misty aspen
#

Fair

frozen pumice
unreal arrow
unreal arrow
frozen pumice
unreal arrow
#

Right so what is the problem?

full sonnet
ebon quail
frozen pumice
unreal arrow
#

I'll have a look

broken musk
#

along those lines, I've always wanted to be able to use just one PBO for all terrains... the only thing holding us back is the mission.sqm file

#

imagine if the system would look for fileExists (format ["sqm\%1\mission.sqm",worldname])

#

or search for fileExists (format ['%1.sqm',worldname])

#

and if found, run that instead of mission.sqm

#

this would mean a unified PBO could handle all terrains

broken musk
#

on current dev branch, getting a client crash when I open the "Direct Connect" tab in the server browser

ebon quail
fervent remnant
broken musk
#

hmm, where is __USE_terrain defined?

#

and does this actually work?

fervent remnant
broken musk
#

can i see the defines.sqf?

#

just trying to set up a PBO which works on all vanilla terrains

fervent remnant
fervent remnant
# broken musk can i see the defines.sqf?

defines.sqf

//#define __USE_TAKI
//#define __USE_SAHRANI   // привязка ΠΊ мСстности Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅
#define __USE_LINGOR   // привязка ΠΊ мСстности Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅
//#define  __USE_Panthera
//#define __USE_Taki
//#define __USE_Fallujah
//#define __USE_CHERNO_W
//#define __USE_Esbekistan
//#define __USE_CHERNO   // привязка ΠΊ мСстности Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅
//#define __USE_Caribou
//#define __USE_isladuala
//#define __USE_Celle2
//#define __USE_Podagorsk
//#define __USE_Emita
//#define __USE_Utes
//#define __USE_Napf
//#define __USE_Franken
//#define __USE_Pantera
//#define __USE_Kulima
//#define __USE_Everon
//#define __USE_Malden
broken musk
#

thanks mate

misty aspen
fervent remnant
misty aspen
#

Ah yeah sad times

gray quarry
gray quarry
# ebon quail

ah so it's put in the changelog on a per patch basis as it gets found? thought there might be a dedicated place for that
thanks

ebon quail
#

its probably out of date
like this one which doesn't exist anymore and just redirects to some ford raptor wallpapers site kek

gray quarry
#

heh

#

who manages that page?

ebon quail
pallid cliff
gray quarry
#

very funny

pallid cliff
#

Was dead serious though.

ebon quail
pallid cliff
#

We don't have a biki page for stable branch issues?

gray quarry
gray quarry
halcyon moth
#

Doesn't even have an AI category :P

unreal arrow
fervent remnant
# misty aspen Ah yeah sad times

Yes, I would really like to be able to enter the missionname empty world (missionname.empty) into the pbo file and then upload the desired world inside the file.

misty aspen
#

Yee

unreal arrow
gray quarry
unreal arrow
#

nope, mpmissions is designed to be relative to arma3

tall pumice
#

who broke the tigris hud :> i deployed 2 smoke grenades, but the monitor hud still shows 2 green squares

winter crescent
# gray quarry who manages that page?

I make a very shallow pass as part of every main branch release, but those are quite infrequent these days. Could probably do a deeper clean-up next time.
(Unlinked Raptr, thanks for the spot.)

ebon quail
winter crescent
#

But could someone still have it somehow locally installed? πŸ€·β€β™‚οΈ Will mark to remove next pass.

waxen knot
#

Uhh...were the Repair Depot props from the Tanks DLC always like this?
DestructBuilding seems to be glitching out for whatever reason.

ebon quail
#

all of you gotta stop giving me heart attacks with these random issues after we repacked the entire game data(currently on dev) sweating πŸ˜‚
seems to be a code issue, not data luckily

gray quarry
gray quarry
ebon quail
#

thats checks calendar
almost 10 years ago

gray quarry
#

8 years ago*

#

i still have a defunct gaming hub app installed that im lazy to remove

ebon quail
#

Its also not just it being installed its having the client open/running

gray quarry
#

ah fair enough

pallid cliff
ebon quail
pallid cliff
#

Still more reliable than GitHub ATM.

gray quarry
gray quarry
raven mist
# pallid cliff Still more reliable than GitHub ATM.

I had an effing heart attack yesterday. The night before I merged a bunch of shit into our main branch when I was super tried. Imagine my surprise when I saw no pull requests in our repo the next morning. I thought I somehow screwed up default branch pikachusurprised

halcyon moth
#

I remember those are weird because the live one shows up in vehicles but the dead one doesn't appear in allDead.

broken musk
#

healthy model set underground, wreck spawned, code to protect supply containers from sinking keeps pushing it back above ground, clashing with the ruin model

#

solution probably for the code which protects from sinking to check for a ruin model

nova wigeon
misty aspen
full sonnet
# broken musk this would mean a unified PBO could handle all terrains

Doable. Make a FT ticket please
How to find what missions work on the terrain though. missionName.*.pbo ?
But what if a SQM is then missing.. But I think likely doesn't matter anyway, we already open the pbo and read mission.sqm to get the mission name out of it. We can read pbo and see what sqm's are inside.

full sonnet
full sonnet
tall pumice
#

those should turn red when firing smoke launchers. it works in other vehicles

full sonnet
full sonnet
# waxen knot Uhh...were the Repair Depot props from the Tanks DLC always like this? `Destruct...

Already kinda broken in 2.20 stable. You can see it wobble about. Just not as badly, it still stays mostly inside the wreck.
In prof v50 its already wobbly
v40 is wobbly
v31 is wobbly
v10 is not
v18 is not
v24 is wobbly
v22 is not
v23 is not.

#arma3_branch_changelog message

Fixed: Some ThingX entities would get suspended too early when they are un-alived (Shooting target plates not falling down)
ugh..

tall pumice
#

add more weight to the object?

#

that said, does it really need to be thingx? it's not like you can flip it back into a box and transport it somewhere else

#

oof, it already has 500000 mass πŸ˜„ maybe it's too much? my mortar container scenery has 7000 mass and uses a similar config

#

looks like it gets destroyed similar to buildings. maybe just swap it to house simulation directly?

broken musk
full sonnet
#

It uses DestructBuilding. And we already have a bypass for DestructBuilding if the destruction phase is 0.
But this thing is sinking into ground, so destroy phase starts at 3 and goes up. Its not zero.

full sonnet
#

The problem is yes one pbo can support multiple terrains. But then you need 50 copies of the same pbo, because the game only loads pbo's with terrainname.pbo

broken musk
#

yep ill leave those ideas up to you. the idea is just to have a universal mission file which works on multiple terrains.... ill make the FT now

full sonnet
#

Yeah maybe I just make it use mission.sqm as fallback.
And then you might load into a unknown terrain you never heard of.. and I'll let you deal with that problem..
Or we support mission.sqm fallback not existing, and make the mission just not show up in the list then

broken musk
#

how does the engine decide which terrain to load? is it from pbo filename or mission.sqm

full sonnet
#

pbo filename. The mission.sqm has no info about what terrain it is

broken musk
#

this is just what i had in mind

full sonnet
#

mission.stratis.sqm is what I have in mind

broken musk
#

nice

#

while you are here, any tips on how to run a clone of bis_fnc_arsenal ? i want to use the display/HUD and adjust some things under the hood, but running the display is causing trouble

full sonnet
#

No

#

Trouble is there to be had, not to be avoided

broken musk
#

hahaha understood

full sonnet
full sonnet
# pallid cliff Gotta be a string then.

Using enums isn't really anything new.

If configuration becomes more complicated, with indices per side, and maybe priorities which side to fill first or whatever, it might also make sense to just have class Blufor opfor, ...

full sonnet
full sonnet
frozen pumice
full sonnet
#

Command line has additional complications. Not for us but for users.
Like anyone using a server hoster, nitrado and such. Do they generally offer a "extra command line parameters" or do they only allow you to set what they offer? They likely would take a long time to support new parameters.
While server.cfg is generally freely editable and you can directly use the new features.

I think in most cases, like yours (and like Crumble brought up), you'd anyway also want to change the server name to identify which mission set is active. If you use a mission rotation, you have to change it too.
So I think in most cases, you would end up always having to change two parameters instead of just one.
Mission folder to me seems like server configuration, and server configuration seems to make sense to be in the server configuration file πŸ˜„

Also the fact that we now have a parameter, that only works if you're a server. (And afaik that's the only one that does that. Well -config parameter is also server only)
And server config already only works if you're a server.

#

But now is kinda too late, as the parameter is already implemented now

pallid cliff
#

Could use a Param file, that way hoster doesn't need to support new parameter.

ebon quail
#

they would still have to support the param file arg, which they probably dont kek

gray quarry
#

it's not too late to undo the implementation but whatever

misty aspen
halcyon moth
#

I don't remember any hoster having a field for custom args. It would be pretty dangerous for them. We found an exploit to add arbitrary args on Armahosts and they did not appreciate it :P

#

The Linux ones could maybe allow it because they're probably using Docker.

misty aspen
#

ope fair

full sonnet
tall pumice
#

it's model.cfg issue

#

well, at least i am suspecting it is. actually, i'll check

full sonnet
#

"cmAmmo" would be the source for it

#

I can see that source being used in airplanes and helicopters. But not in any tank MFD

#

If it is model.cfg, then its data.
And in 2.20 data I can't see it working either

tall pumice
#

ok, first things first, it works fine in the kamysh, which inherits from exactly the same stuff. except that there is z-fighting. alpha sorting would need to be refreshed, or draw index needs to be increased to "high" in model file

#

i remember now that i fixed this when doing the vehicle variant for the ws 1.1 update

#

what it should look like:

full sonnet
#

Tigris also doesn't work on 2.20 stable. So not a new issue

tall pumice
#

config side looks correct to me. it inherits everything from the base class as it should. animationsource is there, it's also the same smoke launcher weapon

full sonnet
#

model.cfg has two "mfd smoke" selections. That "hide" based on "Smoke_source" source
Tigris has "Smoke_source" as "revolving" on weapon "SmokeLauncher"

tall pumice
#

yea but that should be ok

full sonnet
#

Kamysh just inherits the same. And uses the same base model.cfg for that

tall pumice
#

the only real difference i see is that mfd_com_smk_x selections in tigris model is also in OctoVez selection. and it is also tied to the same bone "mfd_com_smk_1", "otocvez", "mfd_com_smk_2", "otocvez",

#

this could cause the rotation to fuck up

#

what i would try is to remove the OctoVez selection of those two mesh in the p3d file and try again

full sonnet
#

I don't know how that works.
If its a model.cfg issue, its 6 years old and I don't care right now.

tall pumice
#

it could be broken since tanks dlc added it, because at around the same time, the kamysh damage model was also broken :p (and fixed later)

#

two issues in model.cfg: "drivewheel", "", bone is duplicated, and in line 486 a ; is missing after "speed"

#

hah, i was right. the additional OctoVez selection is causing it

full sonnet
#

I'll make a ticket for reyhard 🀷

tall pumice
#

it can also be fixed with just removing the octovez link from the tigris skeleton: #dev_rc_branch message
but i would suggest to fix it in model and setting z bias to "high" to also fix the flickering issue. z bias can also be set to high on the kamysh model, to fix it there as well. ez, takes 20 seconds including opening the model and saving the changes : >

broken musk
#

just revisiting an old request @full sonnet , is an AI/group "AttackTargetChanged" event handler still not feasible?

full sonnet
#

If it wasn't feasible back then it still isn't.
If it just was that I didn't have time to look into it back then, then it might be different now

winter crescent
full sonnet
#

Is that offer still up? Cuz REST API is planned for after the next update πŸ˜„

torpid sand
full sonnet
full sonnet
#

I also considered for other cases anyway, to make a server side script eventhandler, that lets you specify in which slot a joining player should go by default.
Can also be used to assign players based on their playerID, to specific slots.
You can implement randomziation however you want in script, more configurable than I could ever make it with a config file.

if I make it scripted, then all the config stuff is obsolete.

fervent remnant
#

Why not simply:
Create a virtual spectator slot
Set skipLobby = 1 in description.ext
Then handle it however you like...

full sonnet
#

Because thats nonsense

misty aspen
waxen pumice
#

Where can I find more information on this feature?

Tweaked: Third-party on-screen action available in Spectrum Device view is now executable

I am not aware of it.

tall pumice
#

navid lod5 is missing camo selections πŸ₯²

grim lion
#

Http REST API? Please tell me more I'm listening... Lol

unreal arrow
full sonnet
#

So you can now use normal actions while holding a spectrum device?
That changelog entry is a bit unclear then πŸ˜„

waxen pumice
#

@tame wraith FYI
#dev_rc_branch message
This might effect CrowsEW because the default keybind is also used for recording bearing lines on the map.

unreal arrow
#

If you are near vehicle and getin shows then it will trigger the get in, so either get in and do it while inside or step away from vehicle

viscid onyx
#

You can also open the action menu (e.g. scroll) and then close it again (e.g. rightclick) to temporarily dismiss the screen-centre action. I think that will also stop the "currently selected action" button from activating it.

unreal arrow
#

No the scroll is and was always disabled when you use spectrum device

#

I just realised we have ability to detect the scrolldown menu if it is visible but no idea if an action is shown on screen

tame wraith
frozen pumice
#

looks like it passing relative path instead of just filename while looking in -mpmissions dir

unreal arrow
#

what directory your normal MPMissions is?

frozen pumice
#

just root

#

like default one

unreal arrow
#

and servers?

frozen pumice
#

"Servers" is just folder that contains profiles in root directory

unreal arrow
#

Arma3
.. MPMissions
.. Servers
.. .. VTG
.. .. .. mpmissions
this should work

frozen pumice
#

yes I have exactly same

#

but it doesnt

unreal arrow
#

It probably made the directory for you already, it creates it if doesnt exist check in Arma3 dir there should be Servers

#

What is your server config

#

template=

frozen pumice
#

just one mission, to make it default instead of lobby

unreal arrow
#

That doesnt have VTG_New_Paralel_147_v3.vt7

frozen pumice
#

yes, it doesn't. Should it be here?
without -mpmissions all mission listed in <arma>/mpmissions work

unreal arrow
#

Where is it now what config?

#

why is server looking for VTG_New_Paralel_147_v3.vt7 if it is not in config?

frozen pumice
#

Was selected via #missions

unreal arrow
#

do you start it with -mission param or something?

frozen pumice
#

Nope

#

#missions shows all missions from -mpmissions directory, but they cannot be selected

unreal arrow
#

I havent checked if #missions is supported for the new folder option

#

so if you type #missions what is showing

frozen pumice
#

all missions from MPMissions + from directory specified in -mpmissions

unreal arrow
#

Aere you in the lobby when executing #missions?

#

lets make it simple, could you write down in the ticket detailed repro so I can check properly

frozen pumice
#

sure

#

thank you

unreal arrow
unreal arrow
frozen pumice
unreal arrow
#

yes

frozen pumice
#

#mission <missionName> works btw

unreal arrow
frozen pumice
#

looks like I said before, lobby selector tries to set mission by full path (truncated)

unreal arrow
#

there is some parsing bug that works with short name but fails on longer names

frozen pumice
#

works with custom

unreal arrow
#

yeah I will look tomo too late now, it is folder name for some reason cannot be too long, the mission name can

0:56:09 Mission T197336_blahblahblahblahblahblahblah.VR read from bank.

#

Yep, -mpmissions=cus\tom also works

#

there is bug in parsing pretty sure I know why it does this

frozen pumice
#

if found another issue related to this, but not sure if it fixable on your side.
all missions added by this option are not listed in BE Rcon

#

rcon shows missions from MPMissions only

#

but #mission <name> works via RCon as well

#

even if mission not listed in RCon's missions

#

should I create another task on bugtracker?

unreal arrow
#

Yes, I will discuss this with @full sonnet afterwards

frozen pumice
unreal arrow
gray quarry
#

oop

waxen pumice
unreal arrow
#

You zoom in with RMB no?

tame wraith
#

I believe he means our mods custom function that "zooms in" on the highlighted spectrum. (Essential changing the em_min and em_max to a smaller range). So we might need to rethink using that key when in the spectrum device display πŸ˜…

unreal arrow
#

gotcha, just to clarify this only happens when you have another action displayed right?

tame wraith
#

@waxen pumice ^
(I have not tested it myself yet)

waxen pumice
waxen pumice
#

Not sure if this changed behaviour would also affect the Contact DLC gameplay.

unreal arrow
#

when spectrum is opened now it zooms in if you hold RMB

#

it wont affect Contact because Contact uses Contact's assets

waxen pumice
unreal arrow
#

you press RMB it shows big display, you press and hold it it zooms in just like scope in weapon

waxen pumice
unreal arrow
#

yeah I got that

waxen pumice
#

@tame wraith am I right that your input scheme is directly taken from the Contact DLC single player behaviour (I guess for ease of familiarization)?

unreal arrow
#

\a3\UI_F_Contact\UI\RscInGameUI these are Contact's scripts

waxen pumice
#

Yeah. I forgot that it has a separate (albeit very similar) script.

unreal arrow
#

vanilla uses a3\UI_F_Enoch\UI\RscInGameUI

#

the scripts were just copied not sure if anything was altered in the process

waxen pumice
unreal arrow
#

I will have a look if I can hide those action icons instead of enabling them

#

I also added shownAction script command that tells you if action icon is shown on screen

waxen pumice
tame wraith
waxen pumice
tame wraith
unreal arrow
#

no scroll is still disabled

#

middle mouse button is also Action just as spacebar

waxen pumice
tame wraith
#

yeah okay. So you can get that menu to show, but I assume when its shown you still can't navigate it with scroll like usual until you close the spectrum device?
So that can cause a bit of confusion, even ignoring our mod.

but yeah, we can find another key to use instead if needed

waxen pumice
#

@tame wraith in 2.20 (current stable) the vanilla menu also shows when you press middle-mouse-button (which is confusing enough).
But the action is never triggered when pressing middle-mouse again. It keeps zooming in into the spectrum with every middle-mouse button click.

In 2.21 some middle-mouse presses will zoom in into the spectrum and some will cause a vanilla menu action to trigger (if it was shown).
Workaround is to always cancel the vanilla menu with RMB every time middle-mouse spectum zoom was used.

#

Maybe CrowsEW using middle-mouse just needs changing to Ctrl+Middle-Mouse to sort things out (would somewhat match Shift+Middle-Mouse for the spectrum unzoom).

tame wraith
#

ah gotcha. Yeah that is not ideal.

Yeah, changing the default key is probably easiest.

#

Assuming the vanilla menu is not triggered when using combination of keys even if it includes middle-mouse.

waxen pumice
#

Only problem is that even Ctrl+Middle-Mouse let's the vanilla actions take notice of the middle-mouse press.

#

Ctrl+Numpad+ and Ctrl+Numpad- seem to still be available for something like spectral zoom in and out.

#

Because I totally see that KKs change to make the actions work, while the Analyzer is open, makes perfect sense.

tame wraith
#

yeah okay. Hmm, makes it more difficult. I kinda wanted to be able to do it without removing your hand from the mouse. As it would often be something you would do on the fly while aiming around scanning/tracking etc.

#

But I guess changing the default to something non-conflicting, and then allowing players to rebind it as a standard CBA keybind might be the way to go. Then each can figure out what works for them.

waxen pumice
tame wraith
#

That is a good shout

waxen pumice
#

I'll make a test implementation to see how it feels.

tame wraith
#

But might want to redo the "zoom" to be smaller increments centered around the selection, instead of being the entire selection. To be more of a scroll action feel of "zooming"

waxen pumice
unreal arrow
# frozen pumice https://feedback.bistudio.com/T199178

So the BE RCon uses own DLL to look into MPMissions directory, so it has no idea if game uses custom directory. The clue is

command starts without # it has BE internal handling
command starts with # it is passed over to Arma 3 and handled there

I could make Arma 3 print out those missions, but, the mecjaninsm that allows Arma 3 to print arbitrary message to RCon is currently broken in the BE DLL. If it gets fixed I will implement something like #mpmissions

frozen pumice
#

that's sad. Ok, so we are waiting for fix from BE side?

gray quarry
#

sounds like a hard ask

unreal arrow
#

I found terrible hack how to do it and I like it

misty aspen
#

based

unreal arrow
# unreal arrow I found terrible hack how to do it and I like it
#mpmissions
Player #0 SERVER (192.168.0.30:2302) connected
(Command) SERVER: mpmissions\
(Command) SERVER: T197336_blahblahblahblahblahblahblah.VR
(Command) SERVER: old.T182166vehicle.Stratis
(Command) SERVER: oldT197336_Dedicated_Server_language_Startup_Parameter_Not_Working.VR
(Command) SERVER: old_restartNoRE_repro.VR
(Command) SERVER: restartNoRE_repro.VR
(Command) SERVER: Silent_Bullet_Test.Altis
(Command) SERVER: T182166vehicle.Stratis
(Command) SERVER: T197336_Dedicated_Server_language_Startup_Parameter_Not_Working.VR
(Command) SERVER: temp_restartNoRE_repro.VR
(Command) SERVER: test_Silent_Bullet_Test.Altis
Player #0 SERVER disconnected```
gray quarry
#

hm

#

bandaging features at its finest :v

unreal arrow
#

That could change if BE dll gets updated

gray quarry
#

even with the industry credentials, are be people hard to get in touch with?

waxen pumice
tame wraith
unreal arrow
#

I am looking into default actions not showing rather than enabling so bear with me

full sonnet
unreal arrow
#

i have it 95% finished everyone is going to love it

unreal arrow
unreal lava
#

Been wanting a way to hide/remove actions for a while blobcloseenjoy

unreal arrow
#

Whoa, it actually works pretty good. hideActions [91] hides all user added actions leaves only engine actions, hideActions [-91] does the opposite

#

Best feature? hideActions [0] hides ALL actions but it is still possible to execute things like reload R or open inventory I

raven mist
#

I'm a little out of the loop on the action changes- am I understanding what I am reading right that this would allow us to hide default actions?

unreal arrow
#

yeah basically but only for player, you cannot target specific vehicle, because even vehicle actions are collected and added to payer when player looks at a vehicle

raven mist
#

That's huge

#

We've had dozens of requests over the years to have a setting that would remove the inventory action

#

Would finally be able to do that

full sonnet
#

So for Crows EW.
If you have a spectrum device in hand, they can just disable all actions, and the "Get in" vehicle one won't show up?

unreal arrow
#

No, I will hide all actions when device is up, anyone can then ovewrite it if they need action enabled. Before action would show but none was executable

ocean sail
#

Can we expect a button in the game settings to hide actions from the actionmenu that have a button on the keyboard?

unreal arrow
#

no you can do it yourself wth the new command

ocean sail
#

in all scenarios? even for example king of the hill

unreal arrow
#

You could request that @trim crane adds it as an option

trim crane
#

How I imagined this implemented, through an event handler

#

Alternatively it could be attached to either target or caller (and called when something wants to show an action on a target or a caller tries to show any action)

#
player addEventHandler ["HandleEngineActionShow", {
    params ["_action", "_unit", "_target"];
    _action in ["UAVTerminalReleaseConnection", "SwitchToUAVDriver", "SwitchToUAVGunner"]; // true for handled
}];
unreal arrow
#

The actions are collected from all over the place to be added to player, those that are about to get added have another filter where you can hide actions you supply (see shownAction enum), hide all actions but the one you supply, hide all or hide none

#

no event handlers

trim crane
#

Yeah those events would be called each frame for tons of actions

#

boom Performance boom

#

Limiting actions just for player might not be ideal either, you often can have an AI do an action for you instead, I assume this implementation will still allow for that

#

So say you did hideActions [-91] to block everything engine, but then you can ask AI to say open a door that you can't open yourself

#

Or are config actions also considered user actions? πŸ€”

unreal arrow
#

So, currently this is pretty safe implementation giving you ability to decide what to show to player. I am not going to go beyond this because 2.22 is too close

trim crane
#

If it is, bad example then. Say you want to block "Start timer" on a satchel charge like that, you still could start it through AI actions, right?

lucid totem
#

if AI is local (and you can give them orders) there is a chance that the local machine disables all actions everywhere, but I'll let KK answer that one 😬

unreal arrow
#

you could execute any action with action command they are unaffected

unreal arrow
trim crane
#

I assume you provide an array of actions you want to disable, right?

unreal arrow
#

yep it is either [1,2,3..] or [-1,-2,-3...] or [0] mix and match results in script error. or []

trim crane
#

Got it, you just showed a single number in your examples so I wasn't sure

#

I want to disable "UAVTerminalReleaseConnection", "SwitchToUAVDriver", "SwitchToUAVGunner" actions from mouse wheel menu in my mission to unclutter it (you can do all these in UAV terminal dialog)

#

Being able to supply strings instead of action IDs could be helpful too

#

Do we even have that action ID list anywhere exposed to us?

unreal arrow
#

hideActions [163, 165, 166 ]

trim crane
#

I still wonder if its possible to implement it using a target/caller argument πŸ€”

unreal arrow
#

Being able to supply strings instead of action IDs could be helpful too
Dunno how I feel abou tit

#

The filtering happens in the end, to add what you ask it has to be done in multiple places so no

trim crane
#
player hideActions ["StartTimer"]; // Can't start timer on any satchels
{_x hideActions ["StartTimer"];} foreach units group player; // You can't select the action through AI control menu
_satchel hideActions ["StartTimer"]; // Can't start timer on that particular satchel
unreal arrow
#

gimmie the repro I'll have a look

#

Just to check, I suspect the units actions collected and added to player and filtering happens at the last moment so they wont show, but better be sure

trim crane
#

(Nevermind)

unreal arrow
trim crane
#

Forgot you have to add the satchel with addOwnedMine to bot for him to have the actions

ocean sail
#

When I ordered subordinate to deactivate mine then SPD VERT %.0f str_ui_speed_vertical_freefall text shown under his icon

unreal arrow
trim crane
#

Making a repro script, almost done

trim crane
# unreal arrow still I am curious if it will be axed
bot = group player createUnit ["B_Soldier_universal_F", player modelToWorld [0,2,0], [], 0, "CAN_COLLIDE"];
[bot] joinSilent group player;
doStop bot;

satchel = createMine ["SatchelCharge_F", player modelToWorld [0,2,0], [], 0];
satchel2 = createMine ["SatchelCharge_F", player modelToWorld [0,10,0], [], 0];

bot addOwnedMine satchel;
player addOwnedMine satchel;

bot addOwnedMine satchel2;
player addOwnedMine satchel2;

player addAction ["hideActions [61];", {
    call compile 'hideActions [61];'; // Can't start timer on any satchels
}, 0, -100, false, true, "", "_this == player"];

player addAction ["[NEW] player hideActions [61]; Forbid start timer for player", {
    call compile 'player hideActions [61];'; // Can't start timer on any satchels
}, 0, -100, false, true, "", "_this == player"];

player addAction ["[NEW] bot hideActions [61]; Forbid start timer for the bot", {
    call compile 'bot hideActions [61];'; // You can't select the action through AI control menu
}, 0, -100, false, true, "", "_this == player"];

player addAction ["[NEW] satchel2 hideActions [61]; Forbid start timer on second satchel specifically", {
    call compile 'satchel2 hideActions [61];'; // Can't start the timer on second satchel
}, 0, -100, false, true, "", "_this == player"];
#

Actions for current implementation + my suggested one which takes either target or caller

#

F2 -> 6 to check the timer action

unreal arrow
leaden heron
unreal arrow
#

It hides unwanted actions, doesnt disable them. For example inventory bound to I is an action called Gear. when you are next to vehicle it appears and you can open inventory with either middle mouse button or spacebar. If you hide it, neither middle mouse button no spacebar would open it, but it will still be available via I

#

If action is bound to a key chances are it will be executable by that key

analog fractal
#

oh neat we can finally hide the artillery computer properly in ACE

unreal arrow
unreal arrow
#

@lucid totem could you please stick WIP on both commands, what I added to wiki might need to be tweaked

lucid totem
#

on hideActions/hiddenActions, sure thing

#

done

lament crow
tame wraith
#

That is pretty neat. Could potentially also allow to add "jamming" for base-game explosives "touch-off" action. e.g. hide the action on players entering a jamming radius of effect.
Although might also be smarter ways to deal with that, was just random #showerthought

unreal arrow
# unreal arrow ```RCon admin #0 (127.0.0.1:50200) logged in #mpmissions Player #0 SERVER (192.1...
127.0.0.1
Enter the game server's port:
2304
Enter the RCon password:
123

Logged in successfully

RCon admin #0 (127.0.0.1:63646) logged in
missions
Missions on server:
old.T182166vehicle.Stratis.pbo
oldT197336_Dedicated_Server_language_Startup_Parameter_Not_Worki
temp_restartNoRE_repro.VR.pbo
test_Silent_Bullet_Test.Altis.pbo

#mpmissions
Missions on server (mpmissions\):
MORE\T197336_blahblahblahblahblahblahblah.VR
old.T182166vehicle.Stratis
oldT197336_Dedicated_Server_language_Startup_Parameter_Not_Working.VR
old_restartNoRE_repro.VR
restartNoRE_repro.VR
Silent_Bullet_Test.Altis
T182166vehicle.Stratis
T197336\T197336_Dedicated_Server_language_Startup_Parameter_Not_Working.VR
temp_restartNoRE_repro.VR
test_Silent_Bullet_Test.Altis

BattlEye came through

unreal arrow
#

check out MORE\T197336_blahblahblahblahblahblahblah.VR
this pbo is inside MPMissions\MORE
to launch it
#mission MORE\T197336_blahblahblahblahblahblahblah.VR

unreal arrow
#

Which is best?

hideActions ["HideSelected", 1, 2, 3]
hideActions ["UnhideSelected", 1, 2, 3]
hideActions ["HideAllButSelected"]
hideActions ["UnhideAllButSelected"]

hideActions ["HideSelected", [1, 2, 3]]
hideActions ["UnhideSelected", [1, 2, 3]]
hideActions ["HideAllButSelected", []]
hideActions ["UnhideAllButSelected", []]

"HideSelected" hideActions [1, 2, 3]
"UnhideSelected" hideActions [1, 2, 3]
"HideAllButSelected" hideActions []
"UnhideAllButSelected" hideActions []
tall pumice
#

2nd? i would prefer array style boxed numbers

unreal lava
#

+1 on leftarg/rightarg, seems ideal for two arg commands

unreal arrow
#

@trim crane ?

#

@lucid totem ?

#

@harsh orbit ?

harsh orbit
#

2nd I guess?

raven mist
#

Ditto on 2nd

#

3rd is cool though too

trim crane
#

Other SQF commands often take upper case strings, could fit here too

#

"CAN_COLLIDE" and such

lucid totem
#

I vote ["string", [values]]
I would use a different name on third otherwise

trim crane
#

Also I think the command should accept readable action names alongside number IDs

lucid totem
unreal arrow
#

It will be case insensitive internally

#

2nd it is

trim crane
#

@unreal arrow Any chance for contextual hiding by providing target/caller as argument?

unreal arrow
#

Ok, the action has target so theoretically you can provide target and only filter actions added from target, but

#

if you want to track every target you have to store hideActions for every target, and that is not happening

#

it is stored in player brain as the actions are displayed for player

trim crane
#

Hmm

#

Can't you store hidden actions list in the entity itself?

#
_entity hideActions [61];
```Player checks if the action ID 61 has to be shown, if it has target, check if target has 61 in its hidden actions array
#
player hideActions [61];
```Player checks if the action ID 61 has to be shown, check if the player itself has 61 in its hidden actions array
unreal arrow
#

no it will add too much complexity, it is alrready becoming quite complex with ability to set reset some actions while leaving other actions for other mods to modify

gray quarry
#

sounds ambitious

unreal arrow
#

This is why I like 2nd syntax, we can expand arguments if needed

trim crane
#
hideActions createHashMapFromArray [
     ["HIDE", [1,2,3]]
    ,["UNHIDE", [4,5,6]]
    ,["HIDE_ALL_EXCEPT", [7]]
    ,["UNHIDE_ALL_EXCEPT", [8]]
];
#

But yeah I'm OK with 2nd syntax

#

Still think the actions should be addressed by their name so the code is more readable

unreal arrow
trim crane
#

Personally I'd just go the entity oriented approach

#

This makes the most sense, how often do you need to disable ALL actions? Not sure. How often do you want to disable specific action on that specific entity? Pretty sure that's what people are gonna use the most

unreal arrow
trim crane
#

Sure you can do defines for presudo enums but its still ugly, the actions have names, it makes sense to let scripters use the names

#

Not a big deal for me personally but I just think this is right

trim crane
unreal arrow
#

I started this command BECAUSE I need to disable all actions

#

initially it was going to do just this disableAllActions

#

but then this would be a waste of command with great potential

#

shownAction shows enum you can always find out what number you need without going to wiki