addEventHandler: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
m (Undo revision 363475 by R3vo (talk))
Tag: Undo
 
(74 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Command|=
{{RV|type=command
____________________________________________________________________________________________


| ofpr |=
|game1= ofp
|version1= 1.85


|1.85|=
|game2= ofpe
|version2= 1.00


|arg= global |=
|game3= arma1
|version3= 1.00


|eff= local |=
|game4= arma2
____________________________________________________________________________________________
|version4= 1.00


| Adds an event handler to a given unit. For more information about event handlers and their types check the scripting topic [[:Category:Event Handlers|Event handlers]] in this reference. You may add as many event handlers of any type as you like to every unit. For instance, if you add an event handler of type "killed" and one already exists, the old one doesn't get overwritten. Use [[removeEventHandler]] to delete event handlers.  
|game5= arma2oa
|version5= 1.50


Every event will create an array named '''_this''', which contains specific information about the particular event. (e.g. the "killed" EH will return an array with 2 elements: the killed unit, and the killer.)
|game6= tkoh
|=
|version6= 1.00
____________________________________________________________________________________________


| object '''addEventHandler''' [type, command] |=
|game7= arma3
|version7= 0.50


|p1= object: [[Object]] |= Parameter 1
|arg= global


|p2= [type, command]: [[Array]] |= Parameter 2
|eff= local


|p3= type: [[String]] - [[:Category:Event Handlers|Event Handler]] type |= Parameter 3
|gr1= Event Handlers


|p4= command: [[Code]] or [[String]] - code that should be executed once the event occurs, by default executed in [[missionNamespace]] |= Parameter 4
|descr= 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 [[:Category:Event Handlers|Event Handlers]] for more information and a list of all available Event Handlers.


| [[Number]] - The index of the currently added event handler is returned. Indices start at 0 for each unit and increment with each added event handler.|= RETRUNVALUE
|mp= Some event handlers are persistent (i.e they stay attached to the unit, even after it dies and respawns).
____________________________________________________________________________________________
 
|x1= <code>_EHkilledIdx <nowiki>=</nowiki> [[player]] [[addEventHandler]] ["killed", {_this [[exec]] "playerKilled.sqs"}]</code> |= Example 1


|x2= <code>this [[addEventHandler]] ["killed", "[[hint]] [[format]] ['Killed by %1',_this [[select]] 1]"]</code> |= Example 2
|s1= target [[addEventHandler]] [type, code]
____________________________________________________________________________________________


|mp= Some event handlers are persistent (i.e. they stay attached to a unit, even after it dies and respawns).  
|p1= target: [[Object]] or {{GVI|arma3|2.10|size= 0.75}} [[Group]]


{{EffArg|cmd|arg|loc}} "Killed" and "Hit" eventhandlers are executed where given unit is local. |= Multiplayer
|p2= type: [[String]] - see [[:Category:Event Handlers|Event Handlers]] for the full list of available options


| [[:Category:Event Handlers|EventHandlers list]], [[addMPEventHandler]], [[removeEventHandler]], [[removeAllEventHandlers]] |= See also
|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>


}}
|r1= [[Number]] - the index of the added Event Handler. Indices start at 0 for each unit and increment with each added Event Handler.
 
|x1= <sqf>
this addEventHandler ["Killed", {
params ["_unit", "_killer"];
systemChat format ["%1 has been killed by %2.", _unit, _killer];
}];
</sqf>


<h3 style="display:none">Notes</h3>
|x2= <sqs>_index = player addEventHandler ["Killed", { _this exec "playerKilled.sqs" }]</sqs>
<dl class="command_description">
<!-- Note Section BEGIN -->
<!-- Note Section END -->
</dl>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[removeEventHandler]] [[removeAllEventHandlers]] [[:Category:Event Handlers|Event Handlers]] [[addMPEventHandler]] [[addMissionEventHandler]] [[BIS_fnc_addScriptedEventHandler]] [[getEventHandlerInfo]]
[[Category:Scripting Commands|ADDEVENTHANDLER]]
}}
[[Category:Scripting Commands OFP 1.99|ADDEVENTHANDLER]]
[[Category:Scripting Commands OFP 1.96|ADDEVENTHANDLER]]
[[Category:Scripting Commands ArmA|ADDEVENTHANDLER]]
[[Category:Command_Group:_Activators|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= Killzone_Kid
<dd class="notedate">Posted on July 7, 2015 - 21:06 (UTC)</dd>
|timestamp= 20150607210600
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
|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:
<dd class="note">
<sqf>if (whatever) exitWith {true}; false;</sqf>
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 16: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!