addMissionEventHandler: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (rewrote example (removed exec/sqs...); rephrased 'ended' description)
m (Text replacement - "\] +\[" to "] [")
 
(64 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma3 |= Game name
|game1= arma3
|version1= 0.50


|0.50|= Game version
|eff= local
____________________________________________________________________________________________


| Adds mission event handler. Every event will create an array named ''_this'', which contains specific information about the particular event. Available mission event handlers:
|gr1= Event Handlers
<br/>'''"Loaded"'''
<br/>'''"Ended"''' - Triggered when the mission is successfully ended. The variable ''_this'', stores the type of the ending ("END1","END2", "LOSER", etc.).
<br/>'''"Draw3D"''' - It seems "Draw3D" mission EH is connected to your primary display. It will stop firing as soon as you Alt+Tab from the game and resume when you come back (unless Arma 3 client is launched with ''-window'' ''-nopause'' params). "Draw3D" does not fire at all on a dedicated server.
<br/>'''"HandleDisconnect"''' - Triggered when player disconnects from the game. Similar to onPlayerDisconnected event but can be stacked and contains the unit occupied by player before disconnect. Must be added on the server and triggers only on the server. For more info: [http://community.bistudio.com/wiki/Arma_3:_Event_Handlers#HandleDisconnect HandleDisconnect] |= Description
____________________________________________________________________________________________


| '''addMissionEventHandler''' [type, command] |= Syntax
|descr= Adds event handler attached to the current mission and returns event handler handle. For the list of available mission event handlers see: [[Arma 3: Mission Event Handlers]]


|p1= [type, command]: [[Array]] |= PARAMETER1
|s1= [[addMissionEventHandler]] [event, expression, arguments]


|p2= type: [[String]] |= PARAMETER2
|p1= event: [[String]] - event name


|p3= command: [[Code]] or [[String]] - By default executed in [[missionNamespace]] |= PARAMETER3
|p2= expression: [[Code]] or [[String]] - expression that will be executed in [[missionNamespace]] when event handler fires.
* If the event handler has some data to return upon activation they are stored in the {{hl|_this}} variable
* {{GVI|arma3|1.64|size= 0.75}} the event handler's handle is stored in {{hl|_thisEventHandler}} variable and is available during event handler code execution
* {{GVI|arma3|2.04|size= 0.75}} it is possible to pass additional arguments to the EH code via optional param. The ''args'' are stored in {{hl|_thisArgs}} variable
{{Feature|important|Only arguments of simple types get proper serialization. [[Object]]s, [[Group]]s etc will not serialize and appear as NULLs on game load.}}
* {{GVI|arma3|2.06|size= 0.75}} the event's name is available from {{hl|_thisEvent}} variable


| [[Number]] - The index of the currently added mission event handler is returned. |= RETURNVALUE
|p3= arguments: [[Array]] - (Optional, default <sqf inline>[]</sqf>) additional arguments to be passed to the EH code. Available during code execution via {{hl|_thisArgs}} variable.
|p3since= arma3 2.04


|r1= [[Number]] - the index of the currently added mission event handler is returned


|x1= <code>// A script could be executed to stop custom scripts graciously, or save progress & stats, for example:
|x1= <sqf>_id = addMissionEventHandler ["PlayerDisconnected", { systemChat str _this }];</sqf>


_id = [[addMissionEventHandler]] ["Ended",{ _this [[execVM]] "missionEnded.sqf" }];</code>|= EXAMPLE1
|x2= <sqf>_id = addMissionEventHandler ["EachFrame", { systemChat str [_thisArgs, time] }, [time]];</sqf>


____________________________________________________________________________________________
|seealso= [[removeMissionEventHandler]] [[removeAllMissionEventHandlers]] [[getEventHandlerInfo]]
 
| [[removeMissionEventHandler]], [[removeAllMissionEventHandlers]] |= SEEALSO
 
|  |= MPBEHAVIOUR
____________________________________________________________________________________________
}}
}}
<h3 style='display:none'>Notes</h3>
<dl class='command_description'>
<!-- Note Section BEGIN -->
<!-- Note Section END -->
</dl>
<h3 style='display:none'>Bottom Section</h3>
[[Category:Arma_3:_New_Scripting_Commands_List|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]

Latest revision as of 11:46, 5 May 2024

Hover & click on the images for description

Description

Description:
Adds event handler attached to the current mission and returns event handler handle. For the list of available mission event handlers see: Arma 3: Mission Event Handlers
Groups:
Event Handlers

Syntax

Syntax:
addMissionEventHandler [event, expression, arguments]
Parameters:
event: String - event name
expression: Code or String - expression that will be executed in missionNamespace when event handler fires.
  • If the event handler has some data to return upon activation they are stored in the _this variable
  • Arma 3 logo black.png1.64 the event handler's handle is stored in _thisEventHandler variable and is available during event handler code execution
  • Arma 3 logo black.png2.04 it is possible to pass additional arguments to the EH code via optional param. The args are stored in _thisArgs variable
Only arguments of simple types get proper serialization. Objects, Groups etc will not serialize and appear as NULLs on game load.
  • Arma 3 logo black.png2.06 the event's name is available from _thisEvent variable
since Arma 3 logo black.png2.04
arguments: Array - (Optional, default []) additional arguments to be passed to the EH code. Available during code execution via _thisArgs variable.
Return Value:
Number - the index of the currently added mission event handler is returned

Examples

Example 1:
_id = addMissionEventHandler ["PlayerDisconnected", { systemChat str _this }];
Example 2:
_id = addMissionEventHandler ["EachFrame", { systemChat str [_thisArgs, time] }, [time]];

Additional Information

See also:
removeMissionEventHandler removeAllMissionEventHandlers 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