Variables
A variable is a "storage container" or "named placeholder" for data. You can read and modify the data once this container is created.
Requirements
The following links guide to the basics to understand this article:
Initialization
The first thing you have to do is to find a name for your variable. This name is called identifier. Read the article Identifier for more information.
Once you know a name, you have to tell the game engine that you are going to use this identifier. This is called initialization. Then you may do anything with this variable.
Don't worry: This sounds more dramatic than it is. You can initialize any variable by assigning a value to it.
myVariable = 0;
Querying undefined (or uninitialized) variables returns nil (undefined value). When converted to Strings with str, they will always return scalar bool array string 0xe0ffffef (in Armed Assault) or scalar bool array string 0xfcffffef (in Operation Flashpoint).
myString = str(undefinedVar); myString => "scalar bool array string 0xe0ffffef"
Thus you can't really apply any operations on variables before they are initialized with a start value.
Deletion
Once created, variables will take up space in your computer memory. This is not drastic for small variables, but if you use a big number of very large variables, you should undefine any variables that are not needed anymore. This can be done with the command nil.
hugeVariable = nil;
This effectively destroys a variable as if it had never existed.
Namespace
Variables are only visible in certain areas (namespaces) of the game. This prevents name conflicts between different variables in different scripts.
There are three namespaces:
- local
- A variable is only visible in the script in which it was defined.
- global
- A variable is visible on the whole computer where it is defined.
- public
- A variable is broadcasted over the network and visible on all computers connected to the network.
Local Variables
Local variables are only visible in a specific script. The whole code in this script has access to the variable, that includes also functions called within the script.
The identifier of variables local to a script always has to start with an underscore.
_myLocalVariable = 0;
In functions you should additionally mark variables as local using the command private. Otherwise you may modify local variables of the calling script that are visible in the function.
private "_myLocalVariable"; _myLocalVariable = 0;
You may also pass more identifiers to the private command using an Array.
private ["_myLocalVariable1", "_myLocalVariable2", ...];
Global Variables
Global variables are visible on the whole computer where they are defined. Names given to units in the Mission Editor are also global variables pointing to those units, which may not be redefined or modified.
Identifiers of global variables must not start with underscore. Otherwise there are the same rules as for all identifiers.
myGlobalVariable = 0;
Public Variables
Public variables are global variables that are visible on all computers in the network. You can never have true public variables, but you can emulate their behaviour.
The value of a global variable gets broadcasted over the network using publicVariable. After the call of this command the variable will have the same value on all clients. Once you modify the variable though you have to broadcast it manually again with publicVariable.
Variable Types
Variables may store certain values. The kind of the value specifies the type of the variable. Different operators and commands require variables to be of different types.
Read the article Types for more information about variable types.
Multiplayer Considerations
FILL IN