AssaultCube/CUBE's console language (CubeScript) is similar to console languages of other games (e.g. Quake), but is a bit more powerful, in that it is almost a full programming language.
What is similar to Quake is the basic command structure: commands consist of the command itself, followed by any number of arguments separated by whitespace. You can use "" to quote strings with whitespace in them (such as the actions in bind/alias), and wherever an extra command is required, you can also use ; to sequence multiple commands in one.
What is new compared to Quake, is that you can evaluate aliases and expressions. You can substitute the value of an alias as an argument by prefixing it with a $ sign, example: echo The current value of x is $x
You can even substitute the values of console variables this way, example:
$fov would give the current size of your FOV.
Some aliases are set automatically, for example $arg1 to
$argN are set if you supply arguments when you execute an alias.
There are two alternative ways to quote a string (other than the double quotes: ""). They are brackets () and square brackets []. They work in the same way as "", with the difference that they can be nested infinitely, and that they may contain linefeeds (useful for larger scripts).
Brackets () are different from square brackets [] in that it evaluates the commands contained in it before it evaluates the surrounding command and then substitutes the results. Bracketed () strings are called expressions. Combine this with some commands made especially for "programming" and you have a minimal language!
Have a look through the CubeScript reference for information about all the types of fancy commands that you could use in AssaultCube. We recommend that you read through some of the files in ./config to help understand some of the ways in which these commands could be used.