BIS fnc addStackedEventHandler: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(removed my note, so many changes happened since not sure if relevant any more)
No edit summary
Line 79: Line 79:
<dd class="note">
<dd class="note">
It is not possible to override default engine behavior with stacked event handlers. This is because [[BIS_fnc_executeStackedEventHandler]], a function that is called inside [[BIS_fnc_addStackedEventHandler]], '''always''' returns false.
It is not possible to override default engine behavior with stacked event handlers. This is because [[BIS_fnc_executeStackedEventHandler]], a function that is called inside [[BIS_fnc_addStackedEventHandler]], '''always''' returns false.
</dd>
</dl>
<!-- DISCONTINUE Notes -->
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on December 8, 2014 - 20:56 (UTC)</dd>
<dt class="note">[[User:DreadedEntity|DreadedEntity]]</dt>
<dd class="note">
You cannot use stacked EH's and non-stacked EH's (just the normal commands, [[onEachFrame]]/[[onMapSingleClick]]/etc.) together because [[BIS_fnc_addStackedEventHandler]] utilizes these commands in it's code, overwriting a non-stacked EH.
Stacked Event Handlers are saved to [[missionNamespace]] whenever a new one is added, to view them use:
<code>[[hint]] [[str]] ([[missionNamespace]] [[getVariable]] ["BIS_stackedEventHandlers_XXX",[]]);
where "XXX" is each event name ("[[onEachFrame]]", "[[onPreloadStarted]]", "[[onPreloadFinished]]", "[[onMapSingleClick]]", "[[onPlayerConnected]]", "[[onPlayerDisconnected]]")</code>
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
<!-- DISCONTINUE Notes -->

Revision as of 22:56, 8 December 2014

Hover & click on the images for description

Description

Description:
Stack an event handler. Possible event handlers are:
  • "onEachFrame"
  • "onPlayerConnected"
  • "onPlayerDisconnected"
  • "onMapSingleClick"
  • "onPreloadStarted"
  • "onPreloadFinished"
Execution:
call
Groups:
Uncategorised

Syntax

Syntax:
[key, event, code, arguments] call BIS_fnc_addStackedEventHandler;
Parameters:
key: String - unique identifier
event: String - event handler type, see Description
code: String or Code
arguments: Anything - arguments to make available in code
Return Value:
String

Examples

Example 1:
["someId", "onEachFrame", { hintSilent str time; }] call BIS_fnc_addStackedEventHandler;
Example 2:
["someId", "onEachFrame", { hintSilent str _this; }, "Hello world!"] call BIS_fnc_addStackedEventHandler;

Additional Information

See also:
BIS_fnc_removeStackedEventHandler

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

Notes

Posted on November 1, 2013
neokika
More info at: http://forums.bistudio.com/showthread.php?167822-Stacked-event-handlers-OnEachFrame-OnPlayerConnected-etc
Posted on February 11, 2014
Posted on 25 Jun, 2014
ffur2007slx2_5
(ArmA3 1.22) Stack all codes into one PFH will be less demanding than separated calling within multiple PFH. E.g. { [(format [“%1”,_forEachIndex]),”onEachFrame”,_code,[_x]] call BIS_fnc_addStackedEventHandler; } forEach [var0…var100]; //pretty demanding [_id, ”onEachFrame”,{ {_x call _code} forEach [var0…var100]; }] call BIS_fnc_addStackedEventHandler; //faster

Bottom Section

Posted on December 8, 2014 - 08:21 (UTC)
DreadedEntity
It is not possible to override default engine behavior with stacked event handlers. This is because BIS_fnc_executeStackedEventHandler, a function that is called inside BIS_fnc_addStackedEventHandler, always returns false.
Posted on December 8, 2014 - 20:56 (UTC)
DreadedEntity
You cannot use stacked EH's and non-stacked EH's (just the normal commands, onEachFrame/onMapSingleClick/etc.) together because BIS_fnc_addStackedEventHandler utilizes these commands in it's code, overwriting a non-stacked EH. Stacked Event Handlers are saved to missionNamespace whenever a new one is added, to view them use: hint str (missionNamespace getVariable ["BIS_stackedEventHandlers_XXX",[]]); where "XXX" is each event name ("onEachFrame", "onPreloadStarted", "onPreloadFinished", "onMapSingleClick", "onPlayerConnected", "onPlayerDisconnected")