Rcon Primer

 
Rcon stands for Remote Console (or alternately Remote Control). It is both the method by which you control a Heretic II server and the name of the command itself. Any command issued after the keyword rcon is sent directly to the server as opposed to your local machine. Described herein are some of the most commonly used commands to be an effective rcon user.
 

Setting the password

In order to issue rcon commands you need to set the password first. You can do this in one of three ways:

1. You keep the password in a .cfg file and it's set every time you start the game. To use this method you just add a line to your .cfg file like this:

set rcon_password xxx

2. You type it in once per session in the console. Bring up the console while playing the game and type:

set rcon_password xxx

If you do so the password will be set until you close the game. The next time you start it again you must enter the above command again.

3. You type it in every time you issue an rcon command, like this:

rcon xxx map happyblades

Of the three, the first method is best for obvious reason. In addition, it will prevent you from accidentally revealing the rcon password to everyone on the server if you mistype the set command. For example, if you typed "ser rcon_password xxx" the game will not recognize "ser" (a typo) and assume you want to say the whole line as though you used the talk feature.

But what if you have rcon to several servers? Repeating the set rcon_password command in your .cfg file will only cause the last one to be set (since each following duplicate command overwrites the previous one). The way to get around this is to bind a key to cycle through all your passwords. Here's the script to do this:

alias Rcon1 "set rcon_password xxx; set CycleRcon Rcon2; echo Rcon password set for Server 1"
alias Rcon2 "set rcon_password yyy; set CycleRcon Rcon3; echo Rcon password set for Server 2"
alias Rcon3 "set rcon_password zzz; set CycleRcon Rcon1; echo Rcon password set for Server 3"
set CycleRcon Rcon1
bind kp_5 CycleRcon

You can have as many passwords set as you like once you understand the logic behind the script.

The first three lines set up macros that assign the correct password and display a message letting you know which server you have set rcon to. Since we are using the "echo" command (as opposed to "say") this message is only displayed on your screen. No one else will see it. 

The key to the script is the middle command: "set CycleRcon Rcon2". What this does is set another variable (CycleRcon) to point to the next item in the list (Rcon2 in this case). Once you reach the end of the list, you must point this variable back to the first item (i.e., Rcon1). This is what causes the cycle effect every time you press the bound key.

Finally, set CycleRcon to point to the first item in the list so that it is the one that is used once you hit the key you bind the command to. In this case I used "kp_5", which is the 5 on the numeric keypad on the right-hand side of most keyboards. 

Note that this cycling logic can be used for other purposes. For example, I use it to vary my "good fight" messages so that the first time it says "Good fight!", then "Great battle!", etc.

 
Once the rcon_password has been correctly set you can begin issuing rcon commands. If the password is incorrect you receive the message "Error: bad rcon password" when you try to use an rcon command. Here is a list of the most commonly used ones.
 

status

Sample Usage: rcon status

Lists all the players currently on the server and those coming in (there are denoted by "CNCT" in lieu of the ping). Here is a sample output from the status command:
 
num score ping name lastmsg address qport rate
--- ----- ---- --------------- ------- --------------------- ------ -----
0 12 80 Teez >R@S< 30 24.0.130.26 52798 5000
1 8 120 ElephantMan 20 64.192.254.21 22155 4500
2 11 245 Foogle 0 24.180.215.171 56384 3000
 

dumpuser

Sample Usage: rcon dumpuser 3 or rcon dumpuser Teez

Despite the name this command doesn't actually kick or do anything to a player. It actually shows information about him to your screen. A sample 'dump' looks like this:
 
userinfo
--------
fov 80
msg 0
rate 5000
skin venom
name Teez >R@S<
autoweapon 1
ip 24.202.126.16
 

map

Sample Usage: rcon map happyblades

Changes the map. Pretty straightforward. If the map does not exist on the server you will receive an error message to that effect. No one will be able to log on to the server until you set a valid map. Note that you if the map you load isn't in the sv_maplist the server will continue re-loading that map whenever the frag or time limit is hit. Most server administrators usually have no problem with you choosing a map outside the list but would certainly expect you to set it back to one in the list before you leave.
 

sv_maplist

Sample Usage: rcon sv_maplist

Shows you the list of maps currently on rotation. For example, here's what the results of this command would look like: 

"sv_maplist" is "heretic1e1m1,dmjersey,hallsofsin,dmtown,vilkeep,dmzardoz"

You can change the list by including a list of one or more maps after the command like so:

rcon sv_maplist "happyblades,dmlight,allblades3,bladecircle"

The new map list will remain in effect until the server is restarted or a .cfg file containing a new sv_maplist is executed. Most administrators don't look kindly on setting a new map list. Use the map command to change maps instead.

 

kick

Sample Usage: rcon kick 4 or rcon kick thebishop

Removes a player from the game. He can later return. In order to permanently ban a player you must use the sv addip command in conjunction with kick. Be careful using this command! 

You can choose to kick players either by number or by name. It is far easier to use the number since many lamers use extended characters in their name making it difficult to type in. To get the correct player number issue the status command first. Be aware that there is no guarantee of a player having the same number if he decides to return to the server after being booted. As such, always use the status command to get the correct number before using the kick command.
 

exec

Sample Usage: rcon exec script.cfg

Executes (runs) a script in a .cfg file. Sometimes a server administrator will write script files that contain multiple commands such as special settings or to play a mod. If this is the case the administrator will supply you with a list of scripts and you can run then in the console using this command. It is necessary to include the file extension (.cfg) in order to run the script. 

 

dm_no_bodies

Sample Usage: rcon set dm_no_bodies 1

Set this variable to 1 to make bodies disappear once the player re-spawns. The default is 0, which causes corpses to remain on the floor indefinitely. The more objects the game has to draw and keep track of the slower it will play, so it's best to set this variable to 1. Changes will take effect when the map changes or the server restarts.

 

sv addip

Sample Usage: rcon sv addip 111.222.333.444

Use this command to ban a particularly obnoxious player. Try to use it as a last resort only. You ban players by their IP address (you cannot use a name or anything else). To obtain a player's IP address issue the status command first. Instead of a full IP address you may wish to ban an entire block of addresses. Do this by excluding the last part of the address (e.g. 111.222.333). This has the effect of blocking all players whose IP address starts with those numbers. The necessity for this is because most people will have a different IP address every time they log onto their ISP. Even broadband connections like cable or ADSL get different IPs once in a while (sometimes called a "leased IP") depending on their ISP. However only the last part of the address changes in most cases. Sometimes the last two parts change, in which case you can type in only the first two parts of the IP address.

Unless you issue the sv writeip command the effects of the ban last until the server is restarted.
 

sv listip

Sample Usage: rcon sv listip

Displays a list of IPs, both partial and full, currently banned from accessing the server. The list looks like this:
 
Filter list:
24.202.165.12
214.168.140.24
 

sv removeip

Sample Usage: rcon sv removeip 111.222.333.444

This command removes an IP address from the list of blocked IPs allowing players with that IP to join the server. As with sv addip you will need issue an sv writeip command to make this permanent.

 

sv writeip

Sample Usage: rcon sv writeip

Store the current contents of the ban list (see sv listip) to a text file. Whenever the server restarts the list gets loaded into memory. This has the effect of permanently banning a player from the server.

In order for this command to work the server must have a directory called "Heretic2v16" under the root \Heretic folder and this file must not be write-protected. If these conditions are not met the list cannot be saved and you will receive an error message. Otherwise you will see the following message if the command was successful:

Writing Heretic2v16/listip.cfg.

Note that if the server is running a mode the listip.cfg file is instead saved and read from that mod's folder. For example, if the server is running Siege this file needs to be located in the Heretic\H2Siege directory.

It is also necessary to execute this file at server startup, usually by placing it in the dedicated.cfg file like so:

exec heretic2v16/listip.cfg (or in the case of the Siege example, exec h2siege/listip.cfg)

 

list_dmflags

Sample Usage: rcon list_dmflags

Shows a list of flags available for the game and their current status. For example, whether team-play is turned on or not, if shrines are enabled, etc. Here is a sample output of this command: 
 
DF Flag current definition of flag
Num name value
1) Weapons stay on : on = Weapons remain after being picked up
2) No Shrines off : on = No shrines active in the level
3) No Names off : on = No names are visible to anyone on the level
4) Allow Health off : on = Health is NOT spawned in the level
5) Show Leader on : on = Current Frag leader(s) has yellow orb indicator
6) Chaos Shrines off : on = All Shrines are Chaos Shrines
7) Same Level off : on = When level over - respawn on same level
8) Force Respawn off : on = Instant respawn of players on dying
9) Team Skins off : on = Team play enabled, teams differentiated by skins
10) Team Models off : on = Team play enabled, teams differentiated by model
11) Allow Exit off : on = Exit triggers available on level
12) Infinite Mana off : on = Mana never decreases
13) Friendly Fire off : on = Can damage other teammates in coop or deathmatch
14) Blade only off : on = No weapons spawned - no flying fist either
15) Defensive off : on = No defensive weapons spawned
16) Dismemberment on : on = Dismemberment

To change any of these flags use the set_dmflags and unset_dmflags commands.

 

set_dmflags

Sample Usage: rcon set_dmflags 10

Turns on the specified flag in the game. These changes last until the server is restarted. To change a flag you issue the set_dmflags command with the flag number. To get a list of flags and their respective numbers use the list_dmflags command. For example, to enable team-play mode enter the following command: 

rcon set_dmflags 9

After the command is set the list of flags and their current state is displayed. You can set multiple flags at once by separating the numbers with spaces like so:

rcon set_dmflags 9 13 5

This will turn on team skins, friendly fire and the show leader flags.

 

unset_dmflags

Sample Usage: rcon unset_dmflags 10

As per the set_dmflags command but this disables (turns off) the flag in question.

 

say

Sample Usage: rcon say "Stop laming!"

This works just like the say command in the game (i.e., talk mode) except it appears to come from a user called "console". The voice of God is speaking. Try to avoid using this command as most players assume it is the administrator of the server that is talking, not someone else using rcon. I know of no server admin that would appreciate being impersonated.
 

rcon_address

Sample Usage: set rcon_address 123.123.123.123

This variable stores the IP address of the server you want rcon commands sent to. By default there is nothing stored here. Once set, any and all commands preceded by the keyword rcon will be executed on the server whose IP address matches this variable. This in effect allows you to control a server without joining it, or run commands on a server other than the one you're currently on. Use this functionality sparingly and only with good reason. Note that unlike the others here you do not use the rcon keyword when issuing this command.