CNQ3 console guide
This guide is not intended to teach the basics of the Quake 3 console. Instead, it shares tips and details that will allow you to use it more effectively.
- The console is a command-line interface that lets you type in commands, change and see variable values.
- To activate or deactivate the console, you press the tilde key (~).
- The bottommost line always contains the current user input buffer.
- Once you're done typing your message or command, you press enter for the system to execute it.
- The caret is the blinking cursor that is either an underscore (_) or a full rectangle block (▮).
- All commands start with a leading slash (/) or backslash (\).
If you don't type the leading slash or backslash in front of your text and press enter:
- If in-game, it will send a global chat message.
- If not in-game, the game will add a leading backslash for you.
In other words, it considers everything to be a command.
The two insertion modes are the following:
- When the caret is a small underscore (_), a new character gets inserted (added) where the caret is.
- When the caret is a full rectangle block (▮), a new character replaces the character where the caret is.
Variables accessible through the console are called console variables or cvars for short.
Running auto-completion (by pressing tab) can be used to help speed up several processes:
- To list variables and commands starting with a certain string pattern after you've typed at least one character.
Example: type in
r_and then press tab to get a list of all renderer variables.
- To add the leading backslash.
Example: to vote cpm3a, you can type in
cv map cpm3a, press tab and then enter.
The auto-completion recognizes that cv is a command and will add the leading backslash.
- To speed up typing.
When running auto-completion, CNQ3 will display a short description text next to each result when there is more than one. When a result has full help text available, the letter
h will be displayed in front of the result's name to let you know.
This will display the full help text for the given cvar or command.
In addition, it will also print the following for cvars:
- The type and/or value range
- Which modules own the cvar
help cg_autoAction to see what number corresponds to what feature
This lists all cvars and commands whose names, descriptions or full help text contain the supplied bit of text.
CPMA command aliases
Certain commands and vote strings have short aliases to reduce typing:
CPMA connection info
cstats command to check your ping range for both client-to-server and server-to-client. With no argument, it gives you information for yourself. The command can take a player ID if you want to see the stats of someone else.
There are two very useful commands for searching variables and commands, called
cmdlist. The best property they have is the * matching syntax. The * will try to match as many characters as possible that do not match the following pattern.
cvarlist crosshairwill print out all variables whose names start with "crosshair".
cvarlist *crosshairwill print out all variables whose names contain "crosshair".
The cvarlist command displays a bunch of letters in front of the variables it found. They describe variable types.
Variable types get printed out as a single character when using the
|Category||Description / Remarks|
|S||server info||Sent in response to front-end requests.|
|U||user info||Sent to server on connect or change.|
|R||ROM||Display only, cannot be set by user at all.|
|I||init||Don't allow change from console at all, but can be set from the command line.|
|A||archive||Used for system variables, not for player specific configurations.|
|L||latched||Will only change when C code next does a Cvar_Get() call.|
|C||cheat||Can not be changed when sv_cheats is 0.|
|?||user created||Unknown to the game and created by a set command.|
|h||help||Full help text is available through
CPMA - Using
cv to query values
callvote command can be used to display help and query current CPMA/OSP server settings.
cvwill query the help and give you a list of all the things that can be voted.
Suppose that after reading the help, you're interested in the gameplay category.
cv gameplay will display the help of that category, showing you what can be voted.
It will also tell you what the current gameplay mode is.
OSP help syntax
Most commands that require at least 1 argument will display some help if you invoke them with no argument.
However, some commands can be run without any argument, like
cstats, so a different method is needed to display the help. OSP commands have a special argument for querying the help:
Commands with client numbers
Several commands require a client number as an argument, like
Most of those now support passing a player name (without color codes) and will tell you if there's any ambiguity preventing execution.
Pasting from the clipboard
You can ctrl+c text on the desktop and paste it with ctrl+v into the console.
This is mostly used for entering IP addresses for the
Toggles a cvar from 0 to 1 and 1 to 0.
Syntax: toggle cvarname
- If the cvar is not 0, it becomes 0.
- If the cvar is 0, it becomes 1.
So, for any boolean values, having the bind
bind space toggle cvarname means every time you press the space bar, the cvar's value will "flip".
Finding the last error
After an error occurred, the error message can be found in the cvar
This cvar will not be defined before at least 1 error happened.
Starting with CPMA 1.50, any error that returns you to the main menu will show you a new screen with the error messages so that you don't need to go dig in the console backlog.
Quotes and command chaining
Command arguments are separated by spaces (
), commands by semi-colons (
The problem is that sometimes, you need one of those characters inside an argument.
The solution to this is enclosing the entire argument in double quotes (
Command chaining is mostly useful for binding multiple actions to a single key/button.
bind space "drop;weapnext" to drop the current weapon and select the next one (otherwise you get the pummel). Note that
bind space drop;weapnext would execute
bind space drop and then
Resets a cvar to its default value.
Syntax: reset cvarname
The current and default values can be queried with
set command family
Sets a cvar to a value. If the cvar doesn't exist, it gets created.
Syntax: set cvarname value
|seta||archive||Save to the config.|
|setu||user info||Sent to server on connect or change.|
|sets||server info||Sent in response to front end requests.|
Executes the content of a variable as a command.
Syntax: vstr cvarname
Example #1: with
set rage quit,
vstr rage will execute
Example #2: Connection scripts.
In a read-only config:
set roboty connect roboty.cpmpickup.eu:27961;password lobstarz. In-game:
vstr roboty to connect to the server
Example #3: Smiley with alternating colors.
set smiley1 "say ^5:);set smiley vstr smiley2"
set smiley2 "say ^6:);set smiley vstr smiley1"
set smiley vstr smiley1
bind space vstr smiley
|left arrow||Move caret to the right.|
|right arrow||Move caret to the left.|
|up arrow||Next command.|
|down arrow||Previous command.|
|home||Move caret at the first character.|
|end||Move caret after the last character.|
|delete||Delete the character above the caret.|
|backspace||Delete the character to the left of the caret.|
|page up||Scroll up 6 lines.|
|page down||Scroll down 6 lines.|
|wheel up||Scroll up 2 lines.|
|wheel down||Scroll down 2 lines.|
|insert||Toggle between the 2 insertion modes (overstrike on/off).|
|enter||Finish the line.|
|shift + wheel up||Scroll up 6 lines.|
|shift + wheel down||Scroll down 6 lines.|
|shift + page up||Scroll up 1 page - 1 line.|
|shift + page down||Scroll down 1 page - 1 line.|
|shift + insert||Paste from the clipboard.|
|shift + left arrow||Move caret to the previous argument.|
|shift + right arrow||Move caret to the next argument.|
|control + home||Scroll up to the first line.|
|control + end||Scroll down to the last line.|
|control + C||Clear the input line.|
|control + L||Clear the screen (same as typing /clear.)|
|control + P||Previous command.|
|control + N||Next command.|
|control + V||Paste from the clipboard.|
|control + A||Move caret at the first character.|
|control + E||Move caret after the last character.|
|control + I||Insert cvar's current value.|
|control + D||Insert cvar's default value.|
|control + left arrow||Move caret to the previous word.|
|control + right arrow||Move caret to the next word.|