I've done this before, but it was awhile ago while I was still mapping for CSS.
The computer tries to generate NAV points for bots automatically, you probably saw it doing this the first time you ran it. But, unless your map is very simple, then it usually does a terrible job.
You need to edit the NAV information in-game. Unfortunately you can't just build your own NAV matrix from scratch -- attempting to do so will crash the game. You have to have the matrix generated by the computer first and then alter what it makes.
I've only got the basics of this so far, but you can seriously help your bots out a lot, even with this small amount of knowledge:
Here's a guide to what to do:
You need cheats enabled for this, so type "SV_CHEATS 1" into the console.
Now type "nav_edit 1" into the console. Close the console and look around. What you are seeing is the navigation matrix of the map, overlayed onto the map itself. If you can't see anything, quit looking at the sky. Move your crosshair over walkable areas. Yeah, that's it.
Those boxes are navigation boxes. They can have several attributes -- the only ones I know about are normal, crouch and jump. These tell bots that they can go to these areas, and recommends a course of action for the bot to follow. IE, in a place where a player must crouch under a half open shutter, you should have a NAV area marked crouch underneath that shutter.
Here are the commands (that I know of) that you can use to edit this mess:
nav_begin_area -- starts a new NAV box at the point your crosshairs are at. It's very useful to have this bound to a key.
nav_end_area -- ends your new NAV box. It's also very useful to have this bound to a key.
(So to make a new box, you point your crossghair at one corner of your intended box, use the begin area command. Then move your crosshair to the opposite corner of your new box, and use the end command. Voila! A new nav zone.)
nav_crouch -- marks an area as a crouch area
nav_jump -- marks an area as a jump area
(you must have the crosshair on your intended target box when you use these)
of course if you screw up, or youi want to get rid of some of the computer's mess.....
nav_delete
will get rid of a NAV area. Again you have to be pointing your crosshair at it.
Now you have to connect areas together. Connections are one way, so you have to make 2 connections between each area if you want your bots to be able to navigate both ways between them.
nav_mark
says to the engine "I want to connect this area to:-"
nav_connect
says to the engine "this area"
I hope that make sense. So anyway, go connect all your nav zones together.
Once you're done,
nav_save
will save all you've done. Restart the map, and hopefully your bots should be somewhat improved.
Hope this helped.