SQS to SQF conversion

From Bohemia Interactive Community
Jump to: navigation, search

What's different in SQF

  • Every command has to end with semicolon.
  • SQF does not have a goto command anymore.
  • SQF commands can span several lines if they are enclosed in brackets.
  • SQF can return a variable, where SQS cannot.

Replacing

Comment

SQS
; This is a comment
SQF
// This is single-line comment
/* This is multiline
   comment
*/
comment "And this is a comment working both in SQS and SQF";


Condition

SQS
@CONDITION
SQF
waitUntil {CONDITION};


Delay

SQS
~DELAY
SQF
sleep DELAY;


Conditional command

SQS
?CONDITION: COMMAND
SQF
if (CONDITION) then {COMMAND};


Multi-conditional command

SQS
?CONDITION: goto "SKIP"
 COMMAND_2
 goto "END"
#SKIP
 COMMAND_1
#END
SQF
if (CONDITION) then {COMMAND_1} else {COMMAND_2};


Cycle

SQS
#loop
 COMMAND
 ~DELAY
?CONDITION: goto "LOOP"
SQF
while {CONDITION} do {
 COMMAND;
 sleep DELAY;
};


Cycle with step

SQS
_n = 0
#LOOP
 COMMAND
 _n = _n + 1;
?_n < COUNT: goto "LOOP"
SQF
for [{_n = 0},{_n <= COUNT},{_n = _n+1}] do {
 COMMAND;
};


Structured conditional command

SQS
?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
SQF
switch (VARIABLE) do {
 case VALUE_1: {COMMAND_1};
 case VALUE_2: {COMMAND_2};
 default {DEFAULT_COMMAND};
};


Exiting

SQS
?CONDITION: goto "Exit"
 COMMAND_1
#Exit
 COMMAND_2
 exit
SQF
if (CONDITION) exitWith
{
 COMMAND_2;
};
COMMAND_1;


See Also