---
name: "BIS_fnc_addStackedEventHandler"
type: function
status: deprecated
groups: ["Event Handlers"]
arma3_since: "1.00"
locality: {"argument": null, "effect": "local", "server_exec": false}
source: https://community.bistudio.com/wiki/BIS_fnc_addStackedEventHandler
revid: 330780
updated: 2022-11-01T16:06:55Z
---

# BIS_fnc_addStackedEventHandler

*Function · Event Handlers · Arma 3 v1.00*

> [!WARNING]
> This function is deprecated.

Locality: effect **local**

## Description

> [!CAUTION]
> This information is **obsolete**. [Arma 3: Mission Event Handlers](../topics/Mission_Event_Handlers.md) should be used instead.

Stacks an event handler.  All event handlers accept user arguments, which are passed to the EH code in `_this` variable. If the EH has own params returned in `_this` variable as well, user arguments are appended to the end of `_this` array. Note that if you try to add an empty EH, i.e. with empty code, it will simply be ignored.

|  |  |  |  |
|---|---|---|---|
| + Supported Event Handlers | Scripted Event Handler | Mission EH Equivalent | Description |
| "[onEachFrame](../commands/onEachFrame.md)" | [EachFrame](../topics/Mission_Event_Handlers.md#eachframe) | N/A |  |
| "[onPlayerConnected](../commands/onPlayerConnected.md)" | [PlayerConnected](../topics/Mission_Event_Handlers.md#playerconnected) | Special variables `_id`, `_uid`, `_name`, `_jip`, `_owner` are provided and are available in `_this` array as well.<br>```sqf<br>params ["_id", "_uid", "_name", "_jip", "_owner"];<br>``` |  |
| "[onPlayerDisconnected](../commands/onPlayerDisconnected.md)" | [PlayerDisconnected](../topics/Mission_Event_Handlers.md#playerdisconnected) |  |  |
| "[onMapSingleClick](../commands/onMapSingleClick.md)" | [MapSingleClick](../topics/Mission_Event_Handlers.md#mapsingleclick) | Special variables `_units`, `_pos`, `_alt`, `_shift` are provided and are available in `_this` array as well.<br>```sqf<br>params ["_units", "_pos", "_alt", "_shift"];<br>``` |  |
| "[onPreloadStarted](../commands/onPreloadStarted.md)" | [PreloadStarted](../topics/Mission_Event_Handlers.md#preloadstarted) | N/A |  |
| "[onPreloadFinished](../commands/onPreloadFinished.md)" | [PreloadFinished](../topics/Mission_Event_Handlers.md#preloadfinished) | N/A |  |

## Syntax

```sqf
[id, event, code, arguments] call BIS_fnc_addStackedEventHandler
```

**Parameters:**

- `id`: [String](../topics/String.md) - custom id, a unique identifier. Adding same type of EH with the same id will overwrite existing
- `event`: [String](../topics/String.md) - event handler name, see description for supported EHs
- `code`: [Code](../topics/Code.md) or [String](../topics/String.md). The [String](../topics/String.md) is treated as function name
- `arguments`: [Array](../topics/Array.md) of [Anything](../topics/Anything.md) - arguments to make available in code in `_this` array

**Returns:** [String](../topics/String.md) - custom id on success or "" on failure

## Examples

### Example 1

```sqf
["someId", "onEachFrame", { hintSilent str time }] call BIS_fnc_addStackedEventHandler;
```

### Example 2

```sqf
["someId", "onEachFrame", {hintSilent str position (_this select 0)}, [player]] call BIS_fnc_addStackedEventHandler;
```

### Example 3

```sqf
private _eventName = "OnEachFrame";
missionNamespace getVariable [format ["BIS_stackedEventHandlers_%1", _eventName], []]; // gets an array with all existing ids
```

## Multiplayer

This command has the same locality as [addMissionEventHandler](../commands/addMissionEventHandler.md).

## See also

[addMissionEventHandler](../commands/addMissionEventHandler.md) · [BIS_fnc_removeStackedEventHandler](../functions/BIS_fnc_removeStackedEventHandler.md)

## Community notes

**ffur2007slx2_5** — 2014-06-25

Stacking all the code into one PFH will be less demanding than separated calling within multiple PFH, e.g:

```sqf
{
    [format ["%1", _forEachIndex], "onEachFrame", _code, [_x]] call BIS_fnc_addStackedEventHandler;
} forEach [var0, var1, varN, var100]; // pretty demanding
```

```sqf
[_id, "onEachFrame", {
    { _x call _code } forEach [var0, var1, varN, var100];
}] call BIS_fnc_addStackedEventHandler; // faster, only one event
```

<sub>Source: [BI Community Wiki — BIS fnc addStackedEventHandler](https://community.bistudio.com/wiki/BIS_fnc_addStackedEventHandler) (revision 330780).</sub>
