type name = value;The second line is for assembled objects, called structs, that contain not only a single value, but many parameters, given between the winged brackets. An object name may consist of up to 30 letters. The case does not matter in C-Script, but matters in lite-C, C, or C++. Names must not begin with numbers nor contain any special characters except the underscore _ , nor are you allowed to define the same name twice for different objects. Also take care that you not use a name which is already reserved for an engine variable or a object parameter.
type name = { ... }
The semicolon ';' terminates a 'logical line'. Therefore, a script line can contain several logical lines, or a logical line can be spread over several script lines. The limit is 8000 characters and 500 elements per logical line.
The most often encountered script object is a variable - an element that stores numbers. A group of three numbers - often used in 3D arithmetics - is called a vector, a group of many number is called an array. Example:
var myvariable = 123.456;
A special kind of a variable is a flag. That's a binary value, like a switch, which can be set to on (1) or off (0). Another special object is a STRING - that one does not store a number but a sequence of characters - a piece of text - within quotation marks. Example for defining an initialized string pointer:
STRING* mystring = "It is now time for all good men...";
Note the '*' pointer suffix that is required in lite-C, but must be omitted in C-Script. When code differs between both languages in examples, the differences are marked in green for lite-C and red for C-Script.
A special kind of a string is a file name that assigns the content of a file to the given object. File names must not be longer than 20 characters and must not contain spaces or a path. The kind of file is apparent from the extension. The script language supports image files (like .PCX, .BMP, .TGA, or .DDS) for bitmaps or sprites, .MDL for models, .WMB for map entities, .HMP for terrain, .MID for songs, .WAV or .OGG for sound effects, .AVI or .MPG for movies, .FX for shaders, .WDL for C-Script and .C for lite-C scripts. This is an example for a bitmap object that is defined by a file name that determines its content:
BMAP* mybitmap = "billboard.tga";
The following special characters are valid within the script:
; Semicolon terminates each instruction or logical line.
{...} Winged brackets enclose structs or instruction lists.
(..,..) Function parameters are given in parentheses and
separated by commas.
"..." Text or file names are given between quotation
marks.
[...] Array or vector indices are giving between
square brackets.
//... Comment until the end of the line.
A script must not end with a comment.
/*...*/ Comment block.
A script must not end with an open comment block.
Each programming language is unforgiving to syntax errors. Every forgotten
or superfluous comma or semicolon will almost certainly produce an error message
at start-up. So be carefully. In some old C-scripts you might find objects,
instructions or variables that were abandoned or replaced by newer versions,
and thus are not documented here anymore. Do not use them for your own scripts.
Use only objects that are either described here, or defined by yourself.Features
that are only available in the Extra, Commercial or Professional Edition or
above are marked with mit ,
,
or
.
Names are case sensitive in lite-C, and case insensitive in C-Script. For making your code easier to read, we recommend a convention for naming variables and objects. We're writing #defines in UPPERCASE, local variables as well as engine and template variables in lowercase with underscore (my_variable) and global variables with a type prefix and Mixed Case (myVariable). Here's an example for type prefixes:
Type | Prefix | Example |
var | - | myVariable |
long, int | i | iMyInteger |
char | chr | chrMyChar |
short | s | sMyShort |
float | f | fMyFloat |
double | d | dMyDouble |
VECTOR | vec | vecVelocity |
COLOR | col | colLight |
STRING* | str | strMyString |
BMAP* | bmp | bmpMyBmap |
SOUND* | snd | sndMySound |
PANEL* | pan | panMyPanel |
TEXT* | txt | txtMyText |
ENTITY* | ent | entMyEntity |
If you are using several code modules in your script, add a module prefix to your variables and functions. For instance in the default.c module we've prefixed all variables with 'def_'.
► latest version online