SQS to SQF conversion: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - " (={2,})([^ = ])(.*)([^ = ])(={2,}) * " to " $1 $2$3$4 $5 ") |
m (Text replacement - "{{Inline code|" to "{{ic|") |
||
Line 4: | Line 4: | ||
* '''[[execVM]]''' is used (instead of [[exec]] for SQS) | * '''[[execVM]]''' is used (instead of [[exec]] for SQS) | ||
* Every command has to end with a semicolon ({{ | * Every command has to end with a semicolon ({{ic|;}}) | ||
* the following commands disappeared: | * the following commands disappeared: | ||
** [[goto]]/#label (Note, [[a hash b|#]] is a command in itself in {{arma3}}) | ** [[goto]]/#label (Note, [[a hash b|#]] is a command in itself in {{arma3}}) |
Revision as of 18:10, 27 February 2021
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 (
;
) - the following commands disappeared:
- Line returns do not impact code
- SQF can return a variable, where SQS cannot
Conversion examples
SQS | SQF |
---|---|
Comment | |
; This is a comment
comment "this is a comment"; "this is a comment"; |
// This is single-line comment /* This is a multiline comment */ comment "this is a comment"; "this is a comment"; |
Condition wait | |
@CONDITION @ not alive player |
waitUntil { CONDITION }; waitUntil { not alive player }; |
Delay | |
~DELAY ~5 |
sleep DELAY; sleep 5; |
Conditional command | |
? CONDITION : COMMAND ? alive player : player setDammage 1 |
if (CONDITION) then { COMMAND }; if (alive player) then { player setDammage 1 }; |
Multi-conditional command | |
? CONDITION : goto "SKIP" COMMAND_2 goto "END" #SKIP COMMAND_1 #END |
if (CONDITION) then { COMMAND_1 } else { COMMAND_2 }; |
Cycle | |
#loop COMMAND ~DELAY ? CONDITION : goto "LOOP" |
while {CONDITION} do { COMMAND; sleep DELAY; }; |
Cycle with step | |
_i = 0 #LOOP COMMAND _i = _i + 1; ? _i < COUNT : goto "LOOP" |
for "_i" from 0 to COUNT -1 do { COMMAND; }; |
Structured conditional command | |
? 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 |
switch (VARIABLE) do { case VALUE_1: { COMMAND_1 }; case VALUE_2: { COMMAND_2 }; default { DEFAULT_COMMAND }; }; |
Exiting | |
? CONDITION : COMMAND_2 ? CONDITION : exit COMMAND_1 |
if (CONDITION) exitWith { COMMAND_2; }; COMMAND_1; |