ACE3/addons/common/functions/fnc_execRemoteFnc.sqf

67 lines
1.6 KiB
Plaintext
Raw Normal View History

/*
* Author: commy2
* Execute a function on a remote machine in mp.
*
2015-09-20 18:25:25 +00:00
* Arguments:
* 0: Function arguments <ARRAY>
* 1: Function to execute, has to be defined on the remote machine first <STRING>
* 2: The function will be executed where this unit is local OR the mode were this function should be executed. (default: 2) <OBJECT, NUMBER>
* 0 = execute on this machine only
* 1 = execute on server
* 2 = execute on all clients + server
* 3 = execute on dedicated only
*
* Return Value:
* None
*
* Public: No
*
2015-09-20 18:25:25 +00:00
* Deprecated
*/
2015-01-13 19:56:02 +00:00
#include "script_component.hpp"
GVAR(remoteFnc) = _this;
2015-09-20 18:25:25 +00:00
params ["_arguments", "_function", ["_unit", 2]];
2015-10-04 02:34:46 +00:00
TRACE_3("params", _arguments, _function, _unit);
2015-09-20 18:25:25 +00:00
_function = call compile _function;
if (_unit isEqualType 0) exitWith {
2015-05-14 18:06:06 +00:00
switch (_unit) do {
case 0 : {
_arguments call _function;
};
case 1 : {
if (isServer) then {
_arguments call _function;
} else {
publicVariableServer QGVAR(remoteFnc);
};
};
case 2 : {
_arguments call _function;
2015-05-14 18:06:06 +00:00
GVAR(remoteFnc) set [2, 0];
publicVariable QGVAR(remoteFnc);
};
case 3 : {
if (isDedicated) then {
_arguments call _function;
} else {
if (!isServer) then {publicVariableServer QGVAR(remoteFnc)};
};
};
};
};
if (local _unit) then {
2015-05-14 18:06:06 +00:00
_arguments call _function;
} else {
2015-05-14 18:06:06 +00:00
if (isServer) then {
2015-09-20 18:25:25 +00:00
(owner _unit) publicVariableClient QGVAR(remoteFnc);
2015-05-14 18:06:06 +00:00
} else {
publicVariableServer QGVAR(remoteFnc);
};
};