#arma3_feedback_tracker

1 messages ยท Page 13 of 1

gaunt depot
#

but this issue happens when collisionShape is same, for movement forward it will be shifted forward and such

gaunt depot
#

Threw together a scheme, not sure how clear it is

#

Both are movement with same speed, no matter how much you rotate your character you won't really go faster

#

but your velocity will rise suddenly because it is calculated wrong, which messes up MP prediction/extrapolation

#

col_velocity1 = col_velocity1 also

#

Thus my idea, calculate unit velocity by collision shape delta instead of entity center delta

#

Maybe check if collision shape changed recently (due to animation change), in such case fall back to center delta

azure crane
solid marten
#

is stringtable.xml exported with the mission?

azure crane
#

Yes

#

I tried naming it stringtqble.xml and Stringtable.xml in case the capital S would matter but it did not change anything. XML is in the PBO, mission.sqm has the ScenarioData class with string keys

#

I haven't tried packing it manually with PboManager or Tools, only the export function.

solid marten
#

and it it is unpacked does it still not work?

gaunt depot
#

Just realized what you meant. I wasn't comparing collision shape positions but collision shape types

#
collisionShape = "A3\anims_f\Data\Geom\Sdr\Perc_Wrfl.p3d";
collisionShape = "A3\anims_f\Data\Geom\Sdr\Perc_Mrun_Slow_Wrfl.p3d";
#

this stuff

solid marten
#

ah

sinful kettle
# gaunt depot

Idk what you're trying to show here but that issue has nothing to do with the collision shape

#

Also collision shape follows the center (as if it's attached to the center)
It's not a separate thing to calculate velocity from

gaunt depot
sinful kettle
#

I haven't looked at the code but based on your videos, the game calculates an angular velocity based on how fast you rotate the mouse
And then adds this angular velocity as a linear velocity to remote objects

gaunt depot
#

Hmm, I haven't checked angular velocity values

sinful kettle
#

Which causes inconsistent velocities and network interpolation

sinful kettle
gaunt depot
#

Then its all clear

sinful kettle
#

It's an internal thing probably

sinful kettle
#

Collision shape follows you

#

Not the other way around

gaunt depot
gaunt depot
sinful kettle
#

I'm not

gaunt depot
#

This is also when you can "sink" into walls when moving sideways

#

And then you pop out of them when you move the other direction

#

Not sure if this system was in OA, but this is also the reason why moving forward when stuck moves you backwards, not forwards like it was in OA

sinful kettle
#

I was planning on fixing it but never got to it

gaunt depot
#

I actually depicted collision shape position wrong in my diagram, it shifts backwards when you move forwards

#

I don't even think its gradual, it is instant change

gaunt depot
#

Collision shape moves forward even when you move backwards

sinful kettle
#

By "when you move backwards" are you talking about the keyboard?

#

Because as I said collision shape follows you

devout wave
sinful kettle
#

You move backwards, collision shape moves backwards

azure crane
sinful kettle
gaunt depot
#

I don't think its about velocity but direction

#

back in OA it moved you the opposite way from A3

#

Here is a test you can do to see what I mean

#

When you move backwards you sink into wall because your collision shape is shifted forward

devout wave
gaunt depot
#

but as soon as you press backwards again you get pushed out of it because your now centered collision shape is inside the wall AND you attempted to move

gaunt depot
sinful kettle
#

All I can tell you is that, from what I remember, this is how things worked:

  1. You try to move, let's say forward
  2. That animation has an rtm velocity
  3. The game creates a "potential state" based on that velocity and where you would be
  4. When you collide with the rtm shape:
    A. If you didn't collide before, it uses the normal and your old pos to put you at a new pos
    B. If you did collide, it moves you in opposite direction of the velocity
gaunt depot
sinful kettle
#

And none of this has anything to do with that teleporting issue

gaunt depot
#

then after step 3 you get back to step 1 and sink into wall again all over

#

And I'm 100% certain game rotates your character around your collision

sinful kettle
gaunt depot
#

to move backwards

#

Try it yourself, you can sink into the wall because moving backwards also shifts your collision shape forwards

#

This is how people look through walls btw, game lets you get inside walls like this

#

Free wallhacks

sinful kettle
#

I know

gaunt depot
#

I'm demonstrating this to prove that your collision shape instantly moves\shifts\swaps to forwards one when you do movement

#

Then next step that leads to the issue I want to get fixed, your character rotates around your collision share and not around entity center

#

BUT velocity is calculated by entity center delta

sinful kettle
#

Well I know all this, but what does collision shape have to do with this?

#

Because it doesn't

gaunt depot
#

Move forward, look down, start rotating left and right

#

See where visual "swirl" center is

#

its in front of you

#

right where your collision shape is

#

Visual proof of this

#
onEachFrame {
    hintSilent ([
        speed player toFixed 1
        ,vectorMagnitude velocity player toFixed 1
        ,vectorMagnitude velocityModelSpace player toFixed 1
        ,((getPosWorld player distance2d pos) / diag_deltaTime) toFixed 1
    ] joinString "\n");
    pos = getPosWorld player;
    drawIcon3D ["\A3\ui_f\data\map\groupicons\selector_selected_ca.paa", [0,0,1,1], ASLtoAGL pos, 0.4, 0.4, 0, "pos"];
}
#

Script proof of this, this is where huge velocity comes from, engine rotates you around different point and not your getPosWorld

#

Exec script, move forward, quickly turn mouse left and right

sinful kettle
#

Which part of that script is showing that exactly?

gaunt depot
#
        ,vectorMagnitude velocity player toFixed 1
        ,((getPosWorld player distance2d pos) / diag_deltaTime) toFixed 1
```hints same number
#

your velocity is delta between your entity position this and previous frame

sinful kettle
#

Sure

gaunt depot
#

thus proving that game rotates you around your collision shape and not your entity position

#

because it moves your entity position with this rotation

sinful kettle
gaunt depot
#

because this is velocity of your center

#

not your character

#

your character rotates around collision shape and that's why you never really go this fast in reality no matter how much you jerk your mouse

gaunt depot
#

that drawIcon3d is there so you can see the distance between this "swirl" and the icon

sinful kettle
#

None of this makes any sense to me because you don't rotate around the collision shape

gaunt depot
#

When you stand, look down and quickly rotate visual swirl center of the ground is exactly at that drawIcon3D icon

#

When you go foward and do the same the swirl is in front of you

sinful kettle
#

If you want a better proof just make your own collision shape that's offset by a few meters
You'll see that it won't change anything compared with current rotation (I mean the velocities)

gaunt depot
#

where collision shape is

gaunt depot
sinful kettle
#

Just open a vanilla collision shape in object builder and move it... meowsweats

gaunt depot
#

isn't it binarized? ๐Ÿค”

sinful kettle
#

It is but you can debin it "for education purposes" I guess meowsweats
It's a simple model. You can make it in object builder in a few minutes
You need like 20-30 selections too iirc

gaunt depot
#

Sorry if I sounded too mean with my explanations btw. I meant no offence, just rushing with the replies before going off to bed.

gaunt depot
#

Did you base it off Perc_Wrfl_offset.p3d?

sinful kettle
#

no. it's from one of my mods

#

I just moved it a bit

gaunt depot
#

alright

sinful kettle
#

Also remember to use diag exe to check the collision shape

gaunt depot
#

I see collision change with your models but rotation is now done around entity center again

#

Your models lack something that makes the game rotate you around them

#

My repro hint no longer shows large velocity when rotating

#

"A3\anims_f\Data\Geom\Sdr\Perc_Wrfl_offset.p3d"

#

This is the shape that makes you rotate around it

#

I see the string inside anims_f_data.pbo but when I unpack its not there thonk

sinful kettle
#

It doesn't make any sense to me blobdoggoshruggoogly
My collision shape shouldn't be any different than vanilla ones
But I'll check the code tomorrow
If the culprit is the model, that's what should be fixed

gaunt depot
#

try saving them with/without autocenter?

sinful kettle
#

Well if you open my models you'll see their origin is not 0,0,0

gaunt depot
#

*compiling

sinful kettle
gaunt depot
#

second one I couldn't figure out, but it let me go through walls

sinful kettle
#

Then it's correct

gaunt depot
#

but in both cases it was making me rotate around center

sinful kettle
gaunt depot
#

and velocity was always 4 m/s no matter how much I move the mouse

sinful kettle
#

Just use diag exe to see what's going on with collision shapes

gaunt depot
#

With vanilla it rotates you around it and you get 30-40 m/s velocities

#

not sure what diag exe could show me, there is something in model that needs to be there

#

or you mean show the rotation?

#

visually

sinful kettle
#

Shows you the collision shape

sinful kettle
#

Which causes weird things

#

Afaik there is no such collision shape for moving animations think_turtle

gaunt depot
#

rotating around center instead of collision shape made movement feel OA-ish a bit

#

Wasnt there a dropbox with diag exe similar to perf and prof?

sinful kettle
#

No

#

It's part of dev branch

solid marten
azure crane
gaunt depot
#

I don't think it shows collision shape

#

Oh it does show something now

#

Red cylinder thingy?

uncut briar
#

Yes

#

That's the collider

gaunt depot
#

Well when you rotate in place it moves back with its center being aligned with your entity center

#

Otherwise it is forward ahead and you rotate pretty much around it

gaunt depot
#

Mikero's and cpbo refuse to extract it from anims_f_data.pbo for some reason

#

and I can't debin it, tools I had don't work with it

#

Looks like this rotation center is something inside collision shape model

#

Just need to figure to prove the theory

#

but lots of evidence already pretty much proves it

#

I see there is axis string inside that p3d, a selection name?

#
createSimpleObject ["A3\anims_f\Data\Geom\Sdr\Perc_Wrfl_offset.p3d", getPosWorld player] selectionPosition "axis"
``` => `[-0.0360789,-0.0432948,-0.828793]`
#

Yeah

#

its 2 points in memory LOD

#

well there's the proof

#

Move forward with a rifle in hands

hallow sun
#

Would this fix also block the players from doing that backwards leaning wallglitching ? blobcloseenjoy

solid marten
#

STAY AWAY FROM THE WALLS, STRANGER!

#

Intredasting observation. Killed unit has rifle stored in simulated weaponholder and is deleted with the body unless the rifle is taken first, then this weaponholder is deleted immediately. If you try to put rifle back, it will put it into ground weaponholder that looks like part of the unit but is not, and when unit is deleted this weaponholder stays behind

azure crane
#

I think there is something wrong with the FlyInHeight command now? Unless the position is no longer "relative to the pilot" but arbitrary or whatever was changed in 2.14. I'm trying this with a Hoodlum and with flyInHeight 1 to 9 it tries to stay below 10 meters, but with flyInHeight 10 and higher it immediately goes to 50m+. I check it with ASLToAGL eyePos driver _aircraft; and it is way off the given parameter obviously. Seems to be an issue with other helicopters too. Normal or alternative syntax - doesn't matter, same outcome

#

unless it was never fixed clueless

near cedar
#

i kinda feel like it worked at some point with helicopters, but could never tell if it was working with planes

hallow sun
near cedar
#

Ah yeah

#

Didn't it follow underwater terrain as well?

gaunt depot
#

Also new diag exe feature idea, draw animation state rotational axis alongside collision shape geometry

gaunt depot
#

Checked A3 alpha, it had different coll shapes, you still can peek into the wall but not as much, it might be same as OA

#

Already an issue in Arma 3 1.10

gaunt depot
#
hs = createHashMap;
    
onEachFrame {
    private _shape = getText(configFile >> "CfgMovesMaleSdr" >> "States" >> animationState player >> "collisionShape");
    private _shape2 = getText(configFile >> "CfgMovesMaleSdr" >> "States" >> animationState player >> "collisionShapeSafe");
    private _axis = hs getOrDefaultCall [toLower _shape, {
        private _m = createSimpleObject [_shape, getPosWorld player];
        private _a = _m selectionPosition "axis";
        deleteVehicle _m;
        _a;
    }, true];

    private _axis_offset = [
         -(_axis select 0)
        ,-(_axis select 2)
        ,-(_axis select 1)
    ];

    hintSilent ([
        speed player toFixed 1
        ,vectorMagnitude velocity player toFixed 1
        ,vectorMagnitude velocityModelSpace player toFixed 1
        ,((getPosWorld player distance2d pos) / diag_deltaTime) toFixed 1
        ,_shape
        ,_shape2
        ,_axis
    ] joinString "\n");
    pos = getPosWorld player;
    drawIcon3D ["\A3\ui_f\data\map\groupicons\selector_selected_ca.paa", [0,0,1,1], ASLtoAGL pos, 0.4, 0.4, 0, "center"];
    drawIcon3D ["\A3\ui_f\data\map\markers\military\destroy_ca.paa", [1,0,1,1], player modelToWorldVisual _axis_offset, 0.4, 0.4, 0, "axis"];
}
```Updated repro script to also attempt to show rotational axis
#

Doesn't show it exactly it feels like game divides it by two or something

#

Also uses Z as Y from the selection

#

and it seems axis is just a single point in the collision model

gaunt depot
#

Its also evident and there is some mess going on with axis being all over the place for some animations

#

Try going forward-left and forward-right standing and kneeling, notice how axis is moved forward only when kneeling but not when standing for some reason

#

Its like real rotational axis is half Y(Z) and then it shifts left and right depending on rotation direction

#

Something is going on under the hood and I have no idea why

#

Still, no matter how rotation is done, I believe that velocity should be calculated around this axis movement somehow, to avoid broadcasting large values when in reality you didn't really move 30 m/s like velocity could show.

solid marten
#

getCorpseWeaponholder to compliment getCorpse ๐Ÿ‘ or ๐Ÿ‘Ž

gaunt depot
#

Primary and secondary

#

But otherwise I vote ๐Ÿ‘

#

Having to add Put event handlers on units to get these WHs on death right now

solid marten
#

no there is only one

#

or you mean launcher?

gaunt depot
#

Yes, launcher

solid marten
#

hah havent tested with it

#

do both have getCorpse?

gaunt depot
#

Should be, let me double check

solid marten
#

getCorpseWeaponholderS then

gaunt depot
# solid marten do both have getCorpse?
allMissionObjects "WeaponHolderSimulated" apply {[weaponCargo _x, getCorpse _x]}
``` => `[[["arifle_MX_ACO_pointer_F"],2b3a58b2f00# 168854: b_soldier_01.p3d],[["launch_NLAW_F"],2b3a58b2f00# 168854: b_soldier_01.p3d]]`
#

yeah both point to same corpse

solid marten
#

nice, so will be array then

gaunt depot
#

Maybe getCorpseWeapons?

#

for shorter name

solid marten
#

no because there could be in inventory some

#

confusing

gaunt depot
#

getCorpse shouldv'e been getWeaponCorpse then though

solid marten
#

it is the opposite of getCorpse

#

which takes weaponholder as argument

solid marten
#

lets not start complicating stuff

gaunt depot
#

getCorpseLoot?

#

samely misleading though

#

Hmm, do you drop your guns the same way when you're unconscious? ๐Ÿค”

alpine tulip
#

Uncon shouldn't leave weapons from ragdoll

gaunt depot
#

Yeah, they're part of ragdoll

#

just spinning around your hands

solid marten
#

dropped weapons is an array indeed. but it doesnt define specific order so this command will just push into array

#

dunno if possible to rely on any order

gaunt depot
#

If you need order you can check if weapon is primary or secondary by its type

solid marten
#

Actually, even though this is open array it is limited to only 2 weapons

for (int i=0; i<=1; ++i)

I guess we are ok

alpine tulip
#

I know this is just a nitpick but seems -noLand makes the process name Model viewer

azure crane
#

Especially when flying at low speed. But in my case the "hole" between 9 and 50 meters happens even on flat terrain with no waypoints given

devout wave
dreamy bane
#

is it just me or was it so at some point that script errors would not show up in some places like eachFrame event ?

sinful kettle
#

some errors don't show in unscheduled env

dreamy bane
uncut briar
#

Isn't it only nil being passed to commands?

#

Which is valid use case

dreamy bane
#

i think the question is more of where script errors are shown, not which commands show them

sinful kettle
dreamy bane
#

nulls passed to commands dont seem to report error either

gaunt depot
#

Honestly I wish there was a way to flip this for debug purposes

#
diag_reportNils BOOL;
```or something like that
dreamy bane
#

or showAllScriptErrors bool

alpine tulip
#

fixAllErrors

gaunt depot
#
playArma4;
strong salmon
#

I wish there was a prompt saying "Good try" when you enter those x)

gray wharf
#

Generic error in expression: fixEverything; lol no

sinful kettle
outer frigate
#

is there a possibility of disabling filepatching while game is loaded?

uncut briar
#

No

outer frigate
#

sad

gray wharf
#

No

dreamy bane
uncut briar
#

But it makes little sense

dreamy bane
#

how so?

uncut briar
#

Only thing not shown is nil stuff

#

And that's valid behaviour of SQF.

#

It just differs between schedule and unscheduled

dreamy bane
#

well idk about that, just would like "full" errors to be shown

#

ok

#

if its just that I understand but still handy to have all errors seen

uncut briar
#

But arguably it's not an error.

#

So all errors are shown now.

dreamy bane
#

imo if intent is to pass value to command and you accidentally pass nil then it's error

#

I mean if nil is invalid input

uncut briar
#

But what if you intentionally pass nil to short circuit it and do nothing.

#

You could do so since forever, it's valid SQF.

dreamy bane
#

well i understand that, and that's why i suggest a command to change the behaviour, for testing purposes

uncut briar
#

it would slow the runtime then

dreamy bane
#

no backward compatibility problems then

#

its ok if its slower as its only used for testing

#

I guess you meant the new if checks...

uncut briar
#

It seems to be part of the context so maybe it wouldn't have additional cost.

#

I guess the command could access current context and flip the bool or smth

solid marten
#

Is there a command that tells you if vehicle is burning

azure crane
#

isBurning?

#

or getBurningValue

gray wharf
#

I don't think so, but if you wanted to overload isBurning or inflameโ€ฆ :3

solid marten
solid marten
gaunt depot
solid marten
#

doesnt work like this it is not simple on off effect

gaunt depot
gaunt depot
#

But maybe its just a life time of a particle emitter?

solid marten
#

random between min and max from config

gaunt depot
#

Or sleep; deleteVehicle _emitter; in some script?

solid marten
#

you can always destroy without effect and add own emitter and explosion

#

do vehicles only have 2 choices for respawn? base or where it died?

gaunt depot
#

Never ever used vehicle respawn ๐Ÿค”

unborn acorn
desert trench
#

is it considered a bug/worth to report that handleDamage doesnt work with providing directly the function name?
_x addEventHandler ["HandleDamage",FUNCTION];

#

(not sure if more EH types are affected)

sinful kettle
#

I don't think that's correct

#

how did you test it?

#

there is no such thing as function. doing _x addEH [..,{}] is no different than code = {}; _x addEH [..,code]

#

maybe by "not work" you mean it doesn't override the damage as you expect it to

gaunt depot
#

So if its added earlier than you have the variable or you set\change variable later, EH wont change

desert trench
#

Our existing setup works with {_this call function} but not with just function.
I will check in a reduced setup in VR and report back

sinful kettle
#

your function probably has an exitWith or something

desert trench
#

that might be the case indeed. we have multiple HD setups, so need to check their setup

#

ok thats the issue with a few of them. thanks for insight!

stone tree
solid marten
#

a getter for respawnVehicle, does array = respawnVehicle vehicle look weird?

gaunt depot
#

Yeah, not obvious at all

#

looks like you want to trigger a respawn of the vehicle

solid marten
#

yeah, respawnVehicleParams then

#

So vehicle respawns where it was local when it died, and if player leaves the server in between it respawns on the server

uncut briar
#

Anyone uses engine driven vehicle respawns?

#

IIRC even BI module was fully scripted.

limpid rune
#

wasnt even aware there was engine driven vehicle respawns ๐Ÿ˜…

daring wagon
#

Same actually. I thought there was only a scripted implementation.

solid marten
#

i'm planning on writing up on wiki about it

untold sky
#

FT ticket please

#

please include a link to that discord message I replied to for reference

#

That means the script had no #line directives in it when it was compiled.
For example when using preprocessFile instead of preprocessFileLineNumbers

#

Indeed it only refreshes the audio outputs.
You'll notice it also only offers the option to choose outputs, not inputs. You'll also notice the button is belonging to the "OUTPUT:" section.

Input is a completely different system, hard to implement, so I didn't and won't

untold sky
#

Errors are only shown if the game does if (error present) ShowError();
in some places that was missing

untold sky
dreamy bane
near cedar
daring wagon
#

Out of curiosity. Is there a reason that accTime is limited to 4 times? For testing it would be neat if we could go higher.

gray wharf
#

can't it go higher through scripting though?

daring wagon
#

Yeah, not sure though.

#

With accTime 100, clouds move really fast but the everything else seems to be clamped at 4 times speed.

devout wave
#

Well, it's running everything at the increased speed, and sometimes the game struggles to process 1x speed fast enough, so it's not too surprising that high values aren't very supported

gray wharf
#

yeah simulation is still capped to whatever your CPU can do

#

but if you run OFP on a NASA computer, you can go ร—1000 if you want to ^^

#

mayhaps

daring wagon
#

I know. All good. I just wasnt aware that > 4 works

#

Oh wth

#

Never use number < 0

gray wharf
#

iirc ~ร—16 is still fine
but yeah negative is brokeded, hence the note xD

#

iirc animations play backward or something alike, but the game still moves forward, but the in-game watch turns backwards

daring wagon
#

Why on earth did noone do abs(value)

gray wharf
#

try 0 lololol

devout wave
#

Huh, is there not a command to properly pause the game? I guess I kind of assumed there would be, but that 0 made me check and it seems not

gray wharf
#

Esc

devout wave
#

Esc isn't a command :U

regal nimbus
#

I'm surprised there's not something for SP.

solid marten
frail widget
#

Altis requiem is broken. the "collateral damage" hidden meter is affected by all damage caused in the world by all sides not just the player. So AI running over chicken wire fences causes you to get court martialed and executed at the end of every playthrough. also makes it impossible to get the achievement.

sick abyss
#

thoughts on adding a ST_PICTURE_MIRRORED control style to enable horizontally flipped picture UI controls? there's currently no way to achieve this, and it would help in cases such as kill feeds:

#

(currently reads right-to-left, which is... not very intuitive)

alpine tulip
#

I think more of filters, like color corrections, blurs, some others like CSS does

gaunt depot
#

Hmm I wonder if its already possible with some hackery

#

Personally I gave up on this idea because I didn't like how icons looked mirrored, something wasn't right about them

gaunt depot
sick abyss
#

I'd be fine with mirroring some textures by hand, but my solution needs to work with every modded weapon/vehicle so that's not feasible

#

I don't know how feasible this would be with procedural textures (how would you use that/what would it look like in code?), same with filters like Polpox mentioned (I'd love to have such a feature, but I fear it'll be far too much work to implement)

gaunt depot
#

One idea I didn't try yet would be to display a texture on a rotated CT_OBJECT and rendering that onto a texture with ui2texture

#

Actually, not rotated

#

but rather textured with flipped texture, like flags

#

Not sure if its possible to have custom p3d there

#

Needs R&D

sick abyss
#

hm, sounds like that'd come with a lot of overhead - iirc every R2T is a separate draw call

gaunt depot
#

Not R2T but U2T, its a single draw and then it remains in video memory

sick abyss
#

it'd also cause the images to be affected by additional factors like lighting, and would likely make the icons appear blurry

alpine tulip
#

But, I would call it โ€œtoo much effort for a simple goalโ€ and push it to Ded ๐Ÿ˜

gaunt depot
#

I remember there used to be a bugged vehicle which displayed squad.xml logo flipped, maybe it can be used to render a flipped picture?

sick abyss
gaunt depot
#

If this vehicle even exists anymore and it wasn't something back in OA days, I don't recall anymore

#

Just throwing ideas, not sure what will work, I decided not to dive into it

#

Btw since you're doing a kill feed, I recently made my use ui2tex resizing, it works great for removing some of aliasing when UI downsamples large UI textures into small ones

#

Before and after comparisons for my implementation

sick abyss
#

flipping textures is fairly easy in theory, you just need to flip the UVs of the quad you're drawing the texture on - shouldn't be difficult to implement either, IF the engine has abstracted UI rendering enough for UVs (or mirroring) to be an additional parameter

gaunt depot
#

Zoomed result

sick abyss
gaunt depot
#

if it is, then its solveable

sick abyss
#

oh yeah, I'd accept that as a solution (though I'd still argue that it's not the optimal solution ๐Ÿ˜› )

gaunt depot
limpid rune
#

unfortunately I dont think its currently possible to change the texture of a CT_OBJECT

#

so you'd need a p3d per texture

#

would be a nice thing to add

#

like a https://community.bistudio.com/wiki/setObjectTexture / material
but for ct_object
ie.

_control3d ctrlSetModelTexture ["SelectionName","texture"];

guess needs to be the selection name rather than the index unless hiddenSelection definitions are added to the control definition

#

oh I guess you could maybe use R2T from the p3d to do what you want but i personally havent tried R2T on CT_OBject

gaunt depot
#

Plan: Have p3d with flipped texture, draw image on it to have flipped image

#

Finding a p3d with flipped texture is a challenge, though, not sure if you can use mission p3d there

limpid rune
#

should be able to

gaunt depot
#

Nope, not possible, CT_OBJECT_CONTAINER never flips the texture

#

Even if I flip usertexture TL, usertexture TR, usertexture BL memory points it just rotates the texture 180 degrees

#

Apparently these 3 memory points are all that matter for it to work

#

UV does nothing at all

#

And yeah, UI models are affected by the environment thronking

#

I managed to make CT_PICTURE to always appear 100% bright by that inverted CT_OBJECT_CONTAINER model, but its pointless since you can't invert it to achieve original goal anyway. Textures inside CT_STRUCTURED_TEXT are still messed up though for some reason.

sick abyss
limpid rune
#

compared to the render to texture stuff

gaunt depot
#

CONTROL ctrlSetModelTexture [SELECTION, TEXTURE] when?

dreamy bane
#

can we get callUnscheduled command so you wont have to use isNil command to run code unscheduled?

regal nimbus
#

but that's longer?

dreamy bane
#

longer is cool ๐Ÿ˜‰

devout wave
#

Philosophically, using isNil for unscheduled is annoying because that's not what it's meant for.
Technically, using isNil for unscheduled has limitations, like not being able to return anything to the parent scope except, indirectly, true/false.

#

I don't think it's a massive issue but I do go "ugh" every time I see it

dreamy bane
#

probably it checks for that nil too, would avoid that

solid marten
#

whole lotta love is coming to vehicle respawn

alpine tulip
#

I know, this is very nitpick, but I found it this is very unrealistic movement... the arms IK only influenced from the upper arm, not from the shoulder. As you can move your arm IRL, the pivot of arm is shoulder

#

And I know, this is very unreasonable to tweak now

#

Looks painful ๐Ÿคฃ

daring wagon
solid marten
tacit kettle
#

can we also have a little love for respawn position module. Basically to include the Z value for respawn position module. There are some causes if you put respawn position module on carrier it spawns you in water. And if you place respawn position in air it spawns you on the ground.

solid marten
#

you can make a ticket and i can assign it to myself not to forget

solid marten
#

How many of you use respawnVehicle command?

sleek scaffold
uncut briar
#

It does not

#

I haven't seen a single community mission using engine respawn for vehicles in my life.

sleek scaffold
# uncut briar I haven't seen a single community mission using engine respawn for vehicles in m...

Probably because it is needlessly complicated in its current form. It requires markers and messing takes optional info from description.ext where it has the means to work without it so why just not use the value passed to the command. As a noob and even as a seasoned mission maker just by reading https://community.bistudio.com/wiki/respawnVehicle makes me not wanting to use the command ever. So many comments, warnings and unnecesary complications

#

would be great if the command takes an object pos, pos, marker pos instead of just marker, with the ```sqf
car respawnVehicle [5, 3];

#

so many quality of life fixes could be done on the command to make it more appealing and less scary too use

daring wagon
# solid marten How many of you use respawnVehicle command?

Currently there seems to be no real advantage to using the engine command over just creating a new vehicle.

Will the engine command copy over certain information from the old to the new vehicle? For example animation source state and textures (Bis_fnc_initVehicle). Are variables automatically transferred?

#

And yes, as Valmont already said. We would at least need an option to provide a custom respawn location. Otherwise it's very static or needs custom position handling.

#

Also there is no return value.

solid marten
#

you can set position by returning it in respawn event handler

daring wagon
#

Didn't know that Respawn eh works for vehicles.

#

Then I can also copy things from old to new vehicle easily.

solid marten
#

ah good point, i need to check something

gray wharf
#

allVariables?

#

(+ vehicleVarName & global variable value)

solid marten
#

there is an option to delete old wreck with respawn, need to check wreck exists long enough so you can copy variables

#

i should probably add option to copy variables automatically

#

actually probably doesnt need option, just copy it

coarse sequoia
#

It would also need more conditions other than vehicle killed. Like vehicle empty and abandoned for x seconds and no players nearby (y meters), empty and can't move and no players nearby or simply respawn after x seconds if no player is nearby, etc.

solid marten
#

would have been nice but that would require new system of handling when vehicle is alive

solid marten
# gray wharf (+ vehicleVarName & global variable value)

So I have looked at the variable transfer. at least 2 problems. 1. what do you do with global variables? There is no flag saying this object variable is global. It will need to have this property. 2. what do you do with variables that have list of specific client targets? Also what if object has many public variables do we transfer them all even if some are not needed on the new object. Could be confusing. Let mission maker that set variables decide what they want to transfer.

gray wharf
#

regarding public variables, same as unit respawn?

uncut briar
#

I can see issues with mod systems

#

no one ever added respawn EH for vehicles for re-intialize anything

#

does it fire init EH?

#

BI respawn module copies the global variables and it's the worst thing

solid marten
uncut briar
#

but it creates new vehicle, so you get a new vehicle with basically "false" state of variables.

solid marten
uncut briar
#

how's that related to what I wrote?

solid marten
#

global and moddable

uncut briar
#

I'm writing about variables on vehicle object.

solid marten
#

don't need eh

uncut briar
#

I init ACE Cargo on vehicle

#

vehicle respawns

solid marten
#

unless you are talking about something else

uncut briar
#

variables are copied, state is fucked

#

mod suddenly needs to account for new cases.

solid marten
#

ACE uses engine vehicle respawn?

uncut briar
#

it does not, mission maker can use it with a mission that does

solid marten
#

what do you suggest

uncut briar
#

I do not know, leave it dead as everyone who needed vehicle respawn made one with createVehicle in the past 10 years.

#

I'm feeling like it would be better to spend the time to make the respawn module more reliable

#

it's known to break frequently

solid marten
#

and what did I do to make you think it is not gonna be this way?

uncut briar
#

sometimes it ends up in a fountain of vehicles flying into an air and exploding on dedicated

solid marten
#

nothing is changed, unless you explicitly use respawnvehicle with enabled respawn nothing is automatically respawning

uncut briar
# solid marten what do you suggest

no good solution here, I guess it would be wise to use "Respawned" EH on vehicles to properly re-initialize stuff. But no one ever did as no one used that feature ๐Ÿซ 

solid marten
#

ideally you don't set the variables on object but keep hashmap on server were the key is varname of the vehicle that will always point to the respawned vehicle.

desert trench
# uncut briar I do not know, leave it dead as everyone who needed vehicle respawn made one wit...

unfortunately i kinda feel the same.

limited effort into fixing the engine's own vehicle respawn is OK. however gets easily complex if you want to provided an advanced version

i'd assume essentially no one uses the engine vehicle respawn system - maybe a few no longer used PvP modes did. so chances to break things are probably limited. still vehicle respawn is usually a quite customized system.

the BI module vehicle respawn probably is used more. no clue what issues it has or whats worth to fix, and what problems that may cause if ppl worked around that

solid marten
#

engine respawn doesn't work by default you have to enable vehicle to respawn this way

#

was like this always

#

and vehicle can only do instant or base

#

and respawn param controls mode of both unit and vehicle so unless they are both either instant or base no vehicle respawn is possible

desert trench
#

p:\a3\functions_f\systems\fn_respawnmanager.sqf

254 _what respawnVehicle[-1, 0];

#

this seems the only time A3 itself uses the command

solid marten
#

there is a getter that tells you that vehicle is in respawn queue it also can be added and removed time adjusted and many other features easily. you don't want engine respawn, you can make vehicle not respawn if it was enabled, at any time

solid marten
#

some arma 2 relic

desert trench
#

i think to have the basic functionality working is fine. just wouldnt attempt to do more than that

solid marten
#

the 0 will have to change for -1 and judging by this feedback probably for the better

outer frigate
#

is vehicles not being able to collide with attached objects an oversight/bug/limitation?
players can just fine

sinful kettle
#

I'd say players colliding is a bug ๐Ÿ˜…

#

Anyway, afaik it's a limitation of PhysX. IIRC you can't disable collision between 2 specific objects. You can just use "flags" to ignore the collision of objects with that flag

devout wave
sinful kettle
#

They do lose interactivity with everything else in the world

outer frigate
devout wave
#

By interactivity I mean being able to shoot them and get in/out, etc, as opposed to disableSimulation which keeps them still but also makes them useless

sinful kettle
outer frigate
#

ah

#

wait hang on how on earth do the aircraft carriers have collisions with planes thonk

#

theyre just pieces attached right?

devout wave
#

I'm not sure they're actually attached

sinful kettle
outer frigate
#

oh

sinful kettle
#

They're separate afaik

outer frigate
#

i thought the multipartstructure thing attached them

#

my lead has gone dry then

#

surely house sim could maintain collisions? theyre not physx iirc?

dreamy bane
outer frigate
#

yeah i thought they were attached

dreamy bane
#

attached to what?

outer frigate
#

logic entity

dreamy bane
#

oh ok

uncut briar
#

No, they're just positioned relatively to init piece by script

sleek scaffold
#

โ˜๏ธ Webknight just fixed the holster/weapon on back animation that in vanilla/ace makes the unit glide for a couple seconds. He did so without any new animations but just by modifying the config file

#

Why isn't talent like that with that sort of initiative and desire for truly fixing the weird stuff left on board or why hasn't him been offered a position among the official devs escapes me....

uncut briar
#

I do not want to diminish his accomplishment but tweaking stuff like this is usually a mater of persistence in debugging BI stuff than skill.

#

Eg. I did an animation set for AI to walk with weapons on their back without any new animation, was a matter of setting up diag mode and figuring out animation state machine.

#

Also there's a dozens of talented modders you can't hire every one of them and some simply prefer to keep modding as hobby, there's qutie a lot of fields that simply pay better than game dev ;)

sleek scaffold
# uncut briar Also there's a dozens of talented modders you can't hire every one of them and s...

You are most accurate with your remarks. I wasn't saying he is more skilled than the current devs but as you said it is his/the persistence and also his will which ultimately leads to things being fixed/improved. I am not saying that the current devs lack that but they seem shackled in comparison. I don't know if that "shackledness" is due to a mindset or a culture thing or a fear thing or a burocratic thing (or all of them). This one guy sees something that can be improved and improves it, period, no questions asked, no detailed ticked needed, boom done. Devs seem to require 20 community testers and modders to request it via a university thesis in order to get something moving. Where is the initiative? The passion?

limpid rune
#

I found something similar back in spearhead testing phase, cuz we have the 'take weapon from back' animation play when leaving turrets etc where the unit has their weapon on their back and it would cause the slideyness

#

the fix was pretty simple too

#
        class TransAnimBase;
        class AmovPknlMstpSrasWpstDnon_AmovPknlMstpSnonWnonDnon;

        class AmovPknlMstpSnonWnonDnon_AmovPknlMstpSrasWrflDnon: TransAnimBase
        {
            idle = "";
            mask = "weaponSwitching";
        };
        class AmovPknlMstpSnonWnonDnon_AmovPknlMstpSrasWpstDnon: AmovPknlMstpSrasWpstDnon_AmovPknlMstpSnonWnonDnon
        {
            idle = "";
            mask = "weaponSwitching";
        };

is all it took iirc

#

this was kneeling tho

gaunt depot
#

Wish this fix could make it into the game

outer frigate
limpid rune
#

go for it I mean I'd sooner see it in an arma patch ๐Ÿ˜…
I think I was gonna post a ticket about it but forgot

alpine tulip
#

I mean it's quite easy to ignore this idea because it's too dumb idea, but what about an alternative array requiredAddons that does if listed addons exist this config will be loaded later of them, but it won't throw an error if they don't and just load right after requiredAddons?

#

So like... notSoRequiredAddonsButIfTheyAreHereLoadAfter[]

deep plaza
#

Why is it a dumb idea?

uncut briar
#

was this fixed? I see there's a ticket number assigned and was unable to reproduce just now (profiling).

solid marten
#

i'll have a look next

fresh hawk
# solid marten i'll have a look next

If you are looking at corpses, can you see if it's possible to have any setPos commands not desync a corpse?
I'm trying to move bodies around for a body dragging/carrying mechanic to be used in ACE. The idea is to use a dummy (alive, can't any damage) whilst the "body" is being dragged/carried. Once the player stops dragging/carrying, the original corpse is teleporter to the location where the dummy was dropped. Currently, it's hit and miss - I can't get the corpse's new position to sync on all machines (either the corpse doesn't move or it teleports to [0, 0, 0]), even when using awake.

Can make a ticket if you want me to

gaunt depot
#

Does awake even do anything to dead units ragdoll bodies?

solid marten
gaunt depot
#

Having commands to manipulate dead bodies would indeed be useful, even simply being able to reliably stop ragdoll simulation.

solid marten
#

there is quite a lot of traffic for brain class which when destroyed soon after death is not updated any more

devout wave
gaunt depot
devout wave
#

Sorry, not what it was added for, but functionality specifically for that was added to it 1 update after it was added

solid marten
#

does it still drop body with building destruction?

gaunt depot
#

BODY enablePhysics BOOL to force start/stop physx, so you can say apply normal animations to it like you could in OA

#

Having to switchMove it every frame right now pepecringe

#

I probably can script simulate animations, now when we have that alt syntax for switchMove

devout wave
gaunt depot
#

๐Ÿค”

devout wave
oblique crest
#

Any reason why

vehicle animate ["mainTurret", 0.2];

wouldn't work?

Is it because source = "mainTurret"; that is engine defined and can't be edited with SQF?

devout wave
#

Yes

gaunt depot
#

I think there also was some kind of bug with config inheritance?

#

Nevermind, its animateSource issue

oblique crest
#

I would like to sync two vehicles together, one with crew and one without.
That would include position, rotation, hitpoints and turret animation state.
But can't fire out how to do the last one

sinful kettle
#

that or the vehicle must be simple object to use animate

oblique crest
#

The tank would be unmanned, so a simple object might be the solution here

#

Would hitpoints work on simple object though?
To show the current damage state of the vehicle

sinful kettle
#

no. simple objects don't take damage

#

but you can animate the damage anims

oblique crest
#

That sounds like something that would be really hard to automate for larger number number of vehicles

sleek scaffold
sleek scaffold
# limpid rune ```cpp class TransAnimBase; class AmovPknlMstpSrasWpstDnon_AmovP...

Nice find, even nicer fix, there are so many issues like this, specially related to the weapon on back animation and its transitions. If I've holstered a pistol and I also have a launcher, if I am kneeling and try to unholster the pistol my character first plays a very long launcher animation before taking the pistol out. In those seconds you are playing an unneeded animation it is easy to get killed

#

Details like that, thou minor, are easy to fix yet no one takes the initiative and moders are to lazy to make detailed tickets that will probably be rejected anyway so for most it is not worth doing it

outer frigate
#

as probably 90% of arma modders can relate there just arent enough hours in the day

outer frigate
#

brief idea i had, would it be possible for addon builder to query subfolder for addons folder & keys folder? may be a nice qol thing for building

sinful kettle
#

the change is very simple though:

class CfgMovesBasic {
    //idle affects legs when weapon switching? wat?
    class Default {
        idle="";
    };
    // etc. etc.
};

I have more fixes that I meant to publish as a mod but I never did.

sinful kettle
outer frigate
#

arent they gestures? meowsweats

sleek scaffold
#

Small fixes and improvements like that truly help make Arma 3 look less clunky and outdated. Such additions also help bring back mission markers and moders. It is truly motivating when funky workarounds are no longer needed and we can focus on crafting stories and scenarios and not hotfixes in our mods/missions

gaunt depot
#

Having both issues fixed would be great

west onyx
#

@solid marten should i expect the vanilla garbage collector (wrecks and bodies) to be more performant than an identical SQF scripted system?

outer frigate
#

isnt the vanilla garbage collector done in sqf? meowsweats

west onyx
#

hence the Q ๐Ÿ™‚

outer frigate
#

then the answer would clearly be no lol

#

in fact itd probably be quicker if you make use of newer syntaxes and commands for filtering etc

west onyx
#

well there are script commands for the remains collector, which would be strange for an SQF scripted system

#

so imo the answer isnt clearly no

sinful kettle
solid marten
desert trench
#

@solid marten did you do the suggested fixes part 2 for garbage collector, or still wip? (was/is it related to vehicle respawn/wrecks)

solid marten
#

should be in

desert trench
#

ok great - we will test with next dev branch update then

solid marten
#

yes please

solid marten
alpine tulip
#

RIP bob

fresh hawk
# solid marten

Last time I checked, deleting the corpse deleted the weapon holders belonging to said corpse. Can there be a command that stops that type of deletion on a per corpse basis?

near cedar
#

Or replace with a dummy/invisible corpse that has minimal overhead?

regal nimbus
#

well, you can always "move" the items into another weapon holder.

#

but I would guess the request is intended to avoid that sort of hassle.

#

Personally I want the corpse weapon holders gone when the corpse goes.

sleek scaffold
#

Devs tackling the previously dysfunctional Garbage Collector is a godsend, much needed. Tremendous midfield goal by KillzoneKid who scores another one for team BI

solid marten
fresh hawk
outer frigate
#

surely you can just remove them from garbage collectable

regal nimbus
#

You'd have to remove the corpse, because the weapon holder deletion is an engine feature not a GC feature.

outer frigate
#

ah i see

solid marten
#

normal weaponholders are not yet automatically added, still WIP

west onyx
#

i do some basic stuff for wrecks, trying new "getEntityInfo" for wreck age

#

but if vanilla system is quite performance friendly then i might consider it optional in my stuff, for communities to choose my scripted or vanilla

#

too big to paste all but here are some of the key segments

#
deleteVehicle (_allDeadVehicles select {
    ((_allPlayers inAreaArray [_x,_distanceIrrelevantVehicle,_distanceIrrelevantVehicle]) isEqualTo [])
});```
#

^ to clear distant wrecks >1km from players

#
_allDeadVehicles = _allDeadVehicles select {!isNull _x};
_deadCount = count _allDeadVehicles;
if ((_deadCount - _thresholdLowerVehicle) > 0) then {
    _toDelete = [];
    _allDeadVehiclesSorted = _allDeadVehicles apply {
        [
            _x getEntityInfo 3,        //Number: how long vehicle been dead for
            ((_allPlayers inAreaArray [_x,_distanceRelevantVehicle,_distanceRelevantVehicle]) isNotEqualTo []),    //Bool: Is a player nearby
            _x
        ]
    };
    _allDeadVehiclesSorted sort FALSE;```
#

^ to sort remaining by wreck age and if its within 50m of players

#
{
    _x params ['_deadFor','_deadNearPlayer','_deadUnit'];
    _deadForThreshold = linearConversion [
        _thresholdLowerVehicle,            //5
        _thresholdUpperVehicle,            //15
        _deadCount,                        // ?
        _deadDurationLowerVehicle,        //60 - stays not cleaned up longer, when there are fewer bodies
        _deadDurationUpperVehicle,        //30 - stays not cleaned up shorter, when there are more bodies
        _true                            //clip
    ];
    _deadFor = [_deadFor,_deadFor / _nearPlayerCoefVehicle] select _deadNearPlayer;
    if (
        (_deadFor > _deadForThreshold) ||
        ((_deadCount > _thresholdUpperVehicle) && (!(_deadNearPlayer)))
    ) then {
        _deadCount = _deadCount - 1;
        _toDelete pushBack _deadUnit;```
#

^ adjusting how aggressively wrecks are cleaned based on how many wrecks there are. if there are a lot of wrecks, wrecks are removed faster

west onyx
#

@solid marten possible with new "respawnVehicle" to define custom respawn marker/loc per vehicle? ideally would be precise ASL marker pos, for Z axis manipulation (ship decks, raised helipads, etc)

#
vehicle respawnVehicle [respawnDelay, respawnCount, deleteOldWreck, respawnOnServer, respawnFlying, respawnUnit, respawnMode, respawnSide, useRespawnMarkerDir,customRespawnMarkerPosASL<string>]``` see last proposed arg
#

also some event handler (or scripted event handler trigger) would be great, to hande "on vehicle respawn"

solid marten
#

both can return position

#

also was always possible

#

I am writing a page for a vehicle respawn mechanics

west onyx
#

in the docs it appears just on "respawn_vehicle_WEST" marker(s)

solid marten
#

Before (in order of checking):

respawn_vehvarname...
respawn_vehicle_side...
respawn_side...
respawn...

now

respawn_vehvarname_side....
respawn_vehvarname...
respawn_vehicle_side...
respawn_vehicle...
respawn_side...
respawn...

solid marten
#

probably

daring wagon
#

17:43:33 Error +: Invalid scenario name format. Expected format: missions\MyMission.VR or MPMissions\MyMPMission.VR

#

Nevermind.

regal nimbus
#

Could we have something like _element = deleteRandom _array, like a combination of deleteAt and selectRandom?

#

It's a really common paradigm in our stuff because you often want to pick a random element from an array, test it, and then try another one if it doesn't match the conditions.

#

And with deleteAt random N being broken it's really messy to write.

#

Something like _array deleteAt true would be fine too, but maybe a bit opaque.

regal nimbus
solid marten
#

float == float pretty sure you shouldn't do this

regal nimbus
#

sighs

#

_array deleteAt random (count _array - 1) breaks. Happens in live code.

#

This is how I found the issue in the first place.

solid marten
#

try selecting from array : floor random 10

regal nimbus
#

That's exactly what the code was doing.

#

And very occasionally we'd hit nils.

solid marten
#

count array -1 is the last element whatever happens you are not exeeding it

regal nimbus
#

sorry, code was count _array

#

Got used to having to cap it to count -1

solid marten
#

you need to floor it

#

floor random count

regal nimbus
#

Doesn't help.

solid marten
#

give me repro where it breaks with floor added

regal nimbus
#

I mean, the original code was _road = _roads deleteAt floor random count _roads;

solid marten
#

in the ticket?

#

the ticket is not doing it right

regal nimbus
#

Nah, it'd take forever to replicate with that.

solid marten
#

good, means it is fine

#

floor 0.99999999999999999999999999999999999 is 0 not 1 no matter how much you try

regal nimbus
#

For what it's worth, random 1 is probably fine because that's how it's written.

#

random 10 is not, because the 0.99999r * 10 does get rounded up.

solid marten
regal nimbus
#

Uh

#

I mean, random 10 can return 10. Not 9.99999999. 10.

solid marten
#

If you think there is a problem with random, make repro and I will look at it

solid marten
#

you cant compare it to 10 like in the ticket

#

you cant use random 10 to select from array either because this float will be rounded and can well round to 10.

#

you cant print it and compare string either. Everything is explained in that link. the only correct way to use random as index is to floor the result

regal nimbus
#

Rewritten so it'll typically trigger within a minute:

[] spawn { 
    private _attempt = 0; 
    private _nohit = true;
    while {_noHit} do { 
        systemChat str _attempt;
        isNil {   
            for "_i" from 1 to 100000 do {
                if (floor random 1000 == 1000) exitWith { 
                    systemChat "hit";
                    _noHit = false;
                };
            };
        };
        _attempt = _attempt + 100000;
    }; 
};
#

Works fine with 10 too if you prefer.

#

huh, actually works with 1 too

#

surprised by that.

solid marten
# regal nimbus huh, actually works with 1 too

I reproed it, thanks.

b
 (GCC #63176 LLVM #18767 MSVC STL #1074). This was originally only thought to happen when RealType is float and when LWG issue 2524 is present, but it has since been shown that neither is required to trigger the bug.```
#

this is why we cant have nice things

regal nimbus
#

Just cap the output of random tbh. SQF is slow enough that you don't have to worry about the details :P

#

deleteRandom or equivalent would still be preferable because it's one command rather than four (deleteAt floor random count).

#

but capping random at least saves the min (count - 1)

#

Although general-purpose capping is non-trivial because you can't use a fixed epsilon.

gaunt depot
#

Check if random == input number and then run it again?

#

Probably will be super fast in engine

regal nimbus
#

Yeah the run-again solutions always make me nervous but I don't think there's a downside here.

#

as long as you didn't use it on the seeded randoms.

#

or used it carefully on them :P

alpine tulip
#
loadConfig "a3\data_f\default.rvmat"```causes an CTD?
alpine tulip
regal nimbus
#

I'd have thought you could work around it with a combination of two patches.

#

but then I don't know the case. It just reminds me of others.

gaunt depot
#

Seeing group event handlers makes me wish there was an event handler that fired when unit changes group

#

GroupChanged or something

solid marten
#

there is no left and joined?

gaunt depot
solid marten
gray wharf
clear glen
#
params ["_group", "_newUnit"];

private _oldId = _newUnit getvariable "myGroup";
private _id = groupId _group;

if (!(isNil "_oldID") && {_oldId != _id}) then {
    private _id = groupId _group;
    private _uid = _newUnit setVariable ["myGroup",_id];

    [_id] call my_fnc_UpdateGroupServer;
    [_oldId] call my_fnc_UpdateGroupServer;
};```
#

it's a UnitJoined EH

regal nimbus
#

Are you assuming that a unit will never join a group with a different locality?

#

wonders

#

What is the locality of the group event handlers?

clear glen
#

Also, the only thing the UpdateGroupServer functions do is re-analyze the groups weapon capabilities and some other data. It could easily just trigger on a client and remotely exec the same functions

west onyx
regal nimbus
#

I'd rather have _hashmap deleteRange _arrayOfKeys

gaunt depot
regal nimbus
#

Groups and markers aren't something you spam-create temporarily as part of an algorithm (unless you're doing it wrong), so having an array delete for them doesn't really matter. It's just syntactic sugar.

west onyx
#

ive been tinkering with arma for awhile and never heard of simplevm

regal nimbus
#

Probably is easy to implement though.

gaunt depot
regal nimbus
#

New names are bad, right

gaunt depot
#

or deleteKeys

#

deleteEach?

regal nimbus
#

_hashmap deleteAt _arrayOfKeys is another option.

gaunt depot
regal nimbus
#

huh, 2.18 already added array deleteAt indexes

gaunt depot
#

yep, just noticed it

#

could work for hashmaps too then

regal nimbus
#

hashmap version plz then :P

#

Then I can finally do non-O(N^2) array subtraction.

gaunt depot
#

Only active on perf build right now it seems

#

You can try measuring with and without it for multi-marker deletion

#

Once again I'm feeling the need for my setN command idea @ https://feedback.bistudio.com/T178841

private _new_color = +_color;
_new_color set [3, 0.5];
_ctrl ctrlSetBackgroundColor _new_color;
```with it would be able to one-line it with
```sqf
_ctrl ctrlSetBackgroundColor (+_color setN [3, 0.5]);
#

Also stuff like:

_hashmap setN ["key1", 123, "key2", 321];
regal nimbus
#

I just want that for the return value so I can simpify all the godawful z-sets.

regal nimbus
#

oh also _hashmap findAny _arrayOfKeys

gaunt depot
west onyx
daring wagon
#

The event seems to fire twice for each action. Returning objNull for the "newParent". Not really sure if that is useful.

#

OnMoveGridDecrease/increase doesn't seem to fire at all.

#

Same for OnRotateGridDecrease/increase

#

OnToggleMapIDs doesn't fire as well. When using do3DENAction "ToggleMapIDs"

#

OnEditableEntityAttributeChanged seems to not be implemented at all. Gives me enum error

gaunt depot
gaunt depot
#

Is there still no way to get which camera you're viewing from? cameraOn still points to player vehicle even if you did cameraEffect on some camera entity.

alpine tulip
#

Nope, there is no comprehensive getter for cameraEffect

#

I also miss current viewmode (NV/TI)

gaunt depot
#

GIB

gaunt depot
#

Not sure how this works internall. getCamera? getCameras?

#

if its null, then you're viewing cameraOn entity?

alpine tulip
#

I think cameraEffects or something like that, that could return [camera object, effect, viewmode, isPrimary, r2t] or smth

gaunt depot
#

Wish there was a way to assign behaviours to custom radio channels

#

Like having the channel behave like side channel (only audible in you are in same side), group channel (only audible if you are in same group), having channel audible in 3d like Direct Channel

#

This would make usage of 10 custom channel slots much better, because you can use one custom channel for all sides instead of having to use up custom channel for each side

daring wagon
#
(get3DENSelected "Trigger" # 0) addEventHandler ["AttributesChanged3DEN", 
{ 
  systemChat "AttributesChanged3DEN"; 
  call ENH_fnc_garrison_updateValues; 
}];

Event handlers can be added to triggers?

gaunt depot
#

It seems that radioChannelAdd works similarly to publicVariable, as in one client can overwrite another client's changes, we started using custom channels and you randomly end up not being added to the channel

#

I wonder if this players list ever gets cleaned up and its not 1000 objnulls being broadcasted everywhere

devout wave
gaunt depot
#

Lets see if RE to the server to add you to the channel will be more reliable

gaunt depot
#

I was under impression that vehicles are hardcoded to explode with FuelExplosion if explosionEffect is not specified, but it looks like there are exceptions

#

getText(configFile >> "CfgVehicles" >> "B_Heli_Light_01_dynamicLoadout_F" >> "explosionEffect") => ""

#

yet it explodes with HelicopterExploSmall

#

Are there any more such cases?

gaunt depot
#

Now it exploded with FuelExplosion again

#

WTF is going on

#

Oh, it is scripted. Weird.

near cedar
#

Feedback Tracker feedback: Could the default operating system when filing a bug report be Win 10 x64 now?

gray wharf
#

nah
let's see if I can do that

#

ah for Reforger it is indeed Win7

gray wharf
#

it took me more time to find how than to do it ๐Ÿ˜„

near cedar
#

Thank you! ๐Ÿ˜„

alpine tulip
#

Almost reminder to myself, but screenshot command generates very bright picture despite F12 does generate correct color. Does this mean a Color Profile issue?

#

I'm outside now, may post example later

alpine tulip
#

Well, why I thought of Profile is, a software like ImBatch does recognize correct color

west onyx
#

hmm.. with new respawnVehicle changes, if a vehicle is destroyed it will respawn .. but if it gets deleted? say, by zeus by accident

#

something like this would be useful to save it from oblivion

#
_vehicle addEventHandler ['Deleted',{ forceRespawn (_this # 0) }];```
gray wharf
west onyx
#

for what?

daring wagon
#

There is CuratorObjectDeleted

west onyx
#

ahh

solid marten
gaunt depot
solid marten
#

there is no wreck state for a car but for every other class is

#

lots of inconsistencies added over the years not the time to fix

west onyx
#

i guess capture the info in deleted event and respawn it manually?

daring wagon
#

Probably.

gaunt depot
gaunt depot
#

@solid marten If we can't get damage kind flags into HandleDamage, how about some kind of event that fires before damage is done in HandleDamage?

#

Basically, find instance where engine does its voodoo before eventually trigerring HandleDamage and fire a reporting event handler (that doesn't change anything, just script reports what is going to happen soon)

#

Idea for name: ManDamage, which simply fires right before proceeding with local HandleDamage.
ManDamage = [ENTITY, KIND, DAMAGE, ARGS]

Fire cases:

  1. Unit got fall damage WorldDamage = [unit, 0, damage, velocity]
  2. Unit got hit by some moving entity ManDamage = [unit, 1, damage, entity]
  3. Unit got particle (fire) damage ManDamage = [unit, 2, damage, cloudlet class?]
  4. Unit got drowning damage ManDamage = [unit, 3, damage]
  5. Unit got damaged by rotor ManDamage = [unit, 4, damage, [helicopter, rotor index?]]
  6. Unit got damaged by propogated EPE damage (car hit another car, crew inside got damage) = ManDamage = [unit, 5, damage, got hit by?]
devout wave
gaunt depot
#

Happens the most during start where each client adds themselves to the same channel, some players are randomly missing

solid marten
#

I was expecting you to say that ๐Ÿ˜‰

gaunt depot
#

Same as if all players would publicVariable at once, you end up with one client overwriting others

solid marten
#

Looked up the code and the new units are just assigned not added so if you added an extra unit, you end up with some units missing on clients

gaunt depot
#

Yeah, very unreliable when used on clients

solid marten
#

i will fix that make a ticket please

gaunt depot
#

I rewrote my stuff to only have the server run the command and it seems to be reliable so far, gonna see how it goes

gaunt depot
solid marten
#

still no mechanism of removing units?

gaunt depot
#

But I wonder if this list ever gets cleaned up, no way to script check that

solid marten
#

ah ok probably better leave it this way

gaunt depot
#

Say players add themselves, die, respawn, add again

#

Does it end up with 100s of nulls

solid marten
#

yeah good idea will have a look

#

make a ticket and mention all that i can see this can be improved already

gaunt depot
#

Will do, have another bug to fix there (sentenceType is not broadcasted)

solid marten
#

for custom channel or?

gaunt depot
#

Yes, you can specify sentenceType in radioChannelCreate and its not broadcasted anywhere, only server sees effect of it

solid marten
gaunt depot
#

Since you're peeking at that code, how hard would it be to assign side channel like behaviour to certain custom radio channel? So it players using the channel broadcast their voice and text only to players of same side, just like default side channel behaves.

solid marten
#

yeah it doesnt

gaunt depot
#

This way you could use same channel for all sides instead of having to use scarce channel IDs for each side

solid marten
#

lets fix all this first

#

its already a lot

#

then will see, but for now I need all the bugs in one ticket

gaunt depot
#

Alright, I'll do the tickets for custom channels some time later

gaunt depot
#

As in you only add wanted recipients on your client

#

so each clients adds/removes recipients depending on their side

#

You could also do stuff like being able to talk into the channel but not hear back

untold sky
untold sky
daring wagon
#

will check.

daring wagon
#

Not a problem as long as it's intended and documented.

gaunt depot
#

Or add custom checks like terrain, being inside, etc.

#

All fairly easily scripted

#

Not sure how to make this backwards compatible though

#

NUMBER radioChannelSetLocal BOOL ?

#

Which stops the channel from reciving and broadcasting that players list and you can edit it on your client only

#

Then you script-control list of recepients by gameplay logic

#

Feels like an easy change, opens up LOTS of usages for custom channels

#

Did anyone understand my ramblings?

#

Speaking of which, both label and call sign could be local too

#

so you can discover unknown channels and its name is unknown until some condition

devout wave
gaunt depot
daring wagon
#

As far as I can see should trigger, but only if map is open?
Confirmed and documented

daring wagon
solid marten
#

fixed sentence type

gaunt depot
# solid marten it does

What do you think about my local radio channel idea, is it viable? Would having this recipient list local work?

alpine tulip
gaunt depot
#

tl;dr; version:

  • Set radio channels to local mode. Users lists, callsign and label are no longer recieved or broadcasted.
  • By maintaining local users list you specify which clients will get your VON/text and which won't, this way you can have very flexible dynamic channels
alpine tulip
#

Oh your radio channel idea recalls me I wanted a "semi-realistic" radio simulation, like bad transmit quality if the one is distant from receiver

#

Also 2D radio voice, I'd like to hear from 3D too, from speaker's mouth

gaunt depot
#

Not sure if engine allows it though and its not hardcoded to only ever work with direct channel or something

#

NUMBER setChannelAudible3D BOOL something like that

#

I'd love to have usual channels work in 3d too

gaunt depot
#

Then you can scramble chat text through HandleChatMessage too

alpine tulip
#

Yeah setting VON vol is possible

gaunt depot
alpine tulip
gaunt depot
untold sky
daring wagon
#

In fact. They also don't work for markers because these are just strings. I kinda wish we had a alt syntax for add3DENEventHandler to just work with every eden entity.

#

Reusing addEventHandler looks like an odd choice but I guess there was a reason for it.

solid marten
uncut briar
#

Bump ๐Ÿ™

solid marten
uncut briar
#

I don't have any. Could probably mod it with minimal config changes

alpine tulip
gray wharf
#

discreetly assigns it to Dedmen

alpine tulip
#

It's quite โ€œwho uses it when it's bad?โ€ <-> โ€œif it's bad, make it betterโ€ situation

#

A few back ago, I tried to make such effect using what we have, but it's stupid since it is just bunch of particle effects ๐Ÿ˜ฆ

outer frigate
alpine tulip
#

Hell why I forgot the convo ๐Ÿ˜“

gaunt depot
#

Or did you solve them already and its no longer needed

brazen girder
#

MP Bug:
If Stomper RCWS is placed by zeus, it can be driven by him from the gunner controls.
Other players cannot drive from gunner controls.

Workaround: Taking driver controls, waiting a while until it reacts to WASD, taking gunner controls, now its drivable.

Problem about it: Modded remote controllable vehicles, where driver is not meant to be available, but only gunner controls, are unusable if given to players by zeus. ๐Ÿ˜”

Question: Is this fixable by scripting/cfg editing, or can this be fixed by an update at some later point? ๐Ÿค”

outer frigate
#

make a ticket

brazen girder
near cedar
gaunt depot
west onyx
#

love the new weaponholder manager ... one small request is to have a separate "minPlayerDistance" for it. i want tighter cleanup distance for weaponholders to vehicle wrecks, for example

solid marten
#

each can already have own radius not sure why wasn't done as separate param

gaunt depot
#

This way you get driver and then vehicle ownership as soon as you connect to gunner

#

So its script fixable

brazen girder
gaunt depot
#

player's group doesn't matter

brazen girder
gaunt depot
#

I don't remember about EHs, maybe there is something now, I'm simply checking getConnectedUAVUnit player each frame

#

if its a new uav vehicle and its not local, RE the server asking the ownership

#

server gets uav crew group, does setGroupOwner to remoteExecutedOwner

brazen girder
#

getConnectedUAVUnit is the whole group, or do you have to check for the group, before setgroupowner?

gaunt depot
#

getConnectedUAVUnit player is UAV unit

#

checked it again, I do setGroupOwner and then setOwner each UAV crew member (there can only be two, driver and gunner)

#

Oh there is another check, you should do this request only after gunner uav unit becomes local to you, no idea why

#

but maybe that's important, I didn't leave my future self a note

brazen girder
#

How would such a script roughly look like? Just so i prevent hours of testing on my end. ๐Ÿ˜… I know i can do it, but it might be a frustrating long process.

gaunt depot
#

Nevermind, getConnectedUAVUnit is a unit

devout wave
gaunt depot
#

Okay, here is my logic:

  1. Wait until you get new getConnectedUAVUnit unit and it is NOT local (means you connected to remote UAV for the first time)
  2. Wait until that new getConnectedUAVUnit becomes local
  3. Then ask the server for the rest of the vehicle's locality with RE
  4. Server does setGroupOwner on UAV crew group, setOwner on crew that is still remote
gaunt depot
#

There was a bug where you could connect two terminals to one UAV and have two players on different UAV crew members (or script it with remoteControl)

devout wave
#

Currently prevented, recent change (not stable yet) allows multi crew. KK was working on it

gaunt depot
#

I think I have something to break the connection to fix this so its always assumed one player controls one UAV

gaunt depot
brazen girder
#

Wouldnt be an issue, i would just lock the driver then.

gaunt depot
devout wave
gaunt depot
#

What was the idea? Connecting several terminals to same UAV?

#

You could already have two players controlling different UAV units before that with remoteControl

#

Having several terminals on same UAV was possible through a bug too

#

So I wonder what changed

devout wave
#

Yes, multiple terminals one UAV, so one player can control gunner while another controls the driver

gaunt depot
#

Unlimited number of terminals connectable to same UAV?

#

Optional? Always available?

devout wave
#

I think [citation needed] it was always intended to work like this, which is probably why the bug you mention existed

devout wave
gaunt depot
#

Please point me to post\ticket if you can

gaunt depot
#

I was script-fixing it being an exploit before ๐Ÿ˜ฌ

brazen girder
gaunt depot
#

I guess my locality change gonna need an update in case driver disconnects so locality can go to gunner so they can WASD+Shoot from one seat

gaunt depot
#

Apparently you can connect as many terminals as you want right now, but there will be no "Control driver", "Control gunner" actions if these are used by another player

#

Wonder what that hasTerminalOpened does now when multiple terminals are allowed

#

@ getEntityInfo

devout wave
gaunt depot
#

Well I guess its a done deal and we all need to account for that, accounting for several players on one UAV shouldn't be an issue on current stable, it was technically possible anyway

devout wave
#

I've got a feeling it'll be in 2.16 for the new RF UAVs, but that's not officially confirmed

gaunt depot
#

๐Ÿค”

brazen girder
devout wave
#

* I think it is the latter

solid marten
#

it's on dev why dont you try it and report any problems so we have time to fix if any. 2.16 will be small as I've heard

sleek scaffold
#

โ˜๏ธ "IgnoreFakeHeadHit" I am going to cry of happiness, this is the second time the devs actually listened to me (probably they listened to other dude). The first time was about the suppressedEH and it was damn worth the 3 days argument with dedmeme + him banning me from his heart

#

I was thinking that a "speedChangedEH" would be also great to have...

#

Just kidding, I am gone before being banned for good, bye

#

Devs too busy fulfilling CDLC devs wet dreams anyway so....

#

"I will find my own way the door now, thanks"

daring wagon
#

Devs too busy fulfilling CDLC devs wet dreams anyway so....
We have to make tickets as anyone else.

sleek scaffold
gaunt depot
gaunt depot
#

Considering new developments with official multi-terminal use, I'll need to rewrite my stuff anyways

sleek scaffold
# near cedar What will this enable?

Well, its name implies that the command can be used to avoid hits not being done to the head being registered as head damage erroneously by the damagedEH

west onyx
solid marten
unborn acorn
#

I'm writing ticket for hide the Vehicle channel (VoN and chat) for players not in vehicle and the Command channel for non leader players... I want to ask about the Command channel, biki (https://community.bistudio.com/wiki/Arma_3:_Field_Manual_-_Multiplayer) says

Command โ€“ to your faction commanders
So in my tests any non squad leaders can sand message in Command channel and it will be visible(audible) for him self and all squad leaders and no for other non-squad leads. Is this correct behavior?

solid marten
#

@gray wharf ^^

gray wharf
#

I unfortunately do not know, as I am not much of a MP person myself :(
I would assume that only leaders can speak there, but that's my best guess ๐Ÿ˜ฌ

solid marten
#

makes sense as we have side channel for everyone on the same side and group channel for anyone in the same group. current behaviour looks like side channel

gray wharf
#

group leaders won't notice if that's already the case, otherwise they will thank you for fixing it avoiding troll spam in lead chat

solid marten
solid marten
#

it makes no sense, your subordinate can send message on command channel for you to see but cannot see your reply on the same channel.

gray wharf
#

yep, makes no sense to me
makes subordinates able to spam chat without consequencesโ€ฆ

either that or it allows peeps to throw in intel, but it seems weird still to be able to talk to all leads without answer

brazen girder
#

https://dev.arma3.com/post/spotrep-00076

"Added: Using the hasDriver = -1 config parameter will now create a vehicle without a driver and with a commander who can drive the vehicle directly by the WASD keys "

hasDriver = -1; seems disfunctional for wheeled vehicles, only driving forward and backwards is possible, steering does not work. Aka WS, but not AD.

gaunt depot
solid marten
#

no that's done but if there are more bugs you can think of then yes

gaunt depot
#

All custom channels are logged as (Unknown) in RCON, is it possible to make these tags editable?

#

Something like this
NUMBER radioChannelSetLabelRCON STRING

#

Have it EL for simplicity

solid marten
#

which RCON? what about non custom channels

gaunt depot
solid marten
#

I can have a look if this can be done on Arma side and not some enum in BE

#

will need a ticket

desert trench
solid marten
unborn acorn
devout wave
daring wagon
#

Radius would be nice indeed

devout wave
outer frigate
#

is there any chance for a hideSelection/disableProxy command? want to be able to hide primary weapon on players ๐Ÿฅบ ๐Ÿ‘‰ ๐Ÿ‘ˆ

devout wave
outer frigate
#

i personally want it for two primaries so it can always use the positions but yeah would be really nice

alpine tulip
#

setProxyModel think_think

outer frigate
#

big smart

brazen girder
# gaunt depot Okay, here is my logic: 1. Wait until you get new `getConnectedUAVUnit` unit and...

Im later gonna do it for rewrite it for UAV's.

But does any version of the following make sence for a player gunner & commander, with an ai driver? To combat locality issues:

init="if (!isserver) exitwith {}; (_this select 0) spawn {while {true} do {setEffectiveCommander (gunner _this); sleep 1;};};"

init="if (!isserver) exitwith {}; (_this select 0) spawn {while {true} do {(group (driver _this)) setGroupOwner (owner (gunner _this)); _this setOwner (owner (gunner _this)); sleep 1;};};"

init="if (!isserver) exitwith {}; (_this select 0) spawn {while {true} do {setEffectiveCommander player; (group (driver _this)) setGroupOwner (owner (gunner _this)); _this setOwner (owner (gunner _this)); sleep 1;};};"
gaunt depot
#

I don't think constantly setting ownership in a thread is a good idea

#

if(owner gunner _this != owner driver _this) then {...};

brazen girder
gaunt depot
#
init = "if(isServer) then {_this select 0 spawn {while {true} do {waitUntil{sleep 1; owner gunner _this != owner driver _this;}; group driver _this setGroupOwner owner gunner _this; _this setOwner owner gunner _this; sleep 1;}}}";
#

Didn't test

brazen girder
unborn acorn
#

I renamed tank display name in mission folder via change key's text in stringtable.xml str_a3_cfgvehicles_b_mbt_01_tusk_f0, after game start localize "str_a3_cfgvehicles_b_mbt_01_tusk_f0" will return my changed text but IGUI will with original text
So question, can configs take changed(in mission folder no new mod) text instead of the original one to draw for player UI? This game tweak can give ability to rewrite any string in for selected scenario without creating mod

desert trench
#

currently not as strings in game configs get localized on startup

devout wave
gaunt depot
#

Wanted that since my first day of scripting

#

A getter is also needed though

unborn acorn
alpine tulip
#

Kinda interested that why the renderer does it correctly to render this situation? Is this because Prowler's seat LOD is built somewhat differently?

alpine tulip
#

Actually it is good to have this Z sorting render priority without issue, especially upon attachTo

gaunt depot
alpine tulip
#

No, that's not the case

#

Like in Hunter, you could see the arrow inside outside

gaunt depot
#

๐Ÿค”

alpine tulip
#

You know what I mean. I've always expected to see that issue everywhere but found out that's not a case in some situation

devout wave
#

Maybe it's because of the seat being FFV?

brazen girder
alpine tulip