SQS to SQF conversion: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\[\[SQS[ _]syntax" to "[[SQS Syntax") |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
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 (<sqf inline>;</sqf>) | ||
* 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 15:31, 1 July 2022
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; |