Script (File)

From Bohemia Interactive Community
Revision as of 14:27, 21 December 2006 by Hardrock (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

A script is a chunk of code grouped together. This code does a specific task and is written in a seperate file which is parsed by the game engine. The common extensions for scripts are .sqs and .sqf, depending on the used syntax (see below).

Usage

Scripts are mainly used for any game processes where time is important. They are different to functions where the result or calculation is important.

Thus scripts can be used for cutscenes, dialogs, radio scripting and much more.

Syntax

In Operation Flashpoint, scripts are limited to SQS syntax.

In Armed Assault, the already existing SQF syntax was introduced for scripts. SQS syntax is still usable, but is considered deprecated in Armed Assault.

Execution

Scripts can be executed from several points in the game:

Scripts are running besides the executing instance. That means that the executing instance (f.i. script or function) doesn't wait for the script to end. Thus scripts should not be used for code that should return a value, which is used in the calling script. This part is taken over by functions.

Since Armed Assault, scripts return a script handle which you can use to verify whether a script is still running.

Special Variables

_time in both syntax ?

Special Commands

Due to the fact, that calling instances aren't waiting for the scripts to end, scripts can be halted for a custom period of time. There are different methods to do this in SQF syntax and SQS syntax (deprecated since Armed Assault).

SQF syntax

Delay
You can set the script to sleep for a number of seconds using the command sleep.
COMMAND 1;

// wait 10 seconds
sleep 10;

COMMAND 2;
Waiting for a condition
You can set the script to sleep until a specific condition is met using the command waitUntil.
BOOL = false;

// wait until BOOL gets true
waitUntil BOOL;

COMMAND;

SQS syntax

Delay
You can set the script to sleep for a number of seconds by introducing a line with ~, followed by the number of seconds.
COMMAND 1

; wait 10 seconds
~10

COMMAND 2
Waiting for a condition
You can set the script to sleep until a condition is met by introducing a line with @, followed by the condition.
BOOL = false
; wait until BOOL gets true
@BOOL
COMMAND
Waiting for a time
You can set the script to sleep until a time (number of seconds since the beginning of the script) is met by introducing a line with &, followed by the time.
&100

; is equivalent to 

@_time >= 100