diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 5996fc8c..73ebacfe 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1931,6 +1931,14 @@ SCSS: extensions: - .scss +SQF: + type: programming + color: "#FFCB1F" + lexer: C++ + extensions: + - .sqf + - .hqf + SQL: type: data ace_mode: sql diff --git a/samples/SQF/fn_remoteExecFnc.sqf b/samples/SQF/fn_remoteExecFnc.sqf new file mode 100644 index 00000000..f9cf08ca --- /dev/null +++ b/samples/SQF/fn_remoteExecFnc.sqf @@ -0,0 +1,68 @@ +/* + * 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"; + }; +}; \ No newline at end of file