Gloom Server Admin Guide
(last updated for version 8.0.0 by r1ch)

General command syntax
All of the commands in this guide follow a common format. A list of possible choices is separated by a | symbol. Items in [square brackets] are optional. Items in (round brackets) are required. Examples: @command (id|name) [somevalue]. This means you must supply either id OR name, and optionally somevalue. @command blah. This means you must supply blah.

Config directories and multi server support
All of the gloom config files should reside in gloom/PORT, where port is the port number of the server, default 27910. When the server is first started up, server.cfg and default-maps.cfg are executed. server.cfg can contain settings from the server variables below (do keep in mind though, server.cfg is executed AFTER the map is loaded, so some variables will not be valid). default-maps.cfg contains the map cycle, as detailed below. Depending on other settings below, other files should be in this directory too.

Gloom-specific server variables
From the server console are a lot of options to configure the style of gameplay and other settings.

Variable Description
teamdamage Enables or disables team damage aka friendly fire. 0 = no team damage, 1 = public team damage (can hurt/kill teammates but are kicked after so many teamkills), 2 = clan team damage (can hurt/kill teammates indefinitely)
laser_color Changes the color of laser tripwires. This is purely aesthetical, it doesn't affect gameplay in any way.
flashlight_color Changes the color of the flashlight. Due to Q2 engine limitations, this also modifies the intensity and size of the light too. 0 default (medium/yellow/normal), 1 green/large/intense, 2 blue/small/weak, 3 pink/tiny/weak
teambonus The amount of build points to supply each team at the beginning of the map. Default 300, cannot be changed during the game (it will take affect only at map startup)
bantime Time (in seconds) to ban someone for an 'automatic' ban. Automatic bans occur in circumstances such as being vote kicked, teamkill kicked, etc.
login Enables the use of the accounts system. If some lamer on a dynamic ISP used by other people persistently returns, you can perm-ban the entire ISP and then give accounts to the valid players. See 'in game commands' for details on adding/removing accounts. Default 0.
login_message Message to display if someone is perm-banned and accounts are enabled, but they do not have an account.
adminpassword Password for in-game admin support. Try not to make it too long since it is passed in userinfo. If set to "", in-game admin support is disabled (default).
max_frags Maximum amount of frags a player can have to spend on classes (probably best left untouched). Default 10.
hidespawns Hide the display of the number of enemy spawns in the HUD (probably best left untouched). Default 1.
reconnect_address If set, clients will be forced to reconnect to the address specified. This is a very good way of preventing bots and other client side proxies. Eg, set reconnect_address "216.37.2.25:27910".
mapdebugmode Show map debugging information. Not recommended on a public server, this will print to the server console various map events such as triggers firing, targets being used, etc. Set to 1 to enable basic info. Set to 2 to show lots of info (this can get quite spammy). If set to 3, when you load your map the DLL will write out a mapname.txt file. This file can then be renamed to .ent and distributed for use with the server side entity parser.
max_rate The maximum value a client is allowed for 'rate'. Use this to limit server bandwidth usage. Recommended value is about 8000-12000, default is 25000. Do not set below 1000.
max_cl_maxfps The maximum value FPS a client can have. The higher the client FPS the more bandwidth usage it takes and the more processor time required by the server. Default and recommended value is 90.
dynamic_configs If dynamic_configs is set to 1 (default 0), the server will change map cycle based on the number of players currently connected. If there are less than tiny_threshold players, default-maps.cfg will be run. If there are less than small_threshold players but more than tiny_threshold players, tiny-maps.cfg will be run. If there are less than medium_threshold but more than small_threshold players, small-maps.cfg will be run. I think you get the idea by now.

The values should conform to this equality:
tiny_threshold < small_threshold < medium_threshold < large_threshold

tiny_threshold
small_threshold
medium_threshold
large_threshold
teameven If set to 1 (default), no one is allowed to join a team with more players than the other team to keep the teams balanced.
xminrule If xminrule is set to 1 (default), none of the existing spawns in the map can be hurt for however long xmins is set to.
xmins Only applies if xminrule is set to 1, none of the original spawns can be damaged for this amount of minutes. Defaults to 5.
voting Enables/disables certain vote commands. Default is 63, which allows all vote commands. To specify which ones to allow and deny, add up the values of the ones you want and set voting to this number:
Kick 1 Teamkick 8
Map 2 Mute 16
Nextmap 4 Endmap 32
talk_threshold Flood protection control. The higher this number, the more lines of text a client can say before being stopped by the protection. This is an arbitrary number, it doesn't really mean anything. Default is 120.
maxswitches Number of times a client is allowed to change teams before being forced into spectator mode. Default 2.
reconnect_wait Timer after the map has loaded that no one is allowed to join the game for. This gives clients with a slower connection chance to start at the same time as everyone else. Value is in seconds, default 20.
bandwidth_mode Control how many 'nice' effects are generated. For internet play this is best left at 0 for bandwidth reasons. For LAN play, increasing this value to 1 will make more gibs, etc. Setting to 2 will generate bullet casings and other nice effects. Default 0.
teamarmordamage Control whether teammates can hurt each other's armor. Default 1.
teamreflectarmordamage If set to 1, any armor damage inflicted to a teammate will hurt the attacker. Default 0.
teamspawnsplashdamage Control if splash (area of effect/radius) weapons can damage your own team's spawns. Default 1.
teamspawnslashdamage Control if slashing can damage your own team's spawns. Default 1.
teamsplashdamage Control if teammates take damage from radius explosive weapons. Default 1.
ceiling_eggs If set to 1, all the eggs will be spawned on the ceiling. Only valid during map load. Default 0.
turretmode Control what the laser turret really fires. Shouldn't really be changed apart from a bit of fun. 0 = laser, 1 = rockets, 2 = autocannon, 3 = bullets, 4 = spike grenades. Default 0.
secure_modulate_cap Enforce the video cap settings to all clients. If set to 0, clients may be able to change Quake II video commands and alter their game brightness. Recommended and default 1.
scoring_mode Change how frags are awarded. Shouldn't really be changed apart from a bit of fun. 0 = 1 kill gives 1 frag, 1 = you get x frags where x was the cost of the class you killed, 2 = you get y/x frags, where x is your class cost and y is enemy frag cost. Default 0.
motd Change the message of the day. This appears in the main menu that clients use to join a team. Maximum length of each line is 22 characters. motd controls the 1st line, motd2 the second.
motd2
votetimer The number of seconds clients have to participate in a vote before it ends.
mapnameX Control the map cycle, where X is a number between 1 and 64 (inclusive). See below for more details about the map cycles and how to set up rotations.
enforceteams If set to 1 (default 0), players cannot choose which team to play on. They must be assigned to a team by an in-game admin using the @setteam command described below.
banaccountholders If set to 1 (default 0), anyone using an account who gets auto-kicked (ie by cheat check, vote kick, etc) will have their account disabled until an admin re-enables it.
wordfilter If set to 1 (default), clients using filtered words will just see a message saying 'Speech Filtered' and their message will be disallowed. If set to 2, anyone attempting to use a filtered word is kicked. 0 disables the word filters. To add/remove from the world filter list, look at the in-game admin command below.

Map cycles
As above in the server cvar listings, you can configure quite a few options for the map cycle. The core of the cycle is in the form of 5 text files, default-maps.txt, tiny-maps.txt, small-maps.txt, medium-maps.txt and large-maps.txt. The latter 4 only apply if dynamic map cycles are enabled. All of the text files should reside in gloom/PORT where PORT is the server port, eg 27910. The format of the map cycle configs is a list of maps, one after the other. Eg:
gloom
g2se
acron
totalkarn
etc. You can also have a default-maps.cfg, tiny-maps.cfg, etc file which will be executed as well. This can contain things such as different timelimits per rotation. Keep in mind you should NOT have any set mapnamex "blah" lines in the .cfg files. This is different from the way pre-8.0.0 worked, so make sure you use the new config format.

Gloom-specific server commands
These commands are run from the server console using the 'sv' prefix, eg sv listip. Here is a list of all the gloom-specific ones. The 'sv' prefix has been omitted in each instance.

Command Description
listip Show the current IP ban list. No parameters.
addip Add an IP ban. Syntax: sv addip x.x.x.x [time] [unit] [reason]. time is how long to ban the IP for (default 1), default units are in hours but can be changed by specifying unit, which is one of the following: seconds, minutes, hours, days, weeks, years. If reason is specified, this will be shown on the ban list. x.x.x.x is the IP address, the wildcard * is permitted. Eg: sv addip 63.252.21.* 4 weeks teamkilling
removeip Remove an IP from the ban list. Syntax: sv removeip x.x.x.x. Eg: sv removeip 63.252.21.*
updateuserinfo Force a userinfo update on all clients. This should be used after changing max_rate or max_cl_maxfps to enforce the clients to the new values.
darkness Make the level a bit darker. Novelty command :)
darkness2 Make the level even more darker. As above.
darkness3 Give everyone a headache.
uptime Show the servers uptime.
who Show a list of clients with ID, player name and IP address or username.
listghosts Show the current unclaimed ghosts. (if someone forgets their code you can fetch it this way)
kickobs Kick all observers from the server. Useful if the server is full and you want to allow people who want to play on.
globalstuff Stuff a command to all connected clients, eg sv globalstuff say hello!
search Search the IP logs. The IP log contains the name and IP address of the past 10000 connections. Syntax: @search (name|ip|subname|subip) searchstring. searchstring is the text to search for. Eg, sv search name R1 will return the last set of IP addresses I connected with. sv search subname R1 will return the IP addresses for every player with 'R1' in their name. sv search ip 24.52.35.231 will tell you the names of the players who use that IP. sv search subip 65.87 will return the names of all players that have 65.87 in their IP address. Handy to track down those lamerz :)
addaccount Add a user account. Only works if 'login 1' is set. Syntax: sv addaccount username password. username and password cannot be longer than 8 characters.
delaccount Remove a user account. Only works if 'login 1' is set. Syntax: sv delaccount username. If the user who's account you delete is on the server, they will be kicked.
enableaccount Enable a previously disabled user account. Only works if 'login 1' is set. Syntax: sv enableaccount username.
disableaccount Disable a user account. Only works if 'login 1' is set. Syntax: sv disableaccount username. This prevents it from being used, but it is not deleted. If the owner of the account is on the server, they will be kicked.
saveuseraccounts Immediately save the account database to disk. Useful if you suspect the server is about to catch fire. Only works if 'login 1' is set.

Enabling the in-game admin commands
To enable the gloom DLL in-game admin features, you must set an admin password on the server. This is done using the variable adminpassword, eg in the server.cfg or whatever you have, put set adminpassword "secret"

In-game admin commands
To become an in-game admin, you should get the admin password from the server administrator, then add it to your config as follows:
set ap "thepassword" u
no, the u at the end isn't a typo, it has to be there to make the variable part of your userinfo. I also recommend having set ap "" u in your autoexec.cfg, then having another config such as onecall.cfg or barrysworld.cfg depending on the server and have the real password in there. This way you won't go trying to use the password on the wrong server.

Note that most of the commands use either a player ID or name. To determine a player's ID number, you can use the playerlist, @who or rcon status commands. For the player name, a substring match will work. Eg if there is someone called 'asdflamer1234', you can specify 'lamer' as the player name. If there are 2 or more players with the same substring match, the command will fail. If one player's name is an exact match for a substring of another player, the exact match is used. Eg if you have someone called 'lamer' and someone else called 'lamer1234', @kick lamer would kick 'lamer'. @kick lamer a second time would then kick 'lamer1234'.

Once you have become an in-game admin, the following commands will work:

@kick Kick a client. Syntax: @kick (id|name), where id is the player id. Eg: @kick 4
@ban Ban a client. Syntax: @ban (id|name) time unit [reason], time is how long to ban the player's IP for, units are changed by specifying unit, which is one of the following: seconds, minutes, hours, days, weeks, years. If reason is specified, this will be shown on the ban list. x.x.x.x is the IP address, the wildcard * is permitted. Eg: @ban 4 2 hours. You can use -1 as time for a permanent ban. If -1 is used, the unit parameter is ignored. Eg: @ban lamer -1 attempting to hack server.
@addip Add an IP to the ban list. Syntax: @addip x.x.x.x time unit [reason], time is how long to ban the IP for (default 1), default units are in hours but can be changed by specifying unit, which is one of the following: seconds, minutes, hours, days, weeks, years. If reason is specified, this will be shown on the ban list. x.x.x.x is the IP address, the wildcard * is permitted. Eg: @addip 63.252.21.* 4 weeks teamkilling. You can use -1 as time for a permanent ban. If -1 is used, the unit parameter is ignored. Eg: @addip 4.2.2.* -1 attempting to hack server.
@removeip Remove an IP from the banlist. Syntax: @removeip x.x.x.x. Eg: sv removeip 63.252.21.*
@listip List the current IP banlist. (as of 8.0.0, this requires you to have the rcon_password set for the server)
@stuff Stuff commands to the client, as if they were typed in at their console. Syntax: @stuff (id|name) commands. Eg: @stuff 3 say I think I'm a bird! ; @stuff 3 say flap flap flap
@check Check a variable on the client, eg to see what vid_gamma they are using or something. Syntax: @check (id|name) variable. Eg: @check 2 gl_modulate
@n00k1 Create a small explosion at your current location. Useful to clear out bad eggs etc. Only works from observer mode.
@n00k2 As above, but a slightly larger explosion. Only works from observer mode.
@blast Fine precision removal tool, useful to eg remove a bad egg in a group of them without taking them all out. Only works from observer mode.
@summon Allows you to spawn extra structures into the game, only works from observer mode. Syntax: @summon X where X is a: teleporter, turret, mgturret, depot, detector, egg, spiker, obstacle, healer or gasser. Useful if some lamer has just TK'd an entire team's defence and you need to rebuild it quickly. @summon'ed structures will not refund build points if killed.
@pause Pause or unpause the game. This freezes all entities and clients except admins. Admins can then go around and use @summon for example to rebuild a TK'd base without interference from players.
@mute Mute a client. This prevents them from using say, team say or private messages. Syntax: @mute (id|name). Eg: @mute noisyperson
@unmute Allows a muted client to speak again. Syntax: @unmute (id|name). Eg: @unmute noisyperson
@givefrag Give frags out, novelty command really. Syntax: @givefrag (id|name) amount, id being the player's ID and count being amount of frags to give.
@fireworks Summon fireworks at your current location. Yet more novelty value.
@setteam Set a player's team. Syntax: @setteam (id|name) team. Team is 'human', 'alien' or 'obs'. Eg: @setteam R1 alien. This command should be used if enforced teams are on to set players on to the correct team.
@test Mainly useful for mappers, this command will tell you how many entities are in the PVS/PHS from your current location. Syntax: @test [pvs|phs|diff]. If you specify a parameter of 'pvs' or 'phs', it will tell you the names of the entities found and draw a green laser locator to them. Using 'diff' will show you which ents are currently in the PHS but not in the PVS.
@ip Quick way to grab a players IP address without showing everyone elses. Syntax: @ip (id|name)
@push Cause a small 'push' effect from your current location. Useful for pushing players who get stuck in parts of the map free.
@light Turn on/off an admin flashlight. This works from observer mode allowing you to have a flashlight to point out things in the map or help catch lamers in the dark (?). Syntax: @light [0|1|2|3|4]. The number after the command determines the style of flashlight, same as the server cvar flashlight_color. If not specified, the default is used.
@search Search the IP logs. The IP log contains the name and IP address of the past 10000 connections. Syntax: @search (name|ip|subname|subip) searchstring. searchstring is the text to search for. Eg, @search name R1 will return the last set of IP addresses I connected with. @search subname R1 will return the IP addresses for every player with 'R1' in their name. @search ip 24.52.35.231 will tell you the names of the players who use that IP. @search subip 65.87 will return the names of all players that have 65.87 in their IP address. Handy to track down those lamerz :)
@addaccount Add a user account. Only works if 'login 1' is set. Syntax: @addaccount username password. username and password cannot be longer than 8 characters.
@delaccount Remove a user account. Only works if 'login 1' is set. Syntax: @delaccount username. If the user whose account you delete is on the server, they will be kicked.
@enableaccount Enable a previously disabled user account. Only works if 'login 1' is set. Syntax: @enableaccount username.
@disableaccount Disable a user account. Only works if 'login 1' is set. Syntax: @disableaccount username. This prevents it from being used, but it is not deleted. If the owner of the account is on the server, they will be kicked.
@saveuseraccounts Immediately save the account database to disk. Useful if you suspect the server is about to catch fire. Only works if 'login 1' is set.
@addword Add a word to the filter list. Syntax: @addword wordtofilter. Keep in mind due to the parsing algorithms, short words could ban more than you intended since intelligent substring matches are used.
@removeword Removed a word from the filter list. Syntax: @removeword wordtoremove.
@shot Take a screenshot of your screen and the selected players screen with a blend effect. You can then get them to send you the screenshot for verification they are not using modified skins etc. Syntax: @shot (name|id)
Back to planetgloom.com