diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index e4c60bf7..c4c12276 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1976,6 +1976,14 @@ SCSS: extensions: - .scss +SQF: + type: programming + color: "#FFCB1F" + lexer: C++ + extensions: + - .sqf + - .hqf + SQL: type: data ace_mode: sql diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index 701befb6..8d64e1b2 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -556,6 +556,10 @@ "SCSS": [ ".scss" ], + "SQF": [ + ".sqf", + ".hqf" + ], "SQL": [ ".prc", ".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 diff --git a/samples/SQF/macros.hqf b/samples/SQF/macros.hqf new file mode 100644 index 00000000..6f53296c --- /dev/null +++ b/samples/SQF/macros.hqf @@ -0,0 +1,19 @@ +#include + +#define SET(VAR,VALUE) private #VAR; VAR = VALUE; +#define CONV(VAR,ARRAY,POOL) VAR = ARRAY select (POOL find VAR); + +#define ALL_HITPOINTS_MAN [ \ + "HitHead", "HitBody", \ + "HitLeftArm", "HitRightArm", \ + "HitLeftLeg","HitRightLeg" \ +] + +#define ALL_HITPOINTS_VEH [ \ + "HitBody", "HitHull", "HitEngine", "HitFuel", \ + "HitTurret", "HitGun", \ + "HitLTrack", "HitRTrack", \ + "HitLFWheel", "HitRFWheel", "HitLF2Wheel", "HitRF2Wheel", "HitLMWheel", "HitRMWheel", "HitLBWheel", "HitRBWheel", \ + "HitAvionics", "HitHRotor", "HitVRotor", \ + "HitRGlass", "HitLGlass", "HitGlass1", "HitGlass2", "HitGlass3", "HitGlass4", "HitGlass5", "HitGlass6" \ +]