mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
68 lines
1.5 KiB
Plaintext
68 lines
1.5 KiB
Plaintext
/*
|
|
* Author: commy2
|
|
*
|
|
* Execute a function on a remote machine in mp.
|
|
*
|
|
* Argument:
|
|
* 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. (Object OR Number, optional default: 2)
|
|
* Mode 0: execute on this machine only
|
|
* Mode 1: execute on server
|
|
* Mode 2: execute on all clients + server
|
|
* Mode 3: execute on dedicated only
|
|
*
|
|
* Return value:
|
|
* Nothing
|
|
*/
|
|
|
|
private ["_arguments", "_function", "_unit", "_id"];
|
|
|
|
AGM_Core_remoteFnc = _this;
|
|
|
|
_arguments = _this select 0;
|
|
_function = call compile (_this select 1);
|
|
_unit = _this select 2;
|
|
|
|
if (isNil "_unit") then {
|
|
_unit = 2;
|
|
};
|
|
|
|
if (typeName _unit == "SCALAR") exitWith {
|
|
switch (_unit) do {
|
|
case 0 : {
|
|
_arguments call _function;
|
|
};
|
|
case 1 : {
|
|
if (isServer) then {
|
|
_arguments call _function;
|
|
} else {
|
|
publicVariableServer "AGM_Core_remoteFnc";
|
|
};
|
|
};
|
|
case 2 : {
|
|
_arguments call _function;
|
|
|
|
AGM_Core_remoteFnc set [2, 0];
|
|
publicVariable "AGM_Core_remoteFnc";
|
|
};
|
|
case 3 : {
|
|
if (isDedicated) then {
|
|
_arguments call _function;
|
|
} else {
|
|
if (!isServer) then {publicVariableServer "AGM_Core_remoteFnc"};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
if (local _unit) then {
|
|
_arguments call _function;
|
|
} else {
|
|
if (isServer) then {
|
|
_id = owner _unit;
|
|
_id publicVariableClient "AGM_Core_remoteFnc";
|
|
} else {
|
|
publicVariableServer "AGM_Core_remoteFnc";
|
|
};
|
|
}; |