mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
/*
|
|
* Author: commy2
|
|
*
|
|
* Execute a function on every machine. Function will also be called upon JIP (postInit). The arguments are stored in (_this select 0), while the assigned namespace is stored in (_this select 1).
|
|
*
|
|
* Argument:
|
|
* 0: Function arguments (Array)
|
|
* 1: Function to execute, has to be defined on the remote machine first (String)
|
|
* 2: Namespace to save that variable in (Object or Namespace)
|
|
* 3: Name. Will overwrite previously defined functions with that name (String)
|
|
*
|
|
* Return value:
|
|
* Nothing.
|
|
*/
|
|
#include "\z\ace\addons\common\script_component.hpp"
|
|
|
|
private ["_arguments", "_function", "_unit", "_name"];
|
|
|
|
GVAR(remoteFnc) = _this;
|
|
|
|
_arguments = _this select 0;
|
|
_function = call compile (_this select 1);
|
|
_unit = _this select 2;
|
|
_name = _this select 3;
|
|
|
|
["Remote", [_arguments, _this select 1, _name], {format ["%1 call %2 id: %3", _this select 0, _this select 1, _this select 2]}, false] call FUNC(log);
|
|
|
|
// execute function on every currently connected machine
|
|
[[_arguments, _unit], _this select 1, 2] call FUNC(execRemoteFnc);
|
|
|
|
// save persistent function for JIP
|
|
private ["_persistentFunctions", "_index"];
|
|
|
|
_persistentFunctions = _unit getVariable ["ACE_PersistentFunctions", []];
|
|
|
|
// find index to overwrite function with the same name, add to end otherwise
|
|
_index = count _persistentFunctions;
|
|
{
|
|
if (_x select 2 == _name) exitWith {
|
|
_index = _forEachIndex;
|
|
};
|
|
} forEach _persistentFunctions;
|
|
|
|
// set new value
|
|
_persistentFunctions set [_index, [_arguments, _function, _name]];
|
|
|
|
// broadcast variable
|
|
if (typeName _unit == "NAMESPACE") then {
|
|
ACE_PersistentFunctions = _persistentFunctions;
|
|
publicVariable "ACE_PersistentFunctions";
|
|
} else {
|
|
_unit setVariable ["ACE_PersistentFunctions", _persistentFunctions, true];
|
|
};
|