Yet Another Ping Of Death Bot 2 Yet Another Ping Of Death Bot Documentation
Release version: 2.51, Build: 1360
Table of Contents:
 - C R E D I T S  - B A S I C  U S A G E
 - L I C E N S E  - U S E F U L  L I N K S 
 - A B O U T  B O T  - V E R S I O N  H I S T O R Y
 - I N S T A L L A T I O N
 - W A Y P O I N T I N G
C R E D I T S 
This bot is based upon the Ping Of Death Bot v2.6 Source code, which was originally developed by Markus Klinge.

Bot Programming and Documentation: Wei Mingzhi and Dmitry Zhukov.
Waypointers / Testers: Bots-United Members, CoCoNUT, headshot26, Ek, MarD, ZmifF, RR99i, FFreJuSE, TeMP, SaTaN, SpArK...
Special Thanks: Ancient (CFE-Games Admin), KWo (POD-Bot MM Developer), THE_STORM (e[POD]Bot Developer), Donny (Logotype)...
L I C E N S E
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of the YaPB nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
A B O U T  B O T
   Yet Another Ping Of Death Bot is an special program that adds computer controlled players (bots) to a game called Counter-Strike.

   The Bots will automatically know the goals of the map. Counter-Terrorists will go for hostages or defuse the bomb, Terrorists will plant the bomb. VIP Bots will try to reach the Rescue Points. The goal selection is done dynamically and will be affected by several factors like Personality, Health, Team-mates near & Items the Bot is carrying. The Bots will also try to support team-mates and take cover when they think it's needed. They can use some buttons like for light-switches and for some doors triggered by the button. It's possible usage of lifts by bots (but it's not recommended - because of the possiblity getting stuck by them in some ways normally not used by human-players).

   You can join a network game over the Internet or on a LAN without the necessity to uninstall the Bot. You cannot spawn bots when connected to an Internet server unless it is your server that's hosted, but you can spawn bots on a LAN if you are running the server (Listenserver).

   The Bot currently only works in Counter-Strike 1.1 - 1.6. If you haven't updated your CS version to 1.1 (or higher) you will HAVE to do so before using it.
I N S T A L L A T I O N
   Bot installation is done, by install using automated installer, or extracting yapb install archive to cstrike/czero directory, and editing necessary files. To install bot from archive, you need to replace line gamedll "dlls\mp.dll", to gamedll "addons\yapb\dlls\yapb.dll" in liblist.gam, or if you have metamod already installed on your server, by adding win32 addons/yapb/dlls/yapb.dll, line at the bottom of your plugins.ini file.    

   Linux version of bot is located on the yapb server may not work correctly with whole load of linuxes, so if you encounter any problems with default build. please recompile it using source included in separate archive for download. Linux archive can be downloaded as well as windows package from bots-united forums or russian support website. (For the links to archive take a look at Useful links section).

   There are no AMD64 binary for YaPB, for some reasons, but you can still use original linux binary and run dedicated server in 32bit mode. There are severeal reasons todo so. First Valve halted support for their AMD64 dedicated servers, and the second, that i have no linux64 crosscompiler (and cannot download it, since my internet connection). If you really need AMD64 binary you can compile it from the bot sources.
W A Y P O I N T I N G

   Waypoints are locations in the maps that the bots will use when navigating. They allow the bot to roam about the map without having to blindly bump into walls. Waypoints can be thought of like the bread crumbs in the Hansel and Gretel story. They are something marking a path to make it easier to follow. The waypoints are not displayed while the game is being played. The bots "know" which way to go by following the path laid out by these waypoints.

   In order to get the bots to cover the entire map when playing the game, waypoints should be laid out all over the map. Without the waypoints the bots will just randomly run around and will tend to stay in the same area. Waypoints also allow the bot to know where specific goals are in the game. You couldn't play capture the flag unless you knew where the flag was and where the flag needed to be taken after being captured. Waypoints are what makes all of these things possible. Bots with sufficiently advanced waypoint information and algorithms would be able to find the shortest distance between points in the map and navigate from their current position to some goal on the other side of the map.

   This document describes the commands needed to create or edit a waypoint file (to be used with the YaPB). When creating or editing a waypoint file it is best NOT to have any bots wandering around at the same time. Create a LAN game, and join the game then start laying out waypoints for
a map. Save the waypoint file, disconnect from the server, then start the game again, this time with the bots to see how well (or poorly) they follow the waypoints you have created.

   The waypoints are displayed using vertical lines that look like lightning or electric streams. The vertical line used to draw the waypoint is the same height as the player. The point in space at the center of this vertical line is what is actually used as the waypoint. Different Types of waypoints have different colors.

   Waypoints are stored in a file with the same name as the map file name but using the extension ".pwf" instead of the map file extension of ".bsp". For example, the waypoint file for the map de_dust would be de_dust.pwf. It will be stored in the <csdir>\addons\yapb\wptdefault.

   Waypoint files are automatically loaded when the map is loaded (if they exist). If the waypoint file does not exist, you will need to create it using the directions contained in this document.

   The following Waypoint commands are available (note these are NOT case sensitive), For full listing of available console commands for waypoints, type "yb help ?" in the console.

   To use the waypoint commands, you will have to use the console. Use the '~' key to bring down the console. Enter the console commands that you wish, then use the '~' key again to return to the game.

   You can make things easier by binding console commands to keys on the keyboard. Just type "bind" followed by the key you want to bind to, followed by the console command. You will have to use double quotes on the console command if it's more than one word. Here's an example of console commands that I use when editing waypoints...

bind a "yb wp add"
bind d "yb wp delete"
bind l "yb wp load"
bind w "yb wp save"

   The 'a' key will manually add a waypoint. The 'd' key will delete a waypoint. The 'l' key will load the most recently saved waypoint file (useful if you have added some waypoints but don't want to save them and want to go back to the previously save waypoint list, sort of like an "undo"). The 'w' key (for "write waypoints") will save the list of waypoints to the waypoint file. I tried using 's' (for "save waypoints"), but I kept hitting 's' by mistake when I wanted to add or delete a waypoint.

   Using "yb wp add" will place a waypoint at the location that the player is currently at in a map. Waypoints can be placed anywhere the player can go. Waypoints can even be placed in mid-air (as long as the player can get to that location). One way to do this is by jumping or running off of a ledge or cliff. When placing a waypoint, you will hear a sound to indicate that the waypoint has been dropped (the sound is the same sound the crossbow bolt makes when striking an wall). You then have to specify the Type of waypoint you want to place here.

   "Normal Waypoint" sets a Waypoint which is used for normal walking from one point to each other. From V1.4 on you should place lots of them, since the Bots use them for hiding and varying their paths. Color is green.

 


Normal Waypoint.


   "Terrorist Important Waypoint" and "CT Important Waypoint" These are strategical waypoints for that team. Bots use these waypoints to patrol the map. How they use this, heavily depends on the map type. In a DE Map you should place a lot of CT Waypoints around the Bomb Plant Zone and only 2 or 3 strategical waypoints for Terrorists. On a DE Map Counter Bots will most of the time pick a Counter Waypoint as a destination and only sometimes pick a Terrorist waypoint. Terrorists are allowed to pick any of them as a goal waypoint. This behaviour changes with the maptype, in a CS map for example it is vice versa. You NEED to have some of these, but don't place too many. Average count for this is below 10 for each. Terrists WP Color is red, Counter Waypoints are blue.

 


Point for CTs - blue, for Ts - red.
 


   "Block with Hostage Waypoint" and "Ladded Waypoint" If you set this flag on a waypoint, bots won't take this waypoint if a hostage is following them.

 


 Ladder Waypoint (Block with Hostage, if not on Ladder).
 


   "Rescue Waypoint" This is only needed on Hostage Maps. It's the location where you want the CT Bots to rescue the hostages. Usually only 1 is needed. Color is white.

 


Rescue Point. 



   "Goal Waypoint" Place this at a position where Goals of the Map need to be achieved. In DE maps this is a bomb plant spot and on cs maps Counter look here to rescue some hostages. In AS maps these are the Escape points for the VIP. Color is purple.

 


Goal Waypoint.


    "Campstart Waypoint" This is a camping (or sniper if you prefer) waypoint. To place it, look into the direction you want the Bot to start looking at when camping. To let him crouch at that position just press the duck button while adding it. You also need to specify the "Campend Waypoint" Selecting this will set the end direction for the Bot to look at when camping. Look straight into the direction where you want the Bot to look and select it. Note: you can't set a campend waypoint before doing a campstart waypoint. Normal Color is cyan, if you made it team specific it will have a touch of red if Terrorist WPT or blue if CT.

 


Camp Waypoint.


   "Jump Waypoint" By selecting it, your moves will be monitored and if you jump, a normal waypoint will be placed at the position you started to jump and another will be placed where you landed. The Waypoint Type as said before is a standard waypoint but a red connection line will show you that there is a jump connection between the two. You can also create jump connections between already existing waypoints, just make sure you're in the near of the first when jumping and land in the near of the destination waypoint. Note that this will adjust the waypoints origin on the average position of the previous position and your jump position. You can even have the bots jump to a ladder or do several jumps after each other !

 


Waypoints Connected with "Jump Path".


   Note: To set a crouch waypoint, just keep holding your duck key. Also note that placing the "Important" waypoints differs from maptype to maptype. On defusion maps, Terrorist will be able to choose a Terrorist Waypoint OR a Counter Waypoint. Counter stay most of the time at Counter Waypoints. On cs maps, Terrorists choose Terrorists waypoints most of the time and Counters can walk to any Counter waypoint OR Terrorist waypoint. All other waypoints will be chosen team independent (even camp spots).

   Using "yb wp delete" will remove the waypoint closest to the player. The waypoint MUST be within 40 units from the player (about 1/2 the player height) in order to be removed. You will need to stand fairly close to the waypoint to be able to remove it. This prevents you from accidentally removing a waypoint on the other side of the room. When removing a waypoint you will hear a sound indicating that the waypoint was removed (the same sound the tripmine makes when placed on a wall).

   Using "yb wp save"  will save the waypoint data to the waypoint file. The waypoint file will have the same name as the current map with an extension of ".pwf". The file will be saved into the "<csdir>/addons/yapb/wptfolder" Folder. Your current player name will be saved as the waypoint file author.

Using "yb wp load" will clear out all waypoints in the current map and load them from the waypoint file in the maps folder. This is a good way to "undo" a bunch of waypoints that you have created but do not wish to save. There is no way to "undo" a single waypoint. You will have to use the "yb wp delete" command to remove waypoints one-by-one.

   The "yb autowp" command allows you to automatically drop waypoints as you run around in a map. To turn autowaypointing on use "yapb autowp on". As you run around the level waypoints will be dropped every 200 units automatically. No waypoint will be dropped if another waypoint is already within 200 units of your current position. So if you want to place lots of waypoints fairly close together you may have to manually place some of the waypoints using the "yb wp add" command. Autowaypointing keeps track of where the last waypoint was dropped (either manually or from autowaypointing) and will place another waypoint when you are 200 units from the last waypoint. If you don't like where autowaypointing placed a waypoint and want to move it a little bit, you can delete the waypoint using "yb wp delete" (but turn off autowaypointing before, since it will place a new waypoint otherwise).

   When using autowaypointing, try to stay in the center of narrow hallways and always place a waypoint on BOTH sides of a door. You may have to place some of these waypoints manually using "yb wp add" since places like intersections of hallways and doorway entrances and exits don't usually fall exactly at the location where autowaypoint would want to place a waypoint.

   Whenever you get close to a waypoint yellow or white lines will be drawn to all of the other waypoints that the bot would consider to be "reachable". If the connection is a two-way connection the line is yellow, one-way connections appear white. These "reachable" waypoints would be waypoints that are clearly visible from the current location. Certainwaypoints will be disallowed as reachable for one reason or another. For example, waypoints suspended in mid-air above the bot would not be considered reachable since the bot couldn't jump high enough to get to them. Also waypoints that are too far away from the current location would not be considered reachable. You may have waypoints that are close enough to each other, but across a wide gap that would be too wide to jump. If the far waypoint is close enough and clearly visible, it would still show as "reachable" since I currently don't have a method to determine if the bot can get to that waypoint or not.

   The bots will ONLY go from one waypoint to another if there is a path between them. Get in the habit of turning on the pathwaypoint setting when creating waypoint files so that you can see the waypoint paths and will know whether or not a path exists between two waypoints. Also get in the habit of checking that paths exist BOTH WAYS between waypoints. Just because a path is drawn from point A to point B, doesn't mean that a path exists from point B to point A.

   The "yb pwp add waypointnr" command allows you to manually assign a path between 2 waypoints. This is needed in some cases where the waypoints are blocked (by doorways or other objects) and you wish to create a path between these waypoints. Move close to the waypoint you wish the path to start from and use the  "yb pwp add x" command.

   Of course the "x" must be replaced by a valid waypoint number. The actual Waypoint Number you're standing on, will be shown in the upper corner of your HUD (if you turned pathwaypoint on). For example to manually assign a path between Waypoint Nr. 250 and 251, you first should stand in the near of Waypoint Nr. 250. Then type in: yb pwp add 251"and it will get connected.

You should now see a white waypoint path line being draw from the start waypoint to the end waypoint. Note that this is a ONE-WAY connection. If you wish to create a path back in the other direction you will have to start with the second waypoint and end the path back at the first waypoint.

   You should now see a white waypoint path line being draw from the start waypoint to the end waypoint. Note that this is a ONE-WAY connection. If you wish to create a path back in the other direction you will have to start with the second waypoint and end the path back at the first waypoint.

      The "yb pwp delete x" command is just like the "add" command except that it removes a path (connection) from the starting point to the ending point. This is necessary in some cases where
you may have a door that opens from one side and allows you to go through but once the door closes you can't go back through the other way.

   When adding waypoints use the pathwaypoint feature to verify that waypoints are actually reachable. Sometimes you add a waypoint and it appears close enough and it also appears to be in plain sight, but the Half-Life engine doesn't indicate that the waypoint is "reachable". Be sure to check this in BOTH directions when defining a waypoint path. Usually you don't have to be too careful about waypoint placement, but in some situations, you may have to spend more time carefully laying out waypoints to get them to be "reachable" (ladders are a good example).

   To set crouch waypoints, simply crouch when adding the waypoint. You will notice that the waypoint line is shorter than a normal waypoint. Bot will crouch automatically when approaching a crouch waypoint (if it's not a camping waypoint).

   Try placing waypoints at intersections in hallways (do use some "important" waypoints at crossings). Try not to place waypoints in places where the bots would bump into corners of walls or other obstacles when trying to get from one waypoint to the next. Remember the bots won't always take what you consider to be the "obvious" choice when choosing the next waypoint. Try to limit the choices that they have to keep them from heading off in the wrong direction. Also remember that the Bots could go backward in a fight and might not find a waypoint. In that special case they wouldn't find a near enough waypoint (they only search in-between 200 Units) and get stuck forever. Since PODBot V1.4 it's important to have a lot of waypoints together to allow the Bots a wider choice. Also put some waypoints in corners or behind walls/doors so they can take good cover positions. The Bots will try to take cover at waypoints
a) not seen by the enemy and
b) the one with the smallest wayzone radius in their range

   Bots will pick a point inside this radius for their destination origin (based on things like orientation etc.), this just makes movement not that "static". Ladder waypoints, camp waypoints and goal waypoints will always have a radius of 0. Don't try to change it ! After POD-Bot calculated all Zones you should walk all over your waypoints to verify that they are reachable within their radius. Try to be careful with the radius. If your path bends around corners it's better to lower the radius. You should set the radius to 0 if the Path goes through some narrow doorways or similar. You manually assign a new value by standing near to the waypoint and typing "yb wp setradius x". Where x is the value you want to assign. Valid ranges are 0-128. The bigger, the wider it is. You'll also notice, if you turned on pathwaypointing some lines will show you the radius of the actual waypoint (if it's not 0).

B A S I C  U S A G E
   You can use some of the Radio Commands to get more support from your Bots. The first is "Follow Me" which commands Bots in the near to follow you. You can specify the maximum of following Bots in the podbot.cfg File (defaults to 3).

   If a Bot is following you, you can use "Hold this Position" to make a pause at that Place and look around for enemies. You can use "Go,go,go!" to stop him from following you again. Note that they won't follow you in 3 cases:

- They don't want to ! The Bots have their own will and they issue a "Negative" if they don't want to follow you.
- They don't see you.
- They see an enemy and engage the target.

   A Terrorist Bot carrying the C4 or picking it up, will also issue a "Follow Me" sometimes to have some assistance with him. They also do some other Radio Commands like "Need Backup", "Enemy down", "Enemy spotted", "I'm in Position" (to tell you he's camping) but not very often, otherwise it would surely get on your nerves...

   First, Bots with low skills will pause/camp longer and more often. Bots with low skills have a bigger surprise time and they shoot slower. Bots with low skill are lucky if they hit something. Then there are minor behaviour differences. For example Bots with a skill above 80 use the knife more often if you're near them. If you want to get headshots all the time (and really fast) add some Bots with a skill of 100. You can easily change a lot of skill parameters by editing the file 'botskill.cfg' with any text-editor. Also take a look into 'podbot.cfg' to adjust some more things to your liking... 

   This bot has a special tools called YaPB ConfCenter, which is used for complete configuring the bot via it's configs. Information regarding bot cvars can be viewed in this tool as well. This tool can be downloaded via Bots-United YaPB forum, or Russian website. Please note  that it is require that you will have Microsoft .NET framework 2.0 installed on  your PC, before trying to launch configuration application. This documentation containts no information regarding bot console variable nor bot command. All information available in confcenter application, or command 'yb help ?' typed in the server's console.
U S E F U L  L I N K S
  
V E R S I O N  H I S T O R Y
   TBA

Copyright © 2003 - 2008, by YaPB Development Team (Released under terms of BSD License). All rights reserved.
This software derived from Ping Of Death Bot v2.6 Source, developed by Markus Klinge.
Half-Life™, Counter-Strike™, Counter-Strike: Condition Zero™, Steam™, Valve™ is a trademark of Valve® Corporation.