Coming to BG3 is a new suite of server administration tools. These suite comes in two parts: a customizable SteamID-based permission system, avoiding the need for distributing an rcon password; and a set of commands for managing individual players and groups of players.
Customizable Permissions System
The only way to execute server commands in the past (excluding plugins) has been to distribute a single password shared among all server administrators. Obviously, a problem with this is that if the password leaks, then anyone could access the server and perform malicious commands. A more secure system was needed.
And now, that system has arrived. With this new system, server owners can create “roles” with specific powers, and then assign specific players (by SteamID) to those roles. They can do this by editing a new file, permissions.res , which lies inside the CFG folder of The Battle Grounds III. Within this file, roles, can be created as such:
//This line of text is a comment, and is ignored by the game. //Any line which begins with // is a comment "admin" { "permissions_manage" 1 "player_manage" 1 "mapmode" 1 "bot_manage" 1 "console_access" 1 "players" { STEAM_1:0:52754047 1 } }
This creates a role named “admin” with all possible permissions. Here is a list of all the assignable permissions and what they grant access to:
- “permissions_manage” – players with this permission are allowed to assign players to roles in-game. Reserve this permission for the trusted server owners.
- “player_manage” – players with this permission are allowed to kick, slay, and otherwise manage players.
- “mapmode” – players with this permission are allowed to change the map and change the gamemode.
- “bot_manage” – players with this permission are allowed to add/remove bots from the server.
- “console_access” – players with this permission are allowed to execute any console command on the server. This is was the power granted to those in the old password system.
For further details on how to assign and create roles, server administrators should read the documentation inside the permissions.res file.
How to Enter Commands
There are two locations admins can use to enter commands. The first is the console and the second is the game chat.
Main Console
By pressing the tilde ~ key, usually near the top-left corner of a keyboard, players can open the command console. Commands (as seen later in this document) can be typed in, and then the enter key is pressed to send the command to the server.
In-Game Chat
By pressing the Y key (by default), players can open the in-game chat. If the message typed into the chat starts with a exclamation mark ! , then the text is sent as a command to the server and the message appears in chat. If the the message starts with a slash / , then the text is sent as a command but the message is hidden from chat.
Command Suite
Corresponding with the new permissions is a new set of commands. Some of these commands are not new, but they have been included because they have been retrofitted into the new system and were not well-documented beforehand.
Some of these commands have an argument called selector, which allows a command to be targeted to multiple players. Here is a command list:
Command | Arguments | Meaning | Permission |
mute | selector | Mutes the specified player(s). | player_manage |
unmute | selector | Unmutes the specified player(s). | player_manage |
solo | selector | Mutes all players except for the admin who entered the command. If the same admin enters the command again, the solo is turned off. If a different admin enters the command, then the solo is switched to that admin. | player_manage |
unsolo | None | Turns off all solo powers | player_manage |
slay | selector | Kills the specified player(s). | player_manage |
shrooms | selector | Makes specified player fast. | player_manage |
heal | selector | Heals specified player up to full health. | player_manage |
health | num-health selector | Heals specified player up by specified amount of health. | player_manage |
freeze | selector | Freezes player. | player_manage |
spawn | selector | Spawns the specified player(s) if they are dead, regardless of gamemode. | player_manage |
spec | selector | Changes the specified player(s) to spectator. | player_manage |
amer | selector | Switches the specified player(s) to the American team. | player_manage |
brit | selector | Switches the specified player(s) to the British team. | player_manage |
aclass | class-abreviation | Linebattle mode only. Switches all American players to the class matching the given abbreviation. The abbreviations are the same as those used in the class limit server variables. This also forces players who join the American team to pick this class. | player_manage |
bclass | class-abreviation | Same as above, but for the British team. | player_manage |
akit | weapon uniform ammo | Linebattle mode only. Switches all American players to the specified weapon, uniform, and ammo of their current class. Arguments must be integers. For example, with American Infantry, a weapon of 0 yields a Long Pattern, 1 yields a Charleville, and 2 yields a Spanish musket. Uniform and ammo default to 0 if not specified. The weapon choice is enforced onto all joining players. | player_manage |
bkit | weapon uniform ammo | Same as above, but for the British team. | player_manage |
clip | selector | Toggles “noclip” movement on the selected player(s). | player_manage |
rc | command-string | All of the arguments after “rc” are passed to the server as a standalone command. This is identical to the “rcon” command which was used before. | console_access |
exec | .cfg | Executes named configuration. i.e. “exec lms.cfg” | mapmode |
linebattle | num-rounds | Sets the number of rounds, and then starts a linebattle by running cfg/linebattle.cfg | mapmode |
lms | num-rounds | Sets the number of rounds, and then starts an LMS match by running cfg/lms.cfg | mapmode |
mp_tickets_a_adjust | num- tickets | Adjusts the American tickets by specified amount. | mapmode |
mp_tickets_b_adjust | num- tickets | Adjusts the British tickets by specified amount. | mapmode |
skirm | num-minutes-per-round | Sets the number of minutes per round, and then starts a 2-round skirmish match by running cfg/skirm.cfg | mapmode |
changemap | map-name | Changes the server to the specified map. | mapmode |
nextmap | map-name | Sets the next map to be the specified map. | mapmode |
Selectors
These are the selectors players can use to target a command to target groups of players.
Selector | Mechanic |
@all | Selects all players |
@brit | Selects all players on the British team |
@amer | Selects all players on the American team |
@spec | Selects all players who are spectators |
@bot | Selects all players who are bots |
@me | Selects the player making the selection |
@aim | Selects the player aimed at by the selecting player |
@alive | Selects all players who are alive |
@dead | Selects all players who are dead |
#number | Selects the player whose player index (as viewable with the “status” command) matches the number |
name | Selects the player whose name most closely matches the given name |
Console Variables
Allows admins to change the state of the server by controlling all types of variables, from adding and removing bots to changing the gravity and gamemode.
Command | Variable | Mechanic |
bot_add | number | Adds the specified number of bots to one of the teams. The team alternates between successive commands. |
bot_add_a | number | Adds specified number of bots onto the American side. |
bot_add_b | number | Adds the specified number of bots onto the British side. |
bot_difficulty | 0,1,2,3 | Sets difficulty of newly added bots. 0 is easy, 1 is normal, 2 is hard and 3 is random. |
bot_follow_timeout | Time (in seconds) | Controls how long a bot will follow a player who uses the “Follow Me!” command. |
bot_fun_names | 1 – on 0 – off | Sets bot names to “fun names” *party favor sound* |
bot_kick_all | Kicks all bots. | |
bot_maxplayers | number | Sets a slot number for bots to occupy. For example, if bot_maxplayers is set to 10, then 10 bots will occupy the server. Individual bots are kicked when players join, until there are 10 players occupying the server. |
bot_maxplayers_cap | 1 – on 0 – off | Ensures that bots do not completely fill up a server, leaving a gap for players to join. |
bot_minplayers | number | Put into the servers .cfg file, this specifies the number of bots to be added by default. Only enabled when bot_minplayers_mode is set to 1 or 2. |
bot_minplayers_map | number | Found in a maps .cfg file, this determines the number of bots in a specific map. |
bot_minplayers_mode | 0,1,2,3 | Determines the overall usage of bots in the server. 0 – Bots disabled. 1 – Use bot_minplayers 2 – Let bot_minplayer_map override 3 – Use only bot_minplayers_map |
bot_vcomms | 1 – on 0 – off | Disallows the bots’ usage of voice commands. |
lb_tighten_vertical_accuracy | 1 – on 0 – off | Experimental Linebattle Mode. Tightens vertical bullet spread. However, 30% of all shots which hit a target further than 50 meters do not hit the target. |
mp_ammo_cache_refresh_time | Time in seconds (30 is default) | Controls the refresh rate of ammo caches in maps. |
mp_autoteambalance | 1 – on 0 – off | Toggling allows server to keep teams balanced. |
mp_comp_notifications | 1 – on 0 – off | Turns on/off the in-chat notifications for the ‘spawn’, ‘noclip’, ‘mp_tickets_a_adjust’, and ‘mp_tickets_b_adjust’ commands. |
mp_competitive | 1 – on 0 – off | Turns off class specific forward spawns. |
mp_flagmode | 1 – CTF 0 – Skirm | Changes maps from CTF to skirm. Requires map change to be put into effect. |
mp_flagmode_randomize | 1 – on 0 – off | Allows maps that are traditionally skirmish maps to be CTF. |
mp_falldamage | 1 – on 0 – off | Toggles fall damage. |
mp_forcecamera | 1 – on 0 – off | Disallows freeroam of spectator camera. |
mp_friendlyfire | 1 – on 0 – off | Toggles friendly fire. |
mp_friendlyfire_grenades | 0 – No FF at all 1- Limited FF 2- Very slight FF | Toggles friendlyfire modes on grenades. |
mp_restartround | 1 | Restarts the round after a few seconds. |
mp_timelimit | number | Changes time limit. |
sv_cheats | 1 – on 0 – off | Allows usage of commands such as noclip/buddha etc. BY ALL PLAYERS ON SERVER. Allows exploitation of server by clients. USE WITH EXTREME CAUTION. |
sv_alltalk | 1 – on 0 – off | Toggling on allows teams to voice communicate with each other. |
sv_flintlock_delay_offset | Time (in seconds) | Adjusts flintlock times serverwide. |
sv_friction | 4 default | Changes the friction on the server. |
sv_gravity | 600 default | Changes the gravity. |
sv_headhits_only | 1 – on 0 – off | Makes it so head hits only register. |
sv_infiniteammo | 1 – on 0 – off | REQUIRES SV_CHEATS 1 Gives player infinite ammo and negates the need to reload. |
sv_muzzlevelocity_scale | Scale (i.e. 1 is default 2 is 2x larger) | Scales muzzle velocity. |
sv_perfectaim | 1 – on 0 – off | REQUIRES SV_CHEATS 1 Bullets go exactly where crosshair is pointing. |
sv_player_model_scale | Scale (i.e. 1 is default 2 is 2x larger) | REQUIRES SV_CHEATS 1z Allows player model scale to be changed. Clientside command. |
sv_simulatedbullets_gravity | Scale (i.e. 1 is default 2 is 2x larger) | Scales the effect of gravity on the simulated bullets. Useful for playing with bulletdrop. |
sv_stamina | 1 – on 0 – off | Toggles stamina on and off. Useful for practicing melee. |
sv_steadyhand | 1 – on 0 – off | REQUIRES SV_CHEATS 1 Negates recoil. |
sv_turboshots | 1 – on 0 – off | REQUIRES SV_CHEATS 1 Allows for faster rate of fire. Buggy at times. |
sv_password | “password” | Sets server password. |
Example Commands
- amer @all //switches all players to American team
- changemap ctf_river //switches the map to ctf_river
- spec @aim //Switches the player aimed at to spectator
Needless to say, all of these commands and permissions are subject to change.