gamevar <varname> <value> <flags>
var <varname> <value> <flags>
The gamevar's flags define a bitmap that determines how the variable is treated by the game. For instance, a gamevar with flags of 0 is known as a global variable. A global variable exists once in the code, and any time a global variable is set, the new value is seen by all actors and events. A gamevar with flag bit 1 set is a per-player variable, which exists once for each player in the game. A gamevar with flag bit 2 set is a per-actor variable, which exists as many times in the code as there are sprites in the map. This means that each sprite has its own copy of a per-actor variable stored in memory. Note that a gamevar can only be defined as either global, per-player, or per-actor, but not as a combination thereof.
Gamevars are stored as signed 32-bit integers and therefore have a value range of -2.147.483.648 (-231) to 2.147.483.647 (231-1). Going above and below this range causes the value to overflow and underflow respectively.
Note that it is possible to omit the <value> and <flags> parameters entirely to define a global variable with an initial value of 0, with no other flags set. Example:
It is also possible to chain flags separately at the end of the gamevar definition, instead of compiling them into a single value, as follows:
var TEMP2 10 1 4096 // This defines a per-player (1), read-only (4096) variable with initial value 10.
The following pages contain information on basic gamevar operations as well as conditional statements:
The following table shows all currently defined gamevar flags. The first 3 are the only ones needed under normal circumstances, but one can also assign higher flags to user-defined gamevars (given that you know what you are doing).
|Name||Number||Hex||Description||Page where such variables should be listed|
|GAMEVAR_GLOBAL||0||0x000000||global variable; this is the default|
|GAMEVAR_RESET||8||0x000008||Internal, don't use.|
|GAMEVAR_DEFAULT||256||0x000100||unused, but always cleared for user-defined gamevars|
|GAMEVAR_NODEFAULT||1024||0x000400||Don't reset on actor spawn|
|GAMEVAR_SYSTEM||2048||0x000800||cannot change mode flags...(only default value)|
|GAMEVAR_READONLY||4096||0x001000||values are read-only (no setvar allowed)|
|GAMEVAR_INT32PTR||8192||0x002000||plValue is a pointer to an int32_t||Constantly updated gamevars|
|GAMEVAR_FLOATPTR||16384||0x004000||plValue is a pointer to a float||Constantly updated gamevars|
|GAMEVAR_INT16PTR||32768||0x008000||plValue is a pointer to a short (int16_t)||Constantly updated gamevars|
|GAMEVAR_CHARPTR||65536||0x010000||plValue is a pointer to a char||Constantly updated gamevars|
|GAMEVAR_NORESET||131072||0x020000||var values are not reset when restoring map state|
|GAMEVAR_SPECIAL||262144||0x040000||flag for structure member shortcut vars|
|GAMEVAR_NOMULTI||524288||0x080000||don't attach to multiplayer packets|
|GAMEVAR_Q16PTR||1048576||0x100000||plValues is a pointer to a q16.16|
|GAMEVAR_SERIALIZE||2097152||0x200000||write into permasaves|
This category has the following 3 subcategories, out of 3 total.
Pages in category "Gamevar manipulation"
The following 82 pages are in this category, out of 82 total.