YaPB is the bot that is still maintained. Where the old Podbot/POD-Bot and Zbot forks are frozen, YaPB gets regular releases, understands modern ReHLDS/ReGameDLL servers, and ships an automatic navigation-graph system so you are not hand-placing waypoints on every map. It loads as a Metamod plugin — not an AMX Mod X plugin — which is the detail most failed installs get wrong.
1. Prerequisites
YaPB needs Metamod. It does not need AMX Mod X, though it coexists with it happily. Confirm Metamod is loading first:
meta version
If that is an unknown command, install Metamod-r before going further.
2. Place the YaPB files
Download the current YaPB release for your platform from the project's releases page and extract it into cstrike/. The layout is:
cstrike/addons/yapb/bin/yapb.so (Linux; yapb.dll on Windows) cstrike/addons/yapb/conf/ (config files) cstrike/addons/yapb/data/ (graphs, names, chat)
Keep the whole addons/yapb/ tree together — the plugin looks for its config and data relative to its own folder, and splitting them is a common cause of "bots load but never spawn".
3. Register YaPB with Metamod
Add YaPB to cstrike/addons/metamod/plugins.ini:
linux addons/yapb/bin/yapb.so
On Windows:
win32 addons/yapb/bin/yapb.dll
Order relative to AMXX does not matter for YaPB, so append it. Restart the server and confirm it loaded:
meta list
YaPB should show as RUN.
4. Add bots
YaPB is driven from the console with the yb command family. The most important cvar is the quota, which keeps a target number of bots topped up as humans join and leave:
yb_quota 8
To add bots manually instead:
yb add // one bot, random team/skill yb fill // fill the server up to maxplayers yb kickall // remove every bot
Put the persistent settings in a config that runs at start. YaPB reads its own config from addons/yapb/conf/; set the quota and difficulty there so bots are present without you typing anything:
yb_quota 8 yb_difficulty 3 yb_quota_mode "fill"
Read the shipped config file for the exact cvar list your version ships — YaPB has renamed cvars across major versions, and a setting that does not exist is silently ignored.
5. The navigation graph
Bots need a navigation graph for a map or they will stand still at spawn. This is the single biggest source of "the bots do nothing" reports. YaPB's graph system replaces the old .pwf waypoints:
- For popular maps (de_dust2, de_inferno, cs_office, etc.), YaPB can download a community graph automatically the first time the map loads, provided the server has outbound internet access.
- Downloaded and generated graphs are stored under
addons/yapb/data/graph/as<mapname>.graph. - For a custom map with no graph, you can have YaPB analyze the map to generate one, or place a graph file yourself.
Check whether the current map has a graph:
ls cstrike/addons/yapb/data/graph/
If de_dust2.graph exists after loading that map, auto-download worked. If your server is firewalled off from the internet, pre-place the graph files manually.
Common errors
- Bots stand at spawn and do nothing — no navigation graph for that map. Confirm a
.graphexists indata/graph/, or let YaPB generate/download one. yb_quotais an unknown command — YaPB is not loaded. Checkmeta list; if it is missing, the path inplugins.iniis wrong or the module is the wrong platform. Verify withfile addons/yapb/bin/yapb.sothat it is ELF 32-bit, Intel 80386.- Bots ignore
maxplayersand overfill — you set both a manualyb addloop and a quota. Use the quota alone; it manages the count. - Graph download fails — the server has no outbound internet, or the map is unknown to the graph database. Place the
.graphfile manually underdata/graph/. - Bots on a ReGameDLL server behave oddly — update YaPB; older builds predate current ReGameDLL_CS behaviour.
Verification
yb_quota 4
Load de_dust2, then type status in the console. You should see four bots listed with bot-style ids, and on the map they should leave spawn, buy, take routes, and engage. If they move and fight, the graph is loaded and the install is complete.
Difficulty and per-map tuning
Out of the box YaPB mixes skill levels so a round is not uniformly brutal. You control the overall level with the difficulty cvar and, in the config, the spread of skills bots are assigned. If bots are too sharp for a public server, lower the difficulty rather than removing them — a wall of aimbots empties a server as fast as an empty one does. YaPB also supports named personalities (aggressive, normal, careful) that change how bots push and hold; those live in the config under addons/yapb/conf/. For a map that plays badly with the auto-downloaded graph, regenerate the graph in-game and save it, and YaPB will prefer your local file from then on. Bots obey the same server cvars as humans, so mp_startmoney, mp_freezetime and mp_buytime all shape how they play — set them in your annotated server.cfg and keep the quota there too so a fresh server is never empty. If you also run ReGameDLL_CS, keep YaPB current so it tracks the game library's behaviour.









