addEventHandler: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\[\[Category:Scripting Commands OFP 1.[4-9]{2}(\|(\{\{uc:\{\{PAGENAME\}\}\}\}|#|[A-Z]+))?\]\] " to "")
m (Undo revision 363475 by R3vo (talk))
Tag: Undo
 
(28 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{RV|type=command
{{RV|type=command


| ofpr
|game1= ofp
|version1= 1.85


|1.85
|game2= ofpe
|version2= 1.00
 
|game3= arma1
|version3= 1.00
 
|game4= arma2
|version4= 1.00
 
|game5= arma2oa
|version5= 1.50
 
|game6= tkoh
|version6= 1.00
 
|game7= arma3
|version7= 0.50


|arg= global
|arg= global
Line 11: Line 28:
|gr1= Event Handlers
|gr1= Event Handlers


| Adds an Event Handler to the given object. Event Handler parameters are accessiable via the <tt>_this</tt> inside the code.
|descr= Adds an Event Handler to the given object.
* Since Arma 3 v.1.63.137807 the Event Handler index is available as <tt>_thisEventHandler</tt> during Event Handler code execution.
* As many Event Handlers of any type can be added - existing Event Handlers do not get overwritten
* 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
* Use [[removeEventHandler]] to remove an Event Handler.
Read [[:Category:Event Handlers|Event Handlers]] for more information and a list of all available Event Handlers.
Read [[:Category:Event Handlers|Event Handlers]] for more information and a list of all available Event Handlers.


| object [[addEventHandler]] [type, code]
|mp= Some event handlers are persistent (i.e they stay attached to the unit, even after it dies and respawns).
 
|s1= target [[addEventHandler]] [type, code]


|p1= '''object''': [[Object]]
|p1= target: [[Object]] or {{GVI|arma3|2.10|size= 0.75}} [[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


|p3= '''code''': [[Code]] or [[String]] - Code that should be executed when the Event Handler is triggered; executed in [[missionNamespace]] by default.
|p3= 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 <sqf inline>_this</sqf>
* The Event Handler type is available as <sqf inline>_thisEvent</sqf>
* The Event Handler index is available as <sqf inline>_thisEventHandler</sqf>


| [[Number]] - The index of the added Event Handler. Indices start at 0 for each unit and increment with each added Event Handler. |RETRUNVALUE=
|r1= [[Number]] - the index of the added Event Handler. Indices start at 0 for each unit and increment with each added Event Handler.
 
|x1= <code>_index = [[player]] [[addEventHandler]] ["Killed", {_this [[exec]] "playerKilled.sqs"}];</code>


|x2= <code>this [[addEventHandler]] ["Killed", "[[hint]] [[format]] ['Killed by %1', _this [[a_hash_b|#]] 1];"];</code>
|x1= <sqf>
this addEventHandler ["Killed", {
params ["_unit", "_killer"];
systemChat format ["%1 has been killed by %2.", _unit, _killer];
}];
</sqf>


|mp= Some event handlers are persistent (i.e. they stay attached to the unit, even after it dies and respawns).
|x2= <sqs>_index = player addEventHandler ["Killed", { _this exec "playerKilled.sqs" }]</sqs>


|seealso= [[removeEventHandler]], [[removeAllEventHandlers]], [[:Category:Event Handlers|Event Handlers]], [[addMPEventHandler]], [[addMissionEventHandler]], [[BIS_fnc_addScriptedEventHandler]]
|seealso= [[removeEventHandler]] [[removeAllEventHandlers]] [[:Category:Event Handlers|Event Handlers]] [[addMPEventHandler]] [[addMissionEventHandler]] [[BIS_fnc_addScriptedEventHandler]] [[getEventHandlerInfo]]
}}
}}


 
{{Note
 
|user= Killzone_Kid
{{GameCategory|arma1|Scripting Commands}}
|timestamp= 20150607210600
{{GameCategory|arma2|Scripting Commands}}
|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:
{{GameCategory|arma3|Scripting Commands}}
<sqf>if (whatever) exitWith {true}; false;</sqf>
{{GameCategory|tkoh|Scripting Commands}}
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on July 7, 2015 - 21:06 (UTC)</dd>
<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:
<code>[[if]] (whatever) [[exitWith]] {[[true]]}; [[false]];</code>
Forget about it, will not work. Instead use:
Forget about it, will not work. Instead use:
<code>[[if]] (whatever) [[then]] {[[true]]} [[else]] {[[false]]};</code>
<sqf>if (whatever) then {true} else {false};</sqf>
100% satisfaction guaranteed!
100% satisfaction guaranteed!
</dd>
}}
</dl>
<!-- DISCONTINUE Notes -->

Latest revision as of 15:58, 31 March 2024

Hover & click on the images for description

Description

Description:
Adds an Event Handler to the given object.
  • As many Event Handlers of any type can be added - 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:
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:
this addEventHandler ["Killed", { params ["_unit", "_killer"]; systemChat format ["%1 has been killed by %2.", _unit, _killer]; }];
Example 2:
_index = player addEventHandler ["Killed", { _this exec "playerKilled.sqs" }]

Additional Information

See also:
removeEventHandler removeAllEventHandlers Event Handlers addMPEventHandler addMissionEventHandler BIS_fnc_addScriptedEventHandler getEventHandlerInfo

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!