xash3d-fwgs/Documentation/extensions/console-scripting.md

69 lines
1.6 KiB
Markdown

## Console variables
Console variables (or CVars) are present in all quake-based games.
By default, it is settings, created by engine, server or client libraries.
But you can use `set` command to define variables even if they are not created by the engine.
For example, you can set cvar before it is registered in code.
`set defaultmap crossfire`
This works even in server.cfg before server cvars initialization and the engine will reuse its value on cvar creation
## Aliases
An alias allows to define new commands.
`alias wnext "invnext;wait;wait;+attack;wait;-attack"`
You can hook any command by adding an alias to it and unaliasing it, when you want to use original command.
```
alias invnext1 "unalias invnext;wnext;alias invnext invnext1"
alias invnext invnext1
```
## Scripting extensions
This is an extensions of Xash3D FWGS(merged to original Xash3D since build 3887), that can be enabled by cmd_scripting cvar.
Enabling scripting: `cmd_scripting 1`
This is an archive cvar and it will be saved.
### CVar substitution
You can substitute cvar value to any command by adding \$ symbol:
`echo $sv_cheats`
### Condition checking
Allows checking cvar values.
```
if <value1> <operator> <value2>
:<action1>
:if <value3>
::<action2>
:<action3>
else
:<action4>
```
* Values are any string or numeric values (for example, substituted cvars).
* Operator is = (or ==), \!=, \<, \>, \<=, \>=. == is same to =.
* If single value specified, condition is true when value is non-zero
Example:
```
if $sv_cheats == 1
:echo Cheats enabled, adding cheat menu
:exec cheatmenu.cfg
else
:echo Please enable cheats to use this!
```