Using bots
ReGameDLL_CS includes the zBot code used by Counter-Strike: Condition Zero. Dedicated servers must enable it explicitly, and CS 1.6 servers also need the separate bot profiles and resources.
:::warning Old command-line option
Do not use the old -bots HLDS command-line option. It was removed upstream in favor of the bot_enable CVar.
:::
Enable bots on CS 1.6
- Install a current ReGameDLL_CS release.
- Download the official
bot_profiles.zip. - Extract the archive into the server root so its
cstrikefiles merge into<server>/cstrike. - Create or edit
<server>/cstrike/game_init.cfgand set:
bot_enable "1"
- Fully restart the server.
The regular regamedll-bin-*.zip release does not include the CS 1.6 bot profile archive, so installing only the GameDLL is not enough.
Enable bots on Condition Zero
Condition Zero already supplies the normal zBot profiles and resources. On a dedicated server, edit <server>/czero/game_init.cfg and set:
bot_enable "1"
Then fully restart the server. Listen servers enable zBot regardless of this CVar.
Add and remove bots
Run these commands in the server console or through RCON:
| Command | Result |
|---|---|
bot_add | Adds a random bot, using bot_join_team as the team preference. |
bot_add <profile> | Adds the named profile from BotProfile.db. |
bot_add_t [profile] | Adds a random or named Terrorist bot. |
bot_add_ct [profile] | Adds a random or named Counter-Terrorist bot. |
bot_kill or bot_kill all | Kills all living bots without removing them. |
bot_kill <name> | Kills one bot. Quote names that contain spaces. |
bot_kick or bot_kick all | Removes all bots and resets the quota so they are not immediately re-added. |
bot_kick <name> | Removes one bot and reduces the quota. |
bot_about | Prints information about the bot implementation. |
Manually adding a bot increases bot_quota; manually kicking one reduces it.
Configure bot count
bot_quota_mode controls how bot_quota is interpreted.
Keep exactly six bots
bot_quota_mode "normal"
bot_quota "6"
bot_join_after_player "0"
Keep ten total active players
In fill mode, humans plus bots are kept near the quota:
bot_quota_mode "fill"
bot_quota "10"
Keep two bots per human
In match mode, the quota is a human-to-bot ratio:
bot_quota_mode "match"
bot_quota "2"
Useful quota settings:
| CVar | Values | Meaning |
|---|---|---|
bot_join_after_player | 0, 1, 2 | 0: bots may join an empty server. 1: wait for a human on T/CT. 2: wait for any connected human, including spectators. |
bot_join_delay | seconds | Delays bot joining after a map change. |
bot_auto_vacate | 0 or 1 | When enabled, keeps a free slot available for a human player. |
bot_join_team | any, T, CT | Preferred team for automatically added bots. |
Difficulty, chatter, and objectives
bot_difficulty "2"
bot_chatter "minimal"
bot_defer_to_human "0"
bot_difficulty:0easy,1normal,2hard,3expert.bot_chatter: commonlyoff,radio,minimal, ornormal.bot_defer_to_human 0: bots may perform scenario objectives.bot_deathmatch 1: bots use deathmatch behavior and do not perform the normal scenario.bot_freeze 1: prevents bots from moving, which is useful for testing.
Weapon presets are also available:
bot_knives_only
bot_pistols_only
bot_snipers_only
bot_all_weapons
Navigation for custom maps
Bots need a navigation file at <mod>/maps/<map>.nav. If a custom map does not provide one, run:
bot_nav_analyze
Navigation analysis can take time and writes a new .nav file. Current ReGameDLL_CS builds reload the generated navigation data after analysis without requiring a separate map restart.
Back up hand-edited .nav files before re-running analysis. The additional bot_nav_* commands are advanced editing tools and should be used on a test server.
Example bot configuration
After enabling bots in game_init.cfg, place everyday bot behavior in game.cfg or a separate file executed by your server configuration:
bot_quota_mode "fill"
bot_quota "12"
bot_join_after_player "2"
bot_join_delay "5"
bot_auto_vacate "1"
bot_difficulty "2"
bot_chatter "minimal"
bot_defer_to_human "0"
See Troubleshooting if the bot_* commands are unknown or bots do not join.