SQS to SQF conversion

From Bohemia Interactive Community
Jump to: navigation, search

SQF Syntax has been introduced in Operation Flashpoint: Resistance v1.85 and is the Arma series' main scripting language since. The main differences with SQS Syntax are:

  • execVM is used (instead of exec for SQS)
  • Every command has to end with a semicolon (c;)
  • the following commands disappeared:
  • Line returns do not impact code
  • SQF can return a variable, where SQS cannot


Conversion examples

SQS SQF

Comment

Copy
; This is a comment

Copy
; This is a ; multiline ; comment
Copy
comment "this is a comment";
Copy
"this is a comment";

Copy
// This is single-line comment
Copy
/* This is a multiline comment */
Copy
comment "this is a comment";
Copy
"this is a comment";

Condition wait

Copy
@CONDITION

Copy
waitUntil { CONDITION };

Delay

Copy
~DELAY

Copy
sleep DELAY;

Conditional command

Copy
? CONDITION : COMMAND

Copy
if (CONDITION) then { COMMAND };

Multi-conditional command

Copy
? CONDITION : goto "SKIP" COMMAND_2 goto "END" #SKIP COMMAND_1 #END

Copy
if (CONDITION) then { COMMAND_1 } else { COMMAND_2 };

Cycle

Copy
#loop COMMAND ~DELAY ? CONDITION : goto "LOOP"

Copy
while { CONDITION } do { COMMAND; sleep DELAY; };

Cycle with step

Copy
_i = 0 #LOOP COMMAND _i = _i + 1; ? _i < COUNT : goto "LOOP"
Copy
for "_i" from 0 to COUNT -1 do { COMMAND; };

Structured conditional command

Copy
? VARIABLE == VALUE_1: goto "SKIP_1" ? VARIABLE == VALUE_2: goto "SKIP_2" DEFAULT_COMMAND goto "END" #SKIP_1 COMMAND_1 goto "END" #SKIP_2 COMMAND_2 #END
Copy
switch (VARIABLE) do { case VALUE_1: { COMMAND_1 }; case VALUE_2: { COMMAND_2 }; default { DEFAULT_COMMAND }; };

Exiting

Copy
? CONDITION : COMMAND_2 ? CONDITION : exit COMMAND_1
Copy
if (CONDITION) exitWith { COMMAND_2; }; COMMAND_1;


See Also