SQS to SQF conversion: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "{{SideTOC}}" to "{{TOC|side}}") |
m (category) |
||
Line 176: | Line 176: | ||
[[Category:Syntax]] | [[Category:Syntax]] | ||
Revision as of 12:14, 2 January 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; |