A constant is an identifier with a predefined value. Contrary to a variable the value of the constant can not be changed in run-time. In compile-time the constant gets replaced with the value associated with it. The value of the constant can be numeric (numbers, model names or labels) and string (string literals), and contain an expression.
Constants are declared either statically or dynamically. Each edit mode can load static constant definitions from a file using the
<constants>parameter in the
modes.xml. Dynamic declarations get created in the script code with the syntax outlined below.
To declare a new constant in the code use the
CONST <constant name> = <constant value> END
A constant name is any allowed identifier (a combination of letters, numbers and
_). There are names reserved by the compiler that can not be used, such as
And, etc (see
compiler.ini). A constant value might be a number (also a model identifier or a label); a string literal; a variable (also a class property); another constant.
MoneyRequired = 30
PlayerMoney = $PLAYER_CHAR.Money
PlayerMoney > MoneyRequired
PlayerMoney += -1
During compilation the constant
MoneyRequiredgets replaced with the number
You can use constants anywhere except the case:
VarName = $Var
IndexName = 25
VarName[IndexName] = 0
To compile such expression, you must write the opcode, for example:
0004: VarName[IndexName] = 0
Also there are some limitations with using an expression as the constant value.