#arma3_feedback_tracker
1 messages ยท Page 13 of 1
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
https://feedback.bistudio.com/T179398 Scenario localizations are borked in menu 
is stringtable.xml exported with the mission?
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.
and it it is unpacked does it still not work?
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
ah
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
Unit rotates around collision shape which shifts depending on animation
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
Hmm, I haven't checked angular velocity values
Which causes inconsistent velocities and network interpolation
You can't. Units don't have angular velocity
Then its all clear
It's an internal thing probably
They don't
Collision shape follows you
Not the other way around
Not sure what you meant by how fast you rotate the mouse, my test script calculates exactly the same velocity as does the game, using entity position
I think you're wrong
I'm not
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
That's because of how the game resolves collision
I was planning on fixing it but never got to it
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
Nevermind, it is correct
Collision shape moves forward even when you move backwards
By "when you move backwards" are you talking about the keyboard?
Because as I said collision shape follows you
Is that why sometimes when you're stuck in an object, you can get out of it forwards by trying to go backwards...?
You move backwards, collision shape moves backwards
if I put unpacked mission in Arma 3\Missions folder I see this, so close to being okay but still no description
As I said that's because of how the game tries to resolve collision. It just moves you based on opposite of your velocity (it also did something with closest point to outside but I don't remember what it was)
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
my bad, I didn't read all the way up
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
Talking about keyboard movement, yes
All I can tell you is that, from what I remember, this is how things worked:
- You try to move, let's say forward
- That animation has an rtm velocity
- The game creates a "potential state" based on that velocity and where you would be
- 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
And none of this has anything to do with that teleporting issue
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
Well if, say, you move backwards, get stuck, then move forwards, yes, you keep moving into the wall
This test is done only by pressing S
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
I know
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
Well I know all this, but what does collision shape have to do with this?
Because it doesn't
It doesn't
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
Which part of that script is showing that exactly?
,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
Sure
thus proving that game rotates you around your collision shape and not your entity position
because it moves your entity position with this rotation
What? Where does it prove that?
You aren't really going 20-30 m/s yet hint shows that
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
Did you get what I meant by this btw?
that drawIcon3d is there so you can see the distance between this "swirl" and the icon
None of this makes any sense to me because you don't rotate around the collision shape
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
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)
where collision shape is
I actually wanted to do that but I'm not sure what model requires and if there is an example one
Just open a vanilla collision shape in object builder and move it... 
isn't it binarized? ๐ค
It is but you can debin it "for education purposes" I guess 
It's a simple model. You can make it in object builder in a few minutes
You need like 20-30 selections too iirc
Sorry if I sounded too mean with my explanations btw. I meant no offence, just rushing with the replies before going off to bed.
here. try these
Did you base it off Perc_Wrfl_offset.p3d?
alright
Also remember to use diag exe to check the collision shape
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 
It doesn't make any sense to me 
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
My bet would be origin position
try saving them with/without autocenter?
Well if you open my models you'll see their origin is not 0,0,0
*compiling
Which part of you collides when using my models?
first one was further forwards than usual
second one I couldn't figure out, but it let me go through walls
Then it's correct
but in both cases it was making me rotate around center
Second one was behind the character
and velocity was always 4 m/s no matter how much I move the mouse
Just use diag exe to see what's going on with collision shapes
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
diag_drawMode "geometry"
Shows you the collision shape
I have a hunch that maybe this collision shape is below the ground?
Which causes weird things
Afaik there is no such collision shape for moving animations 
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?
could you add this to the ticket please
done
Can't seem to see it ๐ค
I don't think it shows collision shape
Oh it does show something now
Red cylinder thingy?
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
I found the file btw, had to use some obscure pbo unpacker to get it
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
Would this fix also block the players from doing that backwards leaning wallglitching ? 
Nope, only MP sync issues
wall zombies
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
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 
i kinda feel like it worked at some point with helicopters, but could never tell if it was working with planes
It worked, used it for both. The thing is it takes terrain into the calculation. If you set it to 50m and there is a 200m mountain in it's fly path it will need to increase the flyInHeight (for obvious reasons).
Never used it with such low values, there might be a min value 
Speaking of this, I wonder if backwards movement animations can be configured to use more centric collision shape to at least remedy this a little bit.
Also new diag exe feature idea, draw animation state rotational axis alongside collision shape geometry
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
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
Having diag exe show exactly where axis is would be helpful
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.
getCorpseWeaponholder to compliment getCorpse ๐ or ๐
There should be two
Primary and secondary
But otherwise I vote ๐
Having to add Put event handlers on units to get these WHs on death right now
Can't be, both primary and secondary drop from unit and both should behave the same
Yes, launcher
Should be, let me double check
getCorpseWeaponholderS then
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
nice, so will be array then
getCorpse shouldv'e been getWeaponCorpse then though
not really
lets not start complicating stuff
getCorpseLoot?
samely misleading though
Hmm, do you drop your guns the same way when you're unconscious? ๐ค
Uncon shouldn't leave weapons from ragdoll
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
If you need order you can check if weapon is primary or secondary by its type
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
I know this is just a nitpick but seems -noLand makes the process name Model viewer
Pointless
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
This has been a problem for a while (https://feedback.bistudio.com/T159872, https://feedback.bistudio.com/T174838 etc) and the 2.14 new syntax was supposed to fix it ๐ค
is it just me or was it so at some point that script errors would not show up in some places like eachFrame event ?
some errors don't show in unscheduled env
ok, would it be good idea to have some command that toggles all errors on? then mission makers could choose if he wants all errors to show while debugging the mission
i think the question is more of where script errors are shown, not which commands show them
yeah I think it was only nils 
nulls passed to commands dont seem to report error either
It depends on context, I think UI button press makes nil report errors even in unscheduled environment?
Honestly I wish there was a way to flip this for debug purposes
diag_reportNils BOOL;
```or something like that
or showAllScriptErrors bool
fixAllErrors
playArma4;
I wish there was a prompt saying "Good try" when you enter those x)
Generic error in expression: fixEverything; lol no
nulls still have a valid type. nils don't
is there a possibility of disabling filepatching while game is loaded?
No
sad
No
ticket time? i was hoping someone who knows better would make a ticket if its ok
But it makes little sense
how so?
Only thing not shown is nil stuff
And that's valid behaviour of SQF.
It just differs between schedule and unscheduled
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
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
But what if you intentionally pass nil to short circuit it and do nothing.
You could do so since forever, it's valid SQF.
well i understand that, and that's why i suggest a command to change the behaviour, for testing purposes
it would slow the runtime then
no backward compatibility problems then
its ok if its slower as its only used for testing
I guess you meant the new if checks...
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
I don't think so, but if you wanted to overload isBurning or inflameโฆ :3
unfortunatelly no, it is related to damage the fire inflicts on a man
the wreck burning is destruction effect, to be precise - smoke. So you can detect if wreck is smoking but there is no direct getter for the fire as it is part of smoke effect
Having a setter could be also cool
doesnt work like this it is not simple on off effect
Which btw also doesn't work reliably, because individual particles do the damage and you can't detect that
Not sure how this stuff is setup to be honest, I was expecting some entity variable for burning duration that is calculated off fuel and ammo at the time of death
But maybe its just a life time of a particle emitter?
random between min and max from config
Or sleep; deleteVehicle _emitter; in some script?
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?
Never ever used vehicle respawn ๐ค
Can inFlame command be tweaked to hide user action to off/on flame? e.g. by 2nd param:
_fireplaceOne inflame [true, true] ;
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)
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
in that case you should read the note here:
https://community.bistudio.com/wiki/addEventHandler
EH will be set to contents for the code by that variable you provided
So if its added earlier than you have the variable or you set\change variable later, EH wont change
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
then it's because of what I showed in that note
your function probably has an exitWith or something
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!
Spam account
a getter for respawnVehicle, does array = respawnVehicle vehicle look weird?
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
wasnt even aware there was engine driven vehicle respawns ๐
Same actually. I thought there was only a scripted implementation.
i'm planning on writing up on wiki about it
FT ticket please
please include a link to that discord message I replied to for reference
Sure. I did it 6 years ago https://github.com/dedmen/Intercept_CBA/blame/master/src/SQFExtension/Utility.cpp#L558
I never actually implemented it after I joined, because.. eh
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
There were some bugs where that happened. I should have fixed them all though.. If you have a repro..
Errors are only shown if the game does if (error present) ShowError();
in some places that was missing
null != nil
If you mean nil, that is not always an error. Sometimes that is done intentionally
good to hear. I was hoping someone who knew better would make ticket or something if this still needs fixing. yeah I meant nulls
I did notice all of that. But having not written the code, I couldn't know for sure ๐
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.
can't it go higher through scripting though?
Yeah, not sure though.
With accTime 100, clouds move really fast but the everything else seems to be clamped at 4 times speed.
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
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
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
Why on earth did noone do abs(value)
try 0 lololol
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
Esc
Esc isn't a command :U
I'm surprised there's not something for SP.
make a ticket I will have a look
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.
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)
I think more of filters, like color corrections, blurs, some others like CSS does
The better way would be a procedural texture
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
*better because it'd fit into any other picture displaying source, not just a dedicated UI control
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)
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
hm, sounds like that'd come with a lot of overhead - iirc every R2T is a separate draw call
Not R2T but U2T, its a single draw and then it remains in video memory
it'd also cause the images to be affected by additional factors like lighting, and would likely make the icons appear blurry
But, I would call it โtoo much effort for a simple goalโ and push it to Ded ๐
Good point, I'm not sure if UI objects are affected by time of the day, I think they are?
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?
last I checked (which was years ago) they weren't, but there was still some kind of "fixed" directional lighting that could not be controlled
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
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
Zoomed result
huh, that looks surprisingly good for R2T - but I'm still concerned about the performance cost
Checked with
recently, he said its fine
Yeah, I wonder if its possible to make custom p3d and feed it into CT_OBJECT for it to have a texture
if it is, then its solveable
oh yeah, I'd accept that as a solution (though I'd still argue that it's not the optimal solution ๐ )
Welp, thats Arma. Sometimes seemingly most basic things are either impossible or require large setups to work.
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
You can have UI inside CT_OBJECT_CONTAINER on a selection
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
should be able to
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 
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.
ah, bummer - but thank you for investigating this idea ๐
yeah that wouldn't work - that stuff isn't really drawing on a face or anything its just drawing the ui in that area iirc
compared to the render to texture stuff
CONTROL ctrlSetModelTexture [SELECTION, TEXTURE] when?
can we get callUnscheduled command so you wont have to use isNil command to run code unscheduled?
but that's longer?
longer is cool ๐
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
probably it checks for that nil too, would avoid that
whole lotta love is coming to vehicle respawn
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 ๐คฃ
Awesome. Can't wait to see what this love looks like.
testing it the will write a page on wiki
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.
you can make a ticket and i can assign it to myself not to forget
How many of you use respawnVehicle command?
I use the vehicle respawn module, don't know if the module makes use of the command...
It does not
I haven't seen a single community mission using engine respawn for vehicles in my life.
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
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.
you can set position by returning it in respawn event handler
Didn't know that Respawn eh works for vehicles.
Then I can also copy things from old to new vehicle easily.
ah good point, i need to check something
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
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.
would have been nice but that would require new system of handling when vehicle is alive
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.
*iirc (to be checked), naming a unit My_Unit in Editor will still target the respawn unit later
regarding public variables, same as unit respawn?
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
the name is transferred and assigned new object as far as i can tell
but it creates new vehicle, so you get a new vehicle with basically "false" state of variables.
you can have marker respawn_vehname and base respawn for vehicle and move it wherever you want
how's that related to what I wrote?
global and moddable
I'm writing about variables on vehicle object.
don't need eh
unless you are talking about something else
ACE uses engine vehicle respawn?
it does not, mission maker can use it with a mission that does
what do you suggest
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
and what did I do to make you think it is not gonna be this way?
sometimes it ends up in a fountain of vehicles flying into an air and exploding on dedicated
nothing is changed, unless you explicitly use respawnvehicle with enabled respawn nothing is automatically respawning
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 ๐ซ
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.
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
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
p:\a3\functions_f\systems\fn_respawnmanager.sqf
254 _what respawnVehicle[-1, 0];
this seems the only time A3 itself uses the command
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
yes it also uses RE
some arma 2 relic
i think to have the basic functionality working is fine. just wouldnt attempt to do more than that
the 0 will have to change for -1 and judging by this feedback probably for the better
is vehicles not being able to collide with attached objects an oversight/bug/limitation?
players can just fine
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
I disagree, I find it very useful to be able to attach things so they stay still but don't lose collision and interactivity
They do lose interactivity with everything else in the world
i dont understand why itd work for players and not vehicles then? or is it just players dont seem to need that flag because they're only partially physx or something?
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
Men don't use PhysX for collision which is why it's inconsistent
ah
wait hang on how on earth do the aircraft carriers have collisions with planes 
theyre just pieces attached right?
I'm not sure they're actually attached
No
oh
They're separate afaik
i thought the multipartstructure thing attached them
my lead has gone dry then
surely house sim could maintain collisions? theyre not physx iirc?
same as any static object, I guess
yeah i thought they were attached
attached to what?
logic entity
oh ok
No, they're just positioned relatively to init piece by script
โ๏ธ 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....
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 ;)
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?
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
Wish this fix could make it into the game
mind if i pinch this for two primaries? would be pretty useful
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
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[]
Why is it a dumb idea?
was this fixed? I see there's a ticket number assigned and was unable to reproduce just now (profiling).
I fixed it myself 2 years ago
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
Does awake even do anything to dead units ragdoll bodies?
it is probably because dead body stops certain network updates to save on performance? haven't looked at it but it's the first thing that comes to mind
Having commands to manipulate dead bodies would indeed be useful, even simply being able to reliably stop ragdoll simulation.
there is quite a lot of traffic for brain class which when destroyed soon after death is not updated any more
That's pretty much what it was added for, allowing desimulated corpses to be re-ragdolled when buildings get destroyed
When I was making my body dragging script I remember it doing absolutely nothing
Sorry, not what it was added for, but functionality specifically for that was added to it 1 update after it was added
does it still drop body with building destruction?
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 
I probably can script simulate animations, now when we have that alt syntax for switchMove
It appears to be working fine on current stable. Manually doing awake on a corpse also has a visible effect.
๐ค
As mentioned, there was a 1-update gap between when awake was added and when it started working on corpses. If you tested after 2.08 but before 2.10, you would've been using the version without necromancy enabled.
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?
Yes
I think there also was some kind of bug with config inheritance?
Nevermind, its animateSource issue
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
lockCameraTo
that or the vehicle must be simple object to use animate
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
That sounds like something that would be really hard to automate for larger number number of vehicles
Before you were a dev? Did that fix made it to unmodded Arma 3 yet?
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
as probably 90% of arma modders can relate there just arent enough hours in the day
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
yes. I didn't have time to add it "officially"
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.
tho I never got to check the game code to see why idle affected the legs during weapon switching. that's why I didn't add it to the game
arent they gestures? 
if it is in your power to add them officially please do so so the work doesn't go to waste. As a mod it would have a narrow reach in comparison
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
https://feedback.bistudio.com/T171273
Have a ticket about it, couldn't fix it myself
Having both issues fixed would be great
@solid marten should i expect the vanilla garbage collector (wrecks and bodies) to be more performant than an identical SQF scripted system?
isnt the vanilla garbage collector done in sqf? 
hence the Q ๐
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
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
Yeah I think so
which sqf system? i can't compare to unknown
@solid marten did you do the suggested fixes part 2 for garbage collector, or still wip? (was/is it related to vehicle respawn/wrecks)
should be in
ok great - we will test with next dev branch update then
yes please
RIP bob
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?
Or replace with a dummy/invisible corpse that has minimal overhead?
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.
Indeed, whatever is optimal for performance is the way to go with Arma...
Devs tackling the previously dysfunctional Garbage Collector is a godsend, much needed. Tremendous midfield goal by KillzoneKid who scores another one for team BI
Thats the default behaviour. These weaponholders monitor themselves. When corpse is deleted they delete themselves
In most cases yes, but I do have use cases where I'd like to disable it
surely you can just remove them from garbage collectable
You'd have to remove the corpse, because the weapon holder deletion is an engine feature not a GC feature.
ah i see
normal weaponholders are not yet automatically added, still WIP
i guess im asking if the garbage collector is in SQF or internal
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
@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"
was always possible
there is Respawn and MPRespawn
both can return position
also was always possible
I am writing a page for a vehicle respawn mechanics
in the docs it appears just on "respawn_vehicle_WEST" marker(s)
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...
2.18?
probably
https://community.bistudio.com/wiki/load3DENScenario Are these example still correct?
17:43:33 Error +: Invalid scenario name format. Expected format: missions\MyMission.VR or MPMissions\MyMPMission.VR
Nevermind.
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.
whats broken
sighs
_array deleteAt random (count _array - 1) breaks. Happens in live code.
This is how I found the issue in the first place.
try selecting from array : floor random 10
i call horse poo on this one
count array -1 is the last element whatever happens you are not exeeding it
Doesn't help.
give me repro where it breaks with floor added
I mean, the original code was _road = _roads deleteAt floor random count _roads;
Nah, it'd take forever to replicate with that.
good, means it is fine
floor 0.99999999999999999999999999999999999 is 0 not 1 no matter how much you try
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.
this ^^^ explains it
If you think there is a problem with random, make repro and I will look at it
make a repro where it returns 10
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
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.
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
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.
Check if random == input number and then run it again?
Probably will be super fast in engine
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
loadConfig "a3\data_f\default.rvmat"```causes an CTD?
Because I thought up for a VERY VERY specific and small special case. I'm not sure it's worth it to change how CfgPatches work
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.
Seeing group event handlers makes me wish there was an event handler that fired when unit changes group
GroupChanged or something
there is no left and joined?
Nope, no group events on entities
I think @untold sky added Group EHs, can it be done?
you can always add a group EH to the unit's group then re-grab the new group after that?
Hmm, good idea
I use this to update data on the server when units are spawned into or move into another group
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
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?
Player controlled groups are handled seperately.
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
is this a low hanging fruit @solid marten ? https://feedback.bistudio.com/T178710
I'd rather have _hashmap deleteRange _arrayOfKeys
Is this really needed with SimpleVM being a thing? Won't it practically do that already?
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.
ive been tinkering with arma for awhile and never heard of simplevm
Probably is easy to implement though.
deleteAll would be a more fitting name
New names are bad, right
_hashmap deleteAt _arrayOfKeys is another option.
Oh there is ARRAY deleteAt ARRAY since 2.18
huh, 2.18 already added array deleteAt indexes
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];
I just want that for the return value so I can simpify all the godawful z-sets.
oh also _hashmap findAny _arrayOfKeys
Same, my most needs for this are Z coordinate sets
should be local to whichever machine added them, not group locality
@untold sky https://community.bistudio.com/wiki/Arma_3:_Eden_Editor_Event_Handlers#OnEntityParentChanged Is the behaviour I have documented here intended?
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
UnitJoined and UnitLeft locality is all over the place
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.
Nope, there is no comprehensive getter for cameraEffect
I also miss current viewmode (NV/TI)
GIB
Not sure how this works internall. getCamera? getCameras?
if its null, then you're viewing cameraOn entity?
I think cameraEffects or something like that, that could return [camera object, effect, viewmode, isPrimary, r2t] or smth
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
(get3DENSelected "Trigger" # 0) addEventHandler ["AttributesChanged3DEN",
{
systemChat "AttributesChanged3DEN";
call ENH_fnc_garrison_updateValues;
}];
Event handlers can be added to triggers?
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
That would explain some things ๐ค we ended up having to just constantly do channel eligibility checks because people were occasionally failing to be added/removed by event-based checks and we couldn't figure out why
Yeah I do this during spawn and when mission starts a lot of players add themselves, you end up with players randomly not being in the channel, same as if everyone would do publicVariable and overwrite each other
Lets see if RE to the server to add you to the channel will be more reliable
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?
Now it exploded with FuelExplosion again
WTF is going on
Oh, it is scripted. Weird.
Feedback Tracker feedback: Could the default operating system when filing a bug report be Win 10 x64 now?
done, thx
it took me more time to find how than to do it ๐
Thank you! ๐
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
Well, why I thought of Profile is, a software like ImBatch does recognize correct color
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) }];```
isn't there is a mission event handler for that?
for what?
There is CuratorObjectDeleted
ahh
scripted look in functions what is called in from killed EH in config
Yeah, found it. Thought engine was doing it for the helicopters.
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
there's still the question of recovering the deleted vehicle
i guess capture the info in deleted event and respawn it manually?
Probably.
Moved radioChannelAdd to be executed only on server side, seems to be reliable now
@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:
- Unit got fall damage
WorldDamage = [unit, 0, damage, velocity] - Unit got hit by some moving entity
ManDamage = [unit, 1, damage, entity] - Unit got particle (fire) damage
ManDamage = [unit, 2, damage, cloudlet class?] - Unit got drowning damage
ManDamage = [unit, 3, damage] - Unit got damaged by rotor
ManDamage = [unit, 4, damage, [helicopter, rotor index?]] - Unit got damaged by propogated EPE damage (car hit another car, crew inside got damage) =
ManDamage = [unit, 5, damage, got hit by?]
If this can be verified with more long-term testing, then that's definitely something worth putting on the wiki
I'll monitor the situation
what wasnt reliable?
radioChannelAdd executed on clients seems to end up with clients randomly being excluded from that list
Happens the most during start where each client adds themselves to the same channel, some players are randomly missing
I was expecting you to say that ๐
Same as if all players would publicVariable at once, you end up with one client overwriting others
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
Yeah, very unreliable when used on clients
i will fix that make a ticket please
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
Will do some time
still no mechanism of removing units?
There is radioChannelRemove
But I wonder if this list ever gets cleaned up, no way to script check that
ah ok probably better leave it this way
Say players add themselves, die, respawn, add again
Does it end up with 100s of nulls
yeah good idea will have a look
make a ticket and mention all that i can see this can be improved already
Will do, have another bug to fix there (sentenceType is not broadcasted)
for custom channel or?
Yes, you can specify sentenceType in radioChannelCreate and its not broadcasted anywhere, only server sees effect of it
it was meant to add only so no harm if all clients execute at once, you should be able to add just one unit, as of now it seems it will overwrite not add (speaking of channel units)
In practice having each client adding themselves on game start ends up with clients randomly missing from the channel
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.
yeah it doesnt
This way you could use same channel for all sides instead of having to use scarce channel IDs for each side
lets fix all this first
its already a lot
then will see, but for now I need all the bugs in one ticket
Alright, I'll do the tickets for custom channels some time later
Speaking of which, I wonder if making radioChannelAdd completely local could achieve this effect
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
you can already do that with preprocessor has_include
Thats how eden works
As far as I can see should trigger, but only if map is open?
OnEntityAttributeChanged ?
will check.
So it basically first moves it into a "void" and then assigns a new parent
Not a problem as long as it's intended and documented.
Going further with this idea, you'll be able to do stuff like Radio <1km custom channel, by adding and removing players that are near you
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
Addition: radioChannelRemove seems to have the same thing, just the other way (units not being removed when they should be)
yeah probably gets overwritten the same way by a change from another client
That was it
As far as I can see should trigger, but only if map is open?
Confirmed and documented
@untold sky
None of the event handlers here (https://community.bistudio.com/wiki/Arma_3:_Eden_Editor_Event_Handlers#Object_Event_Handlers) work for triggers. Looks to me like an oversight. Maybe because addEventHandler was originally not designed for Eden entities?
Would it be worth making a ticket?
it does
fixed sentence type
What do you think about my local radio channel idea, is it viable? Would having this recipient list local work?
True point but I'd like to see more "wise" solution, plus binarization
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
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
Oh yeah, that was another thing I thought of, being able to customize that
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
If my idea is viable, you'd be able to add and remove some distant\obstructed client each other frame for worsening audio quality for example
Then you can scramble chat text through HandleChatMessage too
Yeah setting VON vol is possible
Wont work for all languages though
I'd imagine [2D, 3D] IMO
Yeah, perhaps
ticket please. The eden collab guy will need that ๐
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.
where is my custom chat bug ticket
Bump ๐
is there vanilla repro?
I don't have any. Could probably mod it with minimal config changes
Yearly reminder: I want a better DOF ๐ฉ having only 4 blurs is very bad...
https://feedback.bistudio.com/T163827
discreetly assigns it to Dedmen
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 ๐ฆ
dedmen said he would do scripted DOF when i asked earlier this year ๐
Hell why I forgot the convo ๐
Which issues? Adding-removing players? sentenceType?
Or did you solve them already and its no longer needed
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? ๐ค
make a ticket
How?
I remember this, I had to do scripted ownership transfer
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
maybe an array option [corpses, wrecks, weaponholders]
each can already have own radius not sure why wasn't done as separate param
Answering what I meant, when getConnectedUAVUnit player to a new vehicle, I ask server to change UAV crew group locality to new user with setGroupOwner
This way you get driver and then vehicle ownership as soon as you connect to gunner
So its script fixable
I tried this, but likely with the wrong eventhandler as trigger.
The ownership is independant from ace group right? As i dont want the player to be in a seperate ace group, or the AI shown in DUI.
player's group doesn't matter
Wonderfull.
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
getConnectedUAVUnit is the whole group, or do you have to check for the group, before setgroupowner?
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
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.
Nevermind, getConnectedUAVUnit is a unit
Be careful with this in new versions that allow multiple players to control a UAV at the same time. I dunno what happens if you transfer group locality away from a player who's currently "using it"
Okay, here is my logic:
- Wait until you get new
getConnectedUAVUnitunit and it is NOT local (means you connected to remote UAV for the first time) - Wait until that new
getConnectedUAVUnitbecomes local - Then ask the server for the rest of the vehicle's locality with RE
- Server does
setGroupOwneron UAV crew group,setOwneron crew that is still remote
Any info? I thought it was actually prevented from being controlled by multiple players
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)
Currently prevented, recent change (not stable yet) allows multi crew. KK was working on it
I think I have something to break the connection to fix this so its always assumed one player controls one UAV
Can you point me to the ticket or post about it?
Wouldnt be an issue, i would just lock the driver then.
You can use my logic only if there is no driver or driver is locked
On mobile right now so don't really want to search for it. It was discussed in here, devbranch, or perf, most likely
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
Yes, multiple terminals one UAV, so one player can control gunner while another controls the driver
I think [citation needed] it was always intended to work like this, which is probably why the bug you mention existed
I don't remember/that wasn't in the information given
Please point me to post\ticket if you can
Thanks! So it is indeed unlimited number of connections are allowed now
I was script-fixing it being an exploit before ๐ฌ
Which has control priority then?
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
Simply connecting doesn't change anything, its when you take control what matters
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
"right now" is for dev/perf, to be clear. That change was too late for 2.14 so it's not on stable branch yet
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
I've got a feeling it'll be in 2.16 for the new RF UAVs, but that's not officially confirmed
๐ค
Do you have it on a github or so? ๐ค I can likely make it, but as its a MP issue it takes a lot of time booting the server after every test, and requiring a second person to confirm its working. ๐
I'm unclear on whether that's for use on the UAV unit, or the player who has the UAV terminal open. It might be the latter, in which case it will work exactly the same way because a single player can still only have one active terminal in their terminal slot.
* I think it is the latter
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
โ๏ธ "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"
Devs too busy fulfilling CDLC devs wet dreams anyway so....
We have to make tickets as anyone else.
Good thing that a CDLC's wet dream is often also a moder's wet dream too ๐, so keep those tickets coming ๐
What will this enable?
Last time I tried it did nothing
No I don't, sorry
Considering new developments with official multi-terminal use, I'll need to rewrite my stuff anyways
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
this would be ideal
And I asked you for the repro as it was working for me
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?
I'm not sure because I understand biki info, this channel is visible and audible only for players who are leaders https://community.bistudio.com/wiki/leader
@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 ๐ฌ
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
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
I just created ticket about it
https://feedback.bistudio.com/T179942
yes, it looks like this is how it was intended in the code, and if it doesnt work like this (cannot immediately see why it shouldn't) it is a definite bug
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.
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
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.
Do you still need add/remove users for custom channels and sentenceType bugs tickets or you already fixed it?
no that's done but if there are more bugs you can think of then yes
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
which RCON? what about non custom channels
RCON and server log file, here is how global vs custom looks like:
22:43:36 BattlEye Server: (Global) Sa-Matra: This is global
22:44:11 BattlEye Server: (Unknown) Sa-Matra: This is custom
I can have a look if this can be done on Arma side and not some enum in BE
will need a ticket
can confirm, and it used to work for wheeled. please make a ticket
No need for ticket. it is BE enum so it is BE problem
Forgot notice about subordinates can send to command channel but can not get answer (chat or VoN) and other subordinates will not see this message
A small SQF-only change that would make BIS_fnc_holdActionAdd a lot more flexible: https://feedback.bistudio.com/T179964
Radius would be nice indeed
This is not a small SQF-only change, but can't hurt to ask :D [locking specific inventory slots]
https://feedback.bistudio.com/T179980
is there any chance for a hideSelection/disableProxy command? want to be able to hide primary weapon on players ๐ฅบ ๐ ๐
That would be useful for me too actually. I'm using an animation in a mission that has the primary weapon stuck to the hand when it shouldn't be, and it'd be much more convenient to hide the weapon rather than trying to figure out a way to take it away and give it back afterwards
i personally want it for two primaries so it can always use the positions but yeah would be really nice
setProxyModel 
big smart
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;};};"
I don't think constantly setting ownership in a thread is a good idea
if(owner gunner _this != owner driver _this) then {...};
Probably, but ngl, spending many days on this im getting desperate to find anything that works.
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
Gonna give testing results sunday evening. ๐๐
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
currently not as strings in game configs get localized on startup
Relevant ticket (not for any string but would cover this particular case, and I think that's more likely to be practical) https://feedback.bistudio.com/T119190
Custom vehicle names would be super useful
Wanted that since my first day of scripting
A getter is also needed though
Can description.ext make it possible? There are some config overrides... Something like:
updateStrings=1;
allowStringsOverride=1;
allowStringsUpdate=1;
Kinda interested that why the renderer does it correctly to render this situation? Is this because Prowler's seat LOD is built somewhat differently?
Actually it is good to have this Z sorting render priority without issue, especially upon attachTo
Arrow transparent texture something-something?
๐ค
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
Maybe it's because of the seat being FFV?
@gaunt depot So someone told me vehicle init is local only. So i cant use it there.
I tested it in the excecute field in zeus instead, but couldnt get it, or edits of it to work.
Any suggestions/ do you remember how you did it back in the day?
Hm looks like true point