addEventHandler: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<code>([^\[]+)<\/code>" to "<sqf>$1</sqf>")
(Add 2.10 group possibility)
Line 35: Line 35:
|mp= Some event handlers are persistent (i.e. they stay attached to the unit, even after it dies and respawns).
|mp= Some event handlers are persistent (i.e. they stay attached to the unit, even after it dies and respawns).


|s1= object [[addEventHandler]] [type, code]
|s1= target [[addEventHandler]] [type, code]


|p1= object: [[Object]]
|p1= target: [[Object]] or {{GVI|arma3|2.10}} [[Group]]


|p2= type: [[String]] - see [[:Category:Event Handlers|Event Handlers]] for the full list of available options
|p2= type: [[String]] - see [[:Category:Event Handlers|Event Handlers]] for the full list of available options
Line 58: Line 58:
}}
}}


<dl class="command_description">
{{Note
 
|user= Killzone_Kid
<dt></dt>
|timestamp= 20150607210600
<dd class="notedate">Posted on July 7, 2015 - 21:06 (UTC)</dd>
|text= When using overridable EH, such as "InventoryOpened" and similar, where returning [[true]] allows to override default action, [[exitWith]] cannot be used to return value. So:
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
<dd class="note">
When using overridable EH, such as "InventoryOpened" and similar, where returning [[true]] allows to override default action, [[exitWith]] cannot be used to return value. So:
<sqf>if (whatever) exitWith {true}; false;</sqf>
<sqf>if (whatever) exitWith {true}; false;</sqf>
Forget about it, will not work. Instead use:
Forget about it, will not work. Instead use:
<sqf>if (whatever) then {true} else {false};</sqf>
<sqf>if (whatever) then {true} else {false};</sqf>
100% satisfaction guaranteed!
100% satisfaction guaranteed!
</dd>
}}
 
</dl>

Revision as of 11:52, 24 May 2022

Hover & click on the images for description

Description

Description:
Adds an Event Handler to the given object.
  • You can add as many Event Handlers of any type as you like to every unit. Existing Event Handlers do not get overwritten.
  • Use removeEventHandler to remove an Event Handler.
Read Event Handlers for more information and a list of all available Event Handlers.
Multiplayer:
Some event handlers are persistent (i.e. they stay attached to the unit, even after it dies and respawns).
Groups:
Event Handlers

Syntax

Syntax:
target addEventHandler [type, code]
Parameters:
target: Object or Arma 3 logo black.png2.10 Group
type: String - see Event Handlers for the full list of available options
code: Code or String - Code that should be executed when the Event Handler fires; executed in missionNamespace by default. Several Magic Variables are available:
  • Event Handler parameters are accessible via _this.
  • The Event Handler type is available as _thisEvent.
  • The Event Handler index is available as _thisEventHandler.
Return Value:
Number - The index of the added Event Handler. Indices start at 0 for each unit and increment with each added Event Handler.

Examples

Example 1:
_index = player addEventHandler ["Killed", {_this exec "playerKilled.sqs"}];
Example 2:
this addEventHandler ["Killed", { params ["_unit", "_killer"]; systemChat format ["%1 has been killed by %2.", _unit, _killer]; }];

Additional Information

See also:
removeEventHandler removeAllEventHandlers Event Handlers addMPEventHandler addMissionEventHandler BIS_fnc_addScriptedEventHandler

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Killzone_Kid - c
Posted on Jun 07, 2015 - 21:06 (UTC)
When using overridable EH, such as "InventoryOpened" and similar, where returning true allows to override default action, exitWith cannot be used to return value. So:
if (whatever) exitWith {true}; false;
Forget about it, will not work. Instead use:
if (whatever) then {true} else {false};
100% satisfaction guaranteed!