mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
|
#include "..\script_component.hpp"
|
||
|
/*
|
||
|
* Author: PabstMirror
|
||
|
* Adds event handler just to ace_player
|
||
|
*
|
||
|
* Arguments:
|
||
|
* 0: Key <STRING>
|
||
|
* 1: Event Type <STRING>
|
||
|
* 2: Event Code <CODE>
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None
|
||
|
*
|
||
|
* Example:
|
||
|
* ["example", "FiredNear", {systemChat str _this}] call ace_common_fnc_addPlayerEH
|
||
|
*
|
||
|
* Public: Yes
|
||
|
*/
|
||
|
params [["_key", "", [""]], ["_type", "", [""]], ["_code", {}, [{}]]];
|
||
|
|
||
|
if (isNil QGVAR(playerEventsHash)) then { // init
|
||
|
GVAR(playerEventsHash) = createHashMap;
|
||
|
["unit", {
|
||
|
params ["_newPlayer", "_oldPlayer"];
|
||
|
TRACE_3("",_newPlayer,_oldPlayer,count GVAR(playerEventsHash));
|
||
|
{
|
||
|
private _var = format [QGVAR(playerEvents_%1), _x];
|
||
|
private _oldEH = _oldPlayer getVariable [_var, -1];
|
||
|
_oldPlayer removeEventHandler [_y#0, _oldEH];
|
||
|
_oldPlayer setVariable [_var, nil];
|
||
|
|
||
|
private _newEH = _newPlayer addEventHandler _y;
|
||
|
_newPlayer setVariable [_var, _newEH];
|
||
|
} forEach GVAR(playerEventsHash);
|
||
|
}, false] call CBA_fnc_addPlayerEventHandler;
|
||
|
};
|
||
|
|
||
|
private _event = [_type, _code];
|
||
|
GVAR(playerEventsHash) set [_key, _event];
|
||
|
|
||
|
if (isNull ACE_player) exitWith {};
|
||
|
private _var = format [QGVAR(playerEvents_%1), _key];
|
||
|
private _newEH = ACE_player addEventHandler _event;
|
||
|
ACE_player setVariable [_var, _newEH];
|