WeedsBot v1.20 for Counter-Strike ================================= WeedsBot Overview ----------------- "WeedsBot v1.20" is a bot addon for Counter-Strike, based on the bots from Counter-Strike: Condition Zero. Although the bot code was derived from Counter-Strike: Condition Zero, what makes WeedsBot different from other bots that were created in the same manner is that Counter-Strike has not been changed in the least. All gameplay, in-game text (except for the addition of color-coded bot and player radio-chat locations), menus, as well as the player and weapon models are identical to Counter-Strike. The only feature that is similar to Counter-Strike: Condition Zero is the hostage behavior and models. Note that there is absolutely NO way around this minor problem when creating bots for Counter-Strike in this manner (using the bot code from Counter-Strike: Condition Zero). In actuality, one could simply delete the various bot navigation mesh files (all of the ".nav" files contained in the "Maps" directory), which will then toggle the hostage behavior code to the method that was used in the original Counter-Strike... but of course, the added bots will not function then. WeedsBot Client Package Installation ------------------------------------ WeedsBot_Client_Package.zip Note that if you do not operate a Counter-Strike server (but only wish to play on a server that is running WeedsBot), this is the required package that you will need to download and install. All of the various resource files that are included in the "WeedsBot_Client_Package.zip" archive are required (even if you do not actually install and activate the version of WeedsBot included in the "WeedsBot_Server_Package.zip" archive for your Counter-Strike game installation). To install, unzip the files and directories contained in the "WeedsBot_Client_Package.zip" archive to the "C:\Program Files\Steam\SteamApps\\Counter-Strike\CStrike" directory on your hard drive in verbatim. Note that the "" subdirectory is named the same as your main Steam account login name. WeedsBot Server Package and Single-Player Installation ------------------------------------------------------ WeedsBot_Server_Package.zip Note that if you operate a Counter-Strike server, or do not operate a Counter-Strike server (but still wish to play the bots in "single-player" mode), this is the required package that you will need to download and install. To install, unzip the files and directories contained in the "WeedsBot_Server_Package.zip" archive to the "C:\Program Files\Steam\SteamApps\\Counter-Strike\CStrike" directory on your hard drive in verbatim. Note that the "" subdirectory is named the same as your main Steam account login name. WeedsBot Server Package and Single-Player Activation and Configuration ---------------------------------------------------------------------- To activate and configure WeedsBot, perform the following steps: 1 - Right-click on the "Counter-Strike" entry within your Steam Client Games Library, and then left-click on "Properties". 2 - Left-click on the "Set Launch Options" button, and then add "-dll DLLs\WeedsBot.dll" (minus the quotes) to the "Launch Options - Counter-Strike" text-entry box. 3 - Click the "OK" button. 4 - Click the "Close" button. Alternatively, you can simply add the command line parameter "-dll DLLs\WeedsBot.dll" (minus the quotes) to the actual Half-Life executable that runs Counter-Strike (e.g. "C:\Program Files\Steam\SteamApps\\Counter-Strike\HL.exe" -dll DLLs\WeedsBot.dll). Again, note that the "" subdirectory is named the same as your main Steam account login name. WeedsBot Server Package and Single-Player In-Game Bots Command Menu ------------------------------------------------------------------- Also included with the WeedsBot Server and Single-Player Package is a new replacement "CommandMenu.txt" file. This file adds a new set of menu items and options to Counter-Strike's in-game "VGUI" command menu. The new menu items and options are all extremely handy for adding and removing bots, as well as controlling and configuring all behavior settings of the bots from within the game. Note that these settings and options would normally have to be manually entered as console commands and variables (CVars) within the game (as listed in the "WeedsBot Server Package and Single-Player Console Commands" section below), but the new command menu makes adding, removing, and controlling the bots within the game a snap! To display the command menu in Counter-Strike, simply press the key on your keyboard that is bound to the "+commandmenu" function within the game. Note that Counter-Strikes default key to display the command menu is "h". The following is an overview of the new replacement Counter-Strike command menu (as well as all of the menu options' matching console commands and variables): Multiplayer Team Configuration -> | Team Auto-Balancing | | Enable (mp_autoteambalance 1) | Disable (mp_autoteambalance 0) | Team Limiting | | Disable Team Limiting (mp_limitteams 0) | Set Team Limiting to 1 (mp_limitteams 1) | Set Team Limiting to 2 (mp_limitteams 2) | Set Team Limiting to 3 (mp_limitteams 3) | Set Team Limiting to 4 (mp_limitteams 4) | Set Team Limiting to 5 (mp_limitteams 5) | Set Team Limiting to 6 (mp_limitteams 6) | Set Team Limiting to 7 (mp_limitteams 7) | Set Team Limiting to 8 (mp_limitteams 8) | Set Team Limiting to 9 (mp_limitteams 9) | Restart Round (sv_restartround 1) Add/Remove Bots -> | Add Bots | | Add 1 Terrorist Bot (bot_add_t) | Add 1 Counter-Terrorist Bot (bot_add_ct) | Add 1 Random Team Bot (bot_add) | Add 8 Random Team Bots (bot_add;bot_add;etc...) | Add 9 Random Team Bots (bot_add;bot_add;etc...) | Add 10 Random Team Bots (bot_add;bot_add;etc...) | Remove Bots | | Kill All Bots (bot_kill) | Kick All Bots (bot_kick) | Bot Quotas | | Disable Bot Quota (bot_quota 0) | Set Bot Quota to 1 (bot_quota 1) | Set Bot Quota to 2 (bot_quota 2) | Set Bot Quota to 3 (bot_quota 3) | Set Bot Quota to 4 (bot_quota 4) | Set Bot Quota to 5 (bot_quota 5) | Set Bot Quota to 6 (bot_quota 6) | Set Bot Quota to 7 (bot_quota 7) | Set Bot Quota to 8 (bot_quota 8) | Set Bot Quota to 9 (bot_quota 9) | Bot Quota Matches | Disable Bot Quota Match (bot_quota_match 0) Set Bot Quota Match to 1 (bot_quota_match 1) Set Bot Quota Match to 2 (bot_quota_match 2) Set Bot Quota Match to 3 (bot_quota_match 3) Set Bot Quota Match to 4 (bot_quota_match 4) Set Bot Quota Match to 5 (bot_quota_match 5) Set Bot Quota Match to 6 (bot_quota_match 6) Set Bot Quota Match to 7 (bot_quota_match 7) Set Bot Quota Match to 8 (bot_quota_match 8) Set Bot Quota Match to 9 (bot_quota_match 9) Bot Weapon Restrictions -> | Pistols | | Allow (bot_allow_pistols) | Prohibit (bot_allow_pistols 0) | Shotguns | | Allow (bot_allow_shotguns 1) | Prohibit (bot_allow_shotguns 0) | Submachine Guns | | Allow (bot_allow_sub_machine_guns 1) | Prohibit (bot_allow_sub_machine_guns 0) | Rifles | | Allow (bot_allow_rifles 1) | Prohibit (bot_allow_rifles 0) | Sniper Rifles | | Allow (bot_allow_snipers 1) | Prohibit (bot_allow_snipers 0) | Machine Guns | | Allow (bot_allow_machine_guns 1) | Prohibit (bot_allow_machine_guns 0) | Grenades | | Allow (bot_allow_grenades 1) | Prohibit (bot_allow_grenades 0) | Shields | | Allow (bot_allow_shield 1) | Prohibit (bot_allow_shield 0) | Bots Use Knives Only (bot_knives_only) Bots Use Pistols Only (bot_pistols_only) Bots Use Sniper Rifles Only (bot_snipers_only) Bots Use All Weapons (bot_all_weapons) Bot Difficulty and Teamplay -> | Bot Difficulty Levels | | Easy Bot Difficulty (bot_difficulty 0) | Normal Bot Difficulty (bot_difficulty 1) | Hard Bot Difficulty (bot_difficulty 2) | Expert Bot Difficulty (bot_difficulty 3) | Rogue Bots | | Allow (bot_allow_rogues 1) | Prohibit (bot_allow_rogues 0) | Defer Goals to Humans | | Enable (bot_defer_to_human 1) | Disable (bot_defer_to_human 0) | Bot Running | | Allow (bot_walk 0) | Prohibit (bot_walk 1) | Bot Radio Chatter | Normal (bot_chatter normal) Minimal (bot_chatter minimal) Standard Radio (bot_chatter radio) Disable (bot_chatter off) Bot Configuration -> | Bots Join After Human Players | | Enable (bot_join_after_player 1) | Disable (bot_join_after_player 0) | Bot Team Configuration | | Bots Join Terrorists (bot_join_team t) | Bots Join Counter-Terrorists (bot_join_team ct) | Bots Join Random Team (bot_join_team any) | Bots Auto-Vacate for Humans | | Enable (bot_auto_vacate 1) | Disable (bot_auto_vacate 0) | Bot Name Prefixes | | Set Bot Name Prefix to [AI] (bot_prefix [AI]) | Set Bot Name Prefix to [BOT] (bot_prefix [BOT]) | Bot Profile Databases | Use BotProfile Database (bot_profile_db BotProfile.db) Use BotCampaignProfile Database (bot_profile_db BotCampaignProfile.db) Bot Control and Information -> | Pause/Unpause Bots | | Pause Bots (bot_stop 1) | Unpause Bots (bot_stop 0) | Pause/Unpause Hostages | | Pause Hostages (hostage_stop 1) | Unpause Hostages (hostage_stop 0) | Bots Zombie Mode | | Enable (bot_zombie 1) | Disable (bot_zombie 0) | Bots Module Version (bot_about) Help -> | Server Info (!SERVERINFO) Map Description (showbriefing) Time Left (timeleft) Adjust Crosshair (adjust_crosshair) Use Left Hand (cl_righthand 0) Use Right Hand (cl_righthand 1) Change Team (chooseteam) Team Message -> | Acknowledged (say_team Acknowledged) Negative (say_team Negative) Go Go Go! (say_team Go Go Go!) On my way (say_team On my way) Need backup! (say_team Need backup!) Drop Current Item (drop) Exit Menu (slot10) WeedsBot Server Package and Single-Player Console Commands ---------------------------------------------------------- Note that the console commands and console variables (CVars) for WeedsBot are identical to the ones for Counter-Strike: Condition Zero. These commands can be used to configure and spawn the bots, as well as edit the bot navigation mesh files (or create new ones from scratch). They can also be configured as custom key bindings for easy access within the game (e.g. bind "KP_END" "bot_add"). Bot Commands ------------ bot_add [name] bot_add_t [name] bot_add_ct [name] Causes a bot (with an optional "name" contained in the "BotProfile.db" bot personalities and skill levels database file) to be added to the game. "bot_add" will add a bot to the team specified by the "bot_join_team" CVar. "bot_add_t" and "bot_add_ct" forces the bot to join a specific team. bot_kill [name, all] This command takes either the name of a bot, or the keyword "all" (causing all bots in the game to be killed). bot_kick [name, all] This command takes either the name of a bot, or the keyword "all" (causing all bots in the game to be kicked). bot_knives_only bot_pistols_only bot_snipers_only bot_all_weapons These commands are shortcuts that set the "bot_allow_*" CVars accordingly. bot_difficulty [0 - 3] This CVar determines the difficulty of all newly created bots. 0 = easy, 1 = normal, 2 = hard, and 3 = expert (difficulty values higher than "3" are reset to "3"). Note that existing bots in the game will retain the difficulty setting that they were originally created with. bot_quota [minimum number of bots] Setting this CVar to a non-zero value will cause the given number of bots to be maintained in the game. If a bot is kicked, a new bot will be added to maintain the quota. To disable the quota, set it to zero. bot_quota_match [ratio] Sets the ratio of the number of bots per human player (i.e. "number_of_bots = number_of_human_players * bot_quota_match_ratio"). As human players join or leave the server, the number of bots in the game will be adjusted accordingly. Note that this command overrides the "bot_quota" command. bot_auto_vacate [0, 1] Set to 1 to force bots to automatically leave the server to make room for human players (set to 0 to disable). bot_prefix [string] The given [string] will be prefixed to all subsequently added bot names. This is useful for "clan-tagging" bots. bot_join_team [ct, t, any] Determines which team the bots will join. bot_join_after_player [0, 1] If non-zero, the bots will wait to join the game until at least one human player has joined. bot_allow_pistols bot_allow_shotguns bot_allow_sub_machine_guns bot_allow_rifles bot_allow_snipers bot_allow_machine_guns bot_allow_grenades bot_allow_shield All of the "bot_allow" CVars can be either 0 or 1. If zero, the bots will not buy or use the given category of weapon. bot_allow_rogues [0, 1] If non-zero, allows bots to occasionally "go rogue". Rogue bots just "run and gun", and will respond to all radio commands with "Negative". bot_defer_to_human [0, 1] If non-zero, forces the bots to defer round goals to human players (bomb carrier, etc...). bot_walk [0, 1] Force all bots to walk (disallow running). bot_stop [0, 1] If non-zero, all bots will stop moving and responding (pauses all bots). hostage_stop [0, 1] If non-zero, all hostages will stop moving and responding (pauses all hostages). bot_chatter [normal, minimal, radio, off] Sets the amount of bot radio-chat (Normal, Minimal, Standard Radio, or Off). bot_profile_db [filename.db] Sets the filename of the database that defines the bot personalities and skill levels. Note that the default database filename is "BotProfile.db". bot_about Displays the bot module version number, and information about the bot's author. Navigation Mesh Editing ----------------------- Each of the following "bot_nav_*" commands operate on the navigation mesh, allowing hand-tuning of the automatically learned data. It is recommended that these commands be bound to keys for ease-of-use while editing. Note that there is no "undo" operation, so save your navigation mesh frequently! bot_nav_edit [0, 1] Setting this CVar to 1 allows hand-tuning of the bot's navigation mesh. Once edit mode has been activated, the "bot_nav_*" commands can be used. bot_nav_zdraw [height value] This value determines how high above the ground to draw the navigation "mesh" when in navigation edit mode. If the terrain is very irregular or highly sloped, it can be useful to increase this value to 10 or 15. The default value is 4. bot_nav_mark Marks the currently selected navigation area for later operations. bot_nav_warp Warps (teleports) your view to the currently marked navigation mesh. Note that you must be in "Free Look" spectator mode for this command to function. bot_nav_delete Deletes the currently selected navigation area. bot_nav_split Splits the currently selected navigation area into two new navigation areas, along the white split line. bot_nav_merge Merges the currently selected navigation area and a previously marked navigation area into a new, single navigation area. The merge will only occur if the two areas are the same size along the merge line. bot_nav_connect Creates a "one-way" link from the currently marked area to the currently selected area, telling the bots they can walk "from" the marked area "to" the selected area. For most areas, you will want to connect the areas in both directions. However, for some "jump down" areas, you will want the bots to be able to move one way, but not be able to get back to the other. bot_nav_disconnect Disconnects all connections from the currently marked area to the currently selected area. bot_nav_begin_area bot_nav_end_area These two commands allow the creation of new navigation areas. "bot_nav_begin_area" marks one corner of the area. "bot_nav_end_area" marks the opposite corner of the area and creates it. To cancel the operation, issue the "bot_nav_begin_area" command again. bot_nav_splice Creates a new navigation area between the currently marked area and the currently selected area, and bidirectionally connects the new area. This command is especially useful for creating sloped navigation areas. bot_nav_corner_select bot_nav_corner_raise bot_nav_corner_lower Selects one of four corners of a currently marked navigation mesh ("bot_nav_mark"), and then allow the selected corner to be raised or lowered in elevation. Issue the "bot_nav_corner_select" command multiple times to cycle between the four corners (and then once again to deselect all of the corners). bot_nav_crouch Flags the currently selected area as "crouch", requiring bots to crouch (duck) to move through it. bot_nav_jump bot_nav_no_jump Flags the currently selected area as "jump", or "no jump". This is a hint to the bots that they should (or should not) jump to traverse this area. bot_nav_precise Flags the currently selected area as "precise", requiring bots to precisely pass through this navigation mesh before continuing to the next one. This command is especially useful for small catwalks that are easy to fall from. bot_nav_strip Strips all approach points, encounter spots, and hiding spots (which are generated using the "bot_nav_analyze" command) from the currently marked navigation mesh. Navigation Mesh Place Naming ---------------------------- Note that place names are used for bot radio-chat locations, as well as location text strings for player radio-chat. Also remember to save the navigation mesh often ("bot_nav_save") just in case you make a mistake, and then analyze the navigation mesh again ("bot_nav_analyze"). bot_nav_toggle_place_mode Switches into place naming mode. Every navigation mesh that is highlighted with the crosshairs will be displayed with one of three colors: Green = Currently set place name. Blue = Other place name already set. Red = Unset place name. Enter command a second time to return to navigation mesh edit mode. bot_nav_use_place Displays the following list of usable place names: Apartment Apartments Atrium Attic Back BackAlley BackDoor BackHall BackRoom BackWay BackYard Balcony Basement Bathroom Bedroom BigOffice BombsiteA BombsiteB BombsiteC Bridge Bunker ComputerRoom ConferenceRoom Courtyard Crates Crawlspace CTSpawn Deck Den DoubleDoors Downstairs Ducts Dumpster Elevator Entrance Entryway FamilyRoom FarSide Fence Foyer Front FrontDoor FrontHall FrontRoom FrontYard Garage Gate GateHouse GuardHouse HostageRescueZone Hostages House Inside Kitchen Ladder LittleOffice LivingRoom LoadingDock Lobby Loft LongHall MainHall Market MeetingRoom Middle Mines Office Outside Overpass Patio Porch ProjectorRoom Ramp Rear Roof SecurityDoors Sewers Side SideAlley SideDoor SideHall SideRoom SideYard Stairs Stairwell StorageRoom Tower Truck TSpawn Tunnel Underground Underpass Upstairs Vault VendingMachines Village VipRescueZone Wall Water Window Windows WineCellar bot_nav_use_place [place name] Select place name (e.g. "bot_nav_use_place BombsiteA"). bot_nav_toggle_place_painting Starts painting the navigation meshes with the selected place name. Note that every navigation mesh that is highlighted with the crosshairs will turn green and be set to the selected place name. Enter command a second time to stop painting. Then you can select a new place name ("bot_nav_use_place [place name]"), and start naming other navigation meshes ("bot_nav_toggle_place_painting"). bot_nav_place_floodfill Sets the place name of the currently highlighted navigation mesh and flood fills outward from there, setting all adjacent navigation meshes to that place name (until it encounters other navigation meshes with different place name labels). bot_nav_place_pick Selects the place name of the currently highlighted navigation mesh as your current place name (similar to any paint program's color-palette "eyedropper" tool). bot_nav_mark_unnamed Marks the closest unnamed navigation mesh, and displays the total number of unnamed meshes. This command is useful for locating unnamed navigation meshes, when used in conjuction with the "bot_zombie 1" and "bot_goto_mark" commands (as well as the "bot_nav_warp" command). Navigation Mesh Processing -------------------------- bot_nav_analyze Analyze the navigation mesh to determine approach points, encounter spots, and hiding spots. This may take several minutes based on the size and complexity of the map. Note that this command requires one bot to be in the game. The recommended procedure is to save the mesh, add a bot, and then quickly enter "bot_nav_analyze". bot_nav_load Clears the current navigation mesh, and loads it from disk. bot_nav_save Saves the current navigation mesh to disk. The navigation mesh (".nav" file) is automatically named to correspond to the current map file. For instance, if the map is DE_Dust.bsp, the navigation file will be DE_Dust.nav. bot_quicksave [0, 1] If non-zero, the analysis phase of map learning will be skipped. This is useful when iteratively hand-tuning navigation files. Note that withough this analysis, the bots will not look around the world properly. Navigation Mesh Debugging ------------------------- bot_show_nav [0, 1] If non-zero, the navigation mesh near each bot is drawn. bot_show_danger [0, 1] If non-zero, the "danger" in each navigation area is drawn as a vertical line. Blue lines represent danger for the Counter-Terrorists, and red lines are danger for the Terrorists. bot_zombie [0, 1] Causes the bots on the map to ignore danger (and other environmental variables contained in the map), and only use geometric distance for navigating around the map. This command is useful for testing the walkability of specific portions of the navigation mesh (or locating unnamed navigation meshes when editing navigation mesh place names), when used in conjuction with "bot_nav_mark" (or "bot_nav_mark_unnamed") and the command "bot_goto_mark". bot_goto_mark Causes the bots on the map to move to the center of the currently marked area. This command is useful for testing the walkability of specific portions of the navigation mesh when used in conjunction the the "bot_zombie 1" command. bot_nav_check_consistency [filename.nav] Checks the consistency and integrity of a bot navigation mesh file. bot_traceview [0, 1] Used for internal debugging of the currently spectated bot's navigation. The cyan line indicates the direction that the bot is looking, the purple line indicates the bot's field of view, while the orange line indicates the next navigation mesh that the bot is heading towards (as well as the bot's complete future path). Note that you must be in "First Person" or "Free Chase Cam" spectator mode for this command to function. bot_debug [0, 1, 2] Used for internal debugging of bot behavior. Set to 1 to display debug messages for the currently spectated bot (note that you must be in "First Person" or "Free Chase Cam" spectator mode for this command to function), or set to 2 display debug messages for all of the bots. Debugging messages will be printed to the console displaying what the bot is currently thinking and doing, as well as any error or warning messages (including an audible warning sound) pertaining to the bot's behavior or navigation. hostage_debug [0, 1] Used for internal debugging of the hostage's navigation. The purple line indicates the direction that the hostage is looking, the green lines indicate the hostage's field of view, the orange line indicates the next navigation mesh that the hostage is heading towards, while the yellow line indicates the hostage's complete future path. Note that you should be playing as a Counter-Terrorist, and have already pressed the "Use" key on a hostage (to instruct him to follow you) for best results when using this command. Lastly, note that this command will also display debug messages that will be printed to the console displaying what the hostage is currently thinking and doing (just like the "bot_debug" command above), as well as any error or warning messages pertaining to the hostage's behavior or navigation. bot_memory_usage Displays memory usage statistics about the active bot module and the currently loaded navigation mesh file. Version History --------------- v1.00 - First Release. v1.10 - Added color-coded in-game bot and player radio-chat locations text (exactly like the bot module that is included with Counter-Strike: Condition Zero). v1.20 - Added a new replacement in-game "VGUI" command menu file ("CommandMenu.txt"). HAVE FUN! „Weeds„