SQS Syntax
SQS Syntax (where SQS stands for Status Quo Script) was the main syntax in Operation Flashpoint and is still available (although considered obsolete) in later titles. It can only be used for scripts, but not for functions, in the Mission Editor or in addon config files. The newer script syntax is SQF Syntax.
Rules
Binding rules:
- Statements are separated by line breaks, semicolons (;) and commas (,) - this means that a statement can not span over multiple lines (e.g a switch usage must be all inlined).
- A code block (defined by curled braces { }) is considered a single statement, thus may not span over multiple lines either.
Example
STATEMENT 1 STATEMENT 2; STATEMENT 3, STATEMENT 4 BLOCK { STATEMENT 5; STATEMENT 6 }
Comments
A line beginning with a semicolon (
- ) is considered a comment and ignored by the game engine.
Example
Language Constructs
The control structures listed in the article Control Structures may also be used in SQS syntax. Note that they must be written within a single line due to the above rules.
- Example
There exist also special structures limited to SQS syntax, listed below.
Tilde
The tilde (~) symbol tells the script to wait X amount of seconds (see sleep in SQF):
Label
Labels may be defined in the code by beginning a line with #, followed by the label's name (without spaces). The goto command can then be used at any point of the script to jump to this label (and potentially create a loop).
Conditional
A Boolean condition can be used in order to run code that is executed only when said condition is true. Note that there is no such equivalent for "else". A conditional line must start with ?, followed by the condition and :, followed by one or more commands. Multiple commands are separated by commas (,) or semicolons (;). The conditional statement, like other statements, ends with the end of the line.
@
Much like the waitUntil statement in SQF Syntax, @ will evaluate a certain condition, and the script will pause until @ returns true.
Notes
Due to the line-based nature of SQS scripts, it is not possible to create multiline string constants in them. To overcome this limitation multiline text can be stored in a separate text file and loaded using loadFile or preprocessFile (the second uses C-like preprocessor with // or /* */ comments and #define macros).
Limitations
In Operation Flashpoint, if a single line of a sqs file is longer than 4096 characters, the game will return an error and will not execute the line.