Event Handlers – Arma 3 Talk

From Bohemia Interactive Community
Jump to navigation Jump to search
m (p.s.)
(This may be common knowledge amongst veteran Armaholics, but noobs need clear documentation. That's what it's for.)
Line 67: Line 67:
::Very strange behaviour. [[User:Fred Gandt|Fred Gandt]] ([[User talk:Fred Gandt|talk]]) 13:42, 4 March 2014 (CET)
::Very strange behaviour. [[User:Fred Gandt|Fred Gandt]] ([[User talk:Fred Gandt|talk]]) 13:42, 4 March 2014 (CET)
:::Although I'm getting to the bottom of it... [[User:Fred Gandt|Fred Gandt]] ([[User talk:Fred Gandt|talk]]) 08:08, 5 March 2014 (CET)
:::Although I'm getting to the bottom of it... [[User:Fred Gandt|Fred Gandt]] ([[User talk:Fred Gandt|talk]]) 08:08, 5 March 2014 (CET)
==HandleDamage==
10 shots at a scripted Pawnee from a 6.5mm MX at close range resulted in the following to [[diag_log]]:
<pre>
"Event: 0 || Total Damage: 0 || Hit Damage: 0.00104039 || Section: The vehicle"
"Event: 1 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The fuel"
"Event: 2 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The hull"
"Event: 3 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The engine"
"Event: 4 || Total Damage: 0.00104039 || Hit Damage: 0.650052 || Section: The avionics"
"Event: 5 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The tail rotor"
"Event: 6 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The main rotor"
"Event: 7 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The glass1"
"Event: 8 || Total Damage: 0.00104039 || Hit Damage: 0.0114876 || Section: The glass2"
"Event: 9 || Total Damage: 0.00104039 || Hit Damage: 0.00114631 || Section: The vehicle"
"Event: 10 || Total Damage: 0.00114631 || Hit Damage: 0 || Section: The fuel"
"Event: 11 || Total Damage: 0.00114631 || Hit Damage: 0.0123528 || Section: The hull"
"Event: 12 || Total Damage: 0.00114631 || Hit Damage: 0.00237226 || Section: The vehicle"
"Event: 13 || Total Damage: 0.00237226 || Hit Damage: 0 || Section: The fuel"
"Event: 14 || Total Damage: 0.00237226 || Hit Damage: 0.10704 || Section: The hull"
"Event: 15 || Total Damage: 0.00237226 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 16 || Total Damage: 0.00237226 || Hit Damage: 0.00250229 || Section: The vehicle"
"Event: 17 || Total Damage: 0.00250229 || Hit Damage: 0 || Section: The fuel"
"Event: 18 || Total Damage: 0.00250229 || Hit Damage: 0.117041 || Section: The hull"
"Event: 19 || Total Damage: 0.00250229 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 20 || Total Damage: 0.00250229 || Hit Damage: 0.650052 || Section: The avionics"
"Event: 21 || Total Damage: 0.00250229 || Hit Damage: 0 || Section: The tail rotor"
"Event: 22 || Total Damage: 0.00250229 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 23 || Total Damage: 0.00250229 || Hit Damage: 0.00289331 || Section: The vehicle"
"Event: 24 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 25 || Total Damage: 0.00289331 || Hit Damage: 0.194735 || Section: The hull"
"Event: 26 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 27 || Total Damage: 0.00289331 || Hit Damage: 0.678438 || Section: The avionics"
"Event: 28 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The tail rotor"
"Event: 29 || Total Damage: 0.00289331 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 30 || Total Damage: 0.00289331 || Hit Damage: 0.101878 || Section: The glass1"
"Event: 31 || Total Damage: 0.00289331 || Hit Damage: 0.00289331 || Section: The vehicle"
"Event: 32 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 33 || Total Damage: 0.00289331 || Hit Damage: 0.205623 || Section: The hull"
"Event: 34 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 35 || Total Damage: 0.00289331 || Hit Damage: 0.714742 || Section: The avionics"
"Event: 36 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The tail rotor"
"Event: 37 || Total Damage: 0.00289331 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 38 || Total Damage: 0.00289331 || Hit Damage: 0.133224 || Section: The glass1"
"Event: 39 || Total Damage: 0.00289331 || Hit Damage: 0.00289343 || Section: The vehicle"
"Event: 40 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 41 || Total Damage: 0.00289331 || Hit Damage: 0.205623 || Section: The hull"
"Event: 42 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 43 || Total Damage: 0.00289331 || Hit Damage: 0.728024 || Section: The avionics"
"Event: 44 || Total Damage: 0.00289331 || Hit Damage: 0.00289496 || Section: The vehicle"
"Event: 45 || Total Damage: 0.00289496 || Hit Damage: 0 || Section: The fuel"
"Event: 46 || Total Damage: 0.00289496 || Hit Damage: 0.205623 || Section: The hull"
"Event: 47 || Total Damage: 0.00289496 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 48 || Total Damage: 0.00289496 || Hit Damage: 0.728024 || Section: The avionics"
"Event: 49 || Total Damage: 0.00289496 || Hit Damage: 0 || Section: The tail rotor"
"Event: 50 || Total Damage: 0.00289496 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 51 || Total Damage: 0.00289496 || Hit Damage: 0.153542 || Section: The glass1"
"Event: 52 || Total Damage: 0.00289496 || Hit Damage: 0.00297711 || Section: The vehicle"
"Event: 53 || Total Damage: 0.00297711 || Hit Damage: 0 || Section: The fuel"
"Event: 54 || Total Damage: 0.00297711 || Hit Damage: 0.205623 || Section: The hull"
"Event: 55 || Total Damage: 0.00297711 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 56 || Total Damage: 0.00297711 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 57 || Total Damage: 0.00297711 || Hit Damage: 0.00305546 || Section: The vehicle"
"Event: 58 || Total Damage: 0.00305546 || Hit Damage: 0 || Section: The fuel"
"Event: 59 || Total Damage: 0.00305546 || Hit Damage: 0.205623 || Section: The hull"
"Event: 60 || Total Damage: 0.00305546 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 61 || Total Damage: 0.00305546 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 62 || Total Damage: 0.00305546 || Hit Damage: 0.11719 || Section: The tail rotor"
"Event: 63 || Total Damage: 0.00305546 || Hit Damage: 0.00320863 || Section: The vehicle"
"Event: 64 || Total Damage: 0.00320863 || Hit Damage: 0 || Section: The fuel"
"Event: 65 || Total Damage: 0.00320863 || Hit Damage: 0.243171 || Section: The hull"
"Event: 66 || Total Damage: 0.00320863 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 67 || Total Damage: 0.00320863 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 68 || Total Damage: 0.00320863 || Hit Damage: 0.196099 || Section: The tail rotor"
"Event: 69 || Total Damage: 0.00320863 || Hit Damage: 0.00333869 || Section: The vehicle"
"Event: 70 || Total Damage: 0.00333869 || Hit Damage: 0 || Section: The fuel"
"Event: 71 || Total Damage: 0.00333869 || Hit Damage: 0.337828 || Section: The hull"
"Event: 72 || Total Damage: 0.00333869 || Hit Damage: 0.00335816 || Section: The vehicle"
"Event: 73 || Total Damage: 0.00335816 || Hit Damage: 0 || Section: The fuel"
"Event: 74 || Total Damage: 0.00335816 || Hit Damage: 0.353946 || Section: The hull"
"Event: 75 || Total Damage: 0.00335816 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 76 || Total Damage: 0.00335816 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 77 || Total Damage: 0.00335816 || Hit Damage: 0.196099 || Section: The tail rotor"
"Event: 78 || Total Damage: 0.00335816 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 79 || Total Damage: 0.00335816 || Hit Damage: 0.153542 || Section: The glass1"
"Event: 80 || Total Damage: 0.00335816 || Hit Damage: 0.0419028 || Section: The glass2"
"Event: 81 || Total Damage: 0.00335816 || Hit Damage: 0.0046321 || Section: The vehicle"
"Event: 82 || Total Damage: 0.0046321 || Hit Damage: 0.00590047 || Section: The vehicle"
"Event: 83 || Total Damage: 0.00590047 || Hit Damage: 0.0949282 || Section: The fuel"
"Event: 84 || Total Damage: 0.00590047 || Hit Damage: 0.448627 || Section: The hull"
</pre>
* The "Event" number is obtained by a simple counter.
* "Total Damage" from [[damage]] _v.
* "Hit Damage" from the EH _this select 2.
* And "Section" from _this select 1 where and empty string is populated with "vehicle".
* The empty lines were added manually in [[arma.RPT]] between shots.
If I weren't half asleep I'd say what can be read by anyone who cares to. I think the documentation could do with more notes!
I'm going to add more checks including [[diag_frameno]] and see if a more accurate definition of what is really going on can be put together. There's some real wacky stuff going on in this. [[User:Fred Gandt|Fred Gandt]] ([[User talk:Fred Gandt|talk]]) 16:12, 5 March 2014 (CET)

Revision as of 17:12, 5 March 2014

Dammaged

Appears to only trigger if the damage is greater than 0.5

Repro:

  • Add to player init

player addEventHandler ["Dammaged", { hint format ["Damage: %1", _this select 2]; }];

  • Set elevation to 5 metres.
  • Preview.
  • Exit.
  • Set elevation to 4.5 meters.
  • Preview.

You may need to fiddle with those figures a bit, but it's a quick and dirty method to test.

Observe: Only damage above 0.5 is hinted.

Am I wrong, or should this be noted in the documentation?

Fred Gandt (talk) 06:54, 3 March 2014 (CET)

-- Yes, Dammaged EH is less sensitive than HandleDamage, not sure if there is a defined threshold.

So we should add a note to the documentation? I'm pretty sure a threshold of 0.5 exists, but that obviously needs testing of verification from bistudio to justify an absolute statement. I'd consider any verifiable fact that affects returns to be important to note, even if the fact is imprecise. A note to the effect that "Dammage will not necessarily trigger for < 0.5 damage", would at least save some folk the trouble I had trying to figure out WTF was going on. Fred Gandt (talk) 04:30, 4 March 2014 (CET)

-- I wouldn't put any definite numbers if I were you. It needs to be tested not only with units and as far as I remember for vehicles you can get EH triggered for damages < 0.5. I personally think copy paste from "Hit" EH where it explains sensitivity would be sufficient.

I'm not seeing Dammage EH triggering for less than 0.5 on Pawnees, Hunters and others, but sure, without confirmation (it'll be in the code somewhere), figures are tough to justify. I agree; a copy-paste of the note in Hit EH would be a start (I noticed that after my last comment here). At least it gives a clue to expect less than obvious behaviour.
  • Speaking of which...
v addEventHandler ["HandleDamage", {
    _v = _this select 0;
    if (alive _v) then {
        _s = _this select 1;
        if (_s == "") then {
            _s = "vehicle";
        };
        if (_s == "?") then {
            _s = "thingummybob";
        };
        hintSilent format ["Total damage: %1\nHit damage: %2\nSection: The %3", damage _v, _this select 2, _s];
        if (damage _v > 0) then {
            _v setDamage 0;
        };
    } else {
        hintSilent "Something else that doesn't matter out of context.";
    };
}];
Assuming v is a vehicle like a Pawnee in perfect condition, and assuming it just got hit by a 6.5mm round, wouldn't we expect a hint reading something like
Total damage: 0.000947657
Hit damage: 0.284657
Section: The tail rotor
And then find that all the damage has been repaired?
Well we don't!
if (damage _v > 0) then {
    _v setDamage 0;
};
does it's job exactly as we should expect, but
hintSilent format ["Total damage: %1\nHit damage: %2\nSection: The %3", damage _v, _this select 2, _s];
produces something like
Total damage: 0
Hit damage: 0.284657
Section: The tail rotor
The hit damage, section and
_v setDamage 0;
are all as they should be, but somehow the value for
damage _v
in the hint is zero - even when the
if (damage _v > 0)
returns true!
I've tried a dozen different methods (this one is the simplest for demonstration), and none avoid the issue. Even
_foo = damage _v
and using _foo in the hint, or
_v setVariable ["foo", damage _v, true]
and getting the value for the hint don't work.
I even tried spawning scripts, calling functions, waiting until, sleeping, and using two EHs, but nothing.
Very strange behaviour. Fred Gandt (talk) 13:42, 4 March 2014 (CET)
Although I'm getting to the bottom of it... Fred Gandt (talk) 08:08, 5 March 2014 (CET)

HandleDamage

10 shots at a scripted Pawnee from a 6.5mm MX at close range resulted in the following to diag_log:

"Event: 0 || Total Damage: 0 || Hit Damage: 0.00104039 || Section: The vehicle"
"Event: 1 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The fuel"
"Event: 2 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The hull"
"Event: 3 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The engine"
"Event: 4 || Total Damage: 0.00104039 || Hit Damage: 0.650052 || Section: The avionics"
"Event: 5 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The tail rotor"
"Event: 6 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The main rotor"
"Event: 7 || Total Damage: 0.00104039 || Hit Damage: 0 || Section: The glass1"
"Event: 8 || Total Damage: 0.00104039 || Hit Damage: 0.0114876 || Section: The glass2"
"Event: 9 || Total Damage: 0.00104039 || Hit Damage: 0.00114631 || Section: The vehicle"
"Event: 10 || Total Damage: 0.00114631 || Hit Damage: 0 || Section: The fuel"
"Event: 11 || Total Damage: 0.00114631 || Hit Damage: 0.0123528 || Section: The hull"

"Event: 12 || Total Damage: 0.00114631 || Hit Damage: 0.00237226 || Section: The vehicle"
"Event: 13 || Total Damage: 0.00237226 || Hit Damage: 0 || Section: The fuel"
"Event: 14 || Total Damage: 0.00237226 || Hit Damage: 0.10704 || Section: The hull"
"Event: 15 || Total Damage: 0.00237226 || Hit Damage: 0.0281299 || Section: The engine"

"Event: 16 || Total Damage: 0.00237226 || Hit Damage: 0.00250229 || Section: The vehicle"
"Event: 17 || Total Damage: 0.00250229 || Hit Damage: 0 || Section: The fuel"
"Event: 18 || Total Damage: 0.00250229 || Hit Damage: 0.117041 || Section: The hull"
"Event: 19 || Total Damage: 0.00250229 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 20 || Total Damage: 0.00250229 || Hit Damage: 0.650052 || Section: The avionics"
"Event: 21 || Total Damage: 0.00250229 || Hit Damage: 0 || Section: The tail rotor"
"Event: 22 || Total Damage: 0.00250229 || Hit Damage: 0.0770749 || Section: The main rotor"

"Event: 23 || Total Damage: 0.00250229 || Hit Damage: 0.00289331 || Section: The vehicle"
"Event: 24 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 25 || Total Damage: 0.00289331 || Hit Damage: 0.194735 || Section: The hull"
"Event: 26 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 27 || Total Damage: 0.00289331 || Hit Damage: 0.678438 || Section: The avionics"
"Event: 28 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The tail rotor"
"Event: 29 || Total Damage: 0.00289331 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 30 || Total Damage: 0.00289331 || Hit Damage: 0.101878 || Section: The glass1"
"Event: 31 || Total Damage: 0.00289331 || Hit Damage: 0.00289331 || Section: The vehicle"
"Event: 32 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 33 || Total Damage: 0.00289331 || Hit Damage: 0.205623 || Section: The hull"
"Event: 34 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 35 || Total Damage: 0.00289331 || Hit Damage: 0.714742 || Section: The avionics"
"Event: 36 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The tail rotor"
"Event: 37 || Total Damage: 0.00289331 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 38 || Total Damage: 0.00289331 || Hit Damage: 0.133224 || Section: The glass1"
"Event: 39 || Total Damage: 0.00289331 || Hit Damage: 0.00289343 || Section: The vehicle"
"Event: 40 || Total Damage: 0.00289331 || Hit Damage: 0 || Section: The fuel"
"Event: 41 || Total Damage: 0.00289331 || Hit Damage: 0.205623 || Section: The hull"
"Event: 42 || Total Damage: 0.00289331 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 43 || Total Damage: 0.00289331 || Hit Damage: 0.728024 || Section: The avionics"

"Event: 44 || Total Damage: 0.00289331 || Hit Damage: 0.00289496 || Section: The vehicle"
"Event: 45 || Total Damage: 0.00289496 || Hit Damage: 0 || Section: The fuel"
"Event: 46 || Total Damage: 0.00289496 || Hit Damage: 0.205623 || Section: The hull"
"Event: 47 || Total Damage: 0.00289496 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 48 || Total Damage: 0.00289496 || Hit Damage: 0.728024 || Section: The avionics"
"Event: 49 || Total Damage: 0.00289496 || Hit Damage: 0 || Section: The tail rotor"
"Event: 50 || Total Damage: 0.00289496 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 51 || Total Damage: 0.00289496 || Hit Damage: 0.153542 || Section: The glass1"
"Event: 52 || Total Damage: 0.00289496 || Hit Damage: 0.00297711 || Section: The vehicle"
"Event: 53 || Total Damage: 0.00297711 || Hit Damage: 0 || Section: The fuel"
"Event: 54 || Total Damage: 0.00297711 || Hit Damage: 0.205623 || Section: The hull"
"Event: 55 || Total Damage: 0.00297711 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 56 || Total Damage: 0.00297711 || Hit Damage: 0.789819 || Section: The avionics"

"Event: 57 || Total Damage: 0.00297711 || Hit Damage: 0.00305546 || Section: The vehicle"
"Event: 58 || Total Damage: 0.00305546 || Hit Damage: 0 || Section: The fuel"
"Event: 59 || Total Damage: 0.00305546 || Hit Damage: 0.205623 || Section: The hull"
"Event: 60 || Total Damage: 0.00305546 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 61 || Total Damage: 0.00305546 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 62 || Total Damage: 0.00305546 || Hit Damage: 0.11719 || Section: The tail rotor"
"Event: 63 || Total Damage: 0.00305546 || Hit Damage: 0.00320863 || Section: The vehicle"
"Event: 64 || Total Damage: 0.00320863 || Hit Damage: 0 || Section: The fuel"
"Event: 65 || Total Damage: 0.00320863 || Hit Damage: 0.243171 || Section: The hull"
"Event: 66 || Total Damage: 0.00320863 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 67 || Total Damage: 0.00320863 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 68 || Total Damage: 0.00320863 || Hit Damage: 0.196099 || Section: The tail rotor"

"Event: 69 || Total Damage: 0.00320863 || Hit Damage: 0.00333869 || Section: The vehicle"
"Event: 70 || Total Damage: 0.00333869 || Hit Damage: 0 || Section: The fuel"
"Event: 71 || Total Damage: 0.00333869 || Hit Damage: 0.337828 || Section: The hull"

"Event: 72 || Total Damage: 0.00333869 || Hit Damage: 0.00335816 || Section: The vehicle"
"Event: 73 || Total Damage: 0.00335816 || Hit Damage: 0 || Section: The fuel"
"Event: 74 || Total Damage: 0.00335816 || Hit Damage: 0.353946 || Section: The hull"
"Event: 75 || Total Damage: 0.00335816 || Hit Damage: 0.0281299 || Section: The engine"
"Event: 76 || Total Damage: 0.00335816 || Hit Damage: 0.789819 || Section: The avionics"
"Event: 77 || Total Damage: 0.00335816 || Hit Damage: 0.196099 || Section: The tail rotor"
"Event: 78 || Total Damage: 0.00335816 || Hit Damage: 0.0770749 || Section: The main rotor"
"Event: 79 || Total Damage: 0.00335816 || Hit Damage: 0.153542 || Section: The glass1"
"Event: 80 || Total Damage: 0.00335816 || Hit Damage: 0.0419028 || Section: The glass2"

"Event: 81 || Total Damage: 0.00335816 || Hit Damage: 0.0046321 || Section: The vehicle"

"Event: 82 || Total Damage: 0.0046321 || Hit Damage: 0.00590047 || Section: The vehicle"
"Event: 83 || Total Damage: 0.00590047 || Hit Damage: 0.0949282 || Section: The fuel"
"Event: 84 || Total Damage: 0.00590047 || Hit Damage: 0.448627 || Section: The hull"
  • The "Event" number is obtained by a simple counter.
  • "Total Damage" from damage _v.
  • "Hit Damage" from the EH _this select 2.
  • And "Section" from _this select 1 where and empty string is populated with "vehicle".
  • The empty lines were added manually in arma.RPT between shots.

If I weren't half asleep I'd say what can be read by anyone who cares to. I think the documentation could do with more notes!

I'm going to add more checks including diag_frameno and see if a more accurate definition of what is really going on can be put together. There's some real wacky stuff going on in this. Fred Gandt (talk) 16:12, 5 March 2014 (CET)