To add bot support, load dday, type
"set cheats 1"
then load whatever map you want.
There are 2 main parts to adding bot support, creating the .nav (navigation) file and the .cmp (camp) file
MAKING THE .NAV FILE
Load a map and join a team, then type "sv makenodes" in the console. You should see things like "Dropped Node" and Link: LINK_MOVE in the console. If not, then you probably don't have the dll installed correctly.
******note: "sv makenodes" overwrites any .nav file you might have for the map. If you already have a .nav file and just want to add onto it, type "sv editnodes" instead. ******
What you have to do is move around to create paths that the bots will follow around the map. The code is saving 2 things, nodes, which are hundreds of spots around the map, and links, which are how the bots move between 2 nodes.
So if it a node is dropped at one point, then you jump up a step, a new node will be created at the second spot and it will say LINK_JUMP and the bot will know to jump to get up there. If you drop back to the first node it will say LINK_FALL, and the bot will know to fall to get back to that spot. Nodes and links will be created automatically as you walk around.
Try to cover the entire map if you can
Just walk in a straight line, don't go running all over in zig zags trying to cover every inch because it doesn't work well that way. Just look at each area and for every way in and out of that area, make a path through it. Like for this part of inland4, a simple way to do routes would be this:

If at any point you hear a beep and see LINK_INVALID in the console, that means the code can't figure out how you got from one node to another. So what you do is move back and retrace your steps and keep going back and forth until you see it say LINK_MOVE and you know the link is saved correctly. Some parts of some maps just won't work under any circumstances. Especially with big jumps like if you have to jump up on a crate and with certain ladders. There's really nothing you can do to fix it, so either you have to give up on the map or the bots just won't be able to move through that area.
Nodes are dropped automatically, however if you are having problems getting a lot of LINK_INVALIDs, you can drop a node by typing "sv dropnode" in the console. This will especially be useful when going through doorways and turning tight corners. For a doorway I would drop 1 on the inside, 1 under the doorway and one on the outside and that will usually get them to work. If there is an invalid link in a key part of the map, it might mean the bot will get stuck, like if you have one in the middle of the sewer of dday2, no bots would be able to go through the sewer. Try not to drop too many nodes though because it could cause problems.
Make sure you create paths starting from every spawn point. If a bot spawns and isn't near a node it will just "wander" around which looks stupid.
When you are done, type "sv savenodes" to save everything. If you don't do this all your work will be lost! You might want to start simple and create backups of your .nav file as you go along, and add onto them bit by bit with "sv editnodes" because sometimes you can screw things up and it's difficult to fix things once they are.
If there is some complicated route (like the church underground part of dday2) don't even bother trying to make paths there because it probably won't work and you'll just end up messing up your .nav file. For the same reason, try to stay in the middle of any corridors because the bots can get stuck on corners and stuff. The bots can duck at times to get under spots, but that doesn't work perfectly so don't count on it. Don't try to get cute or you'll just mess up your .nav file!
"removenode"
This is kind of a hack, so don't overuse it, but when you type "removenode" in cheats mode, it will remove the closest node to you (it actually moves it to -9999,-9999,-9999 and sets all the links invalid, I'll have to figure out how to actually delete it later). To use it, you have to be out of edit mode. Just type "removenode", then "removedoors" (if needed), then type "sv savenodes" and it should be gone. Don't type "sv editnodes" before that or it won't work.
ADDING CAMP SPOTS
Once you are done with the .nav file (or you can also do this at the same time as making the .nav file) you have to create camp spots for the bots to go to. Bind a key to "sv campspot" and join whatever team you want to set up first. Then go to various spots around the map wherever you want the bots to camp and hit that key. Try to copy where people camp on the servers to make it realistic. When you set a camp spot 4 things are saved:
team
location
angle
stance
So when you set the camp spot, make sure you are situated exactly as you want the bot to camp, including whether you are standing, ducked or crawling, and that's how the bot will camp. If you store a spot as a standing camp spot, hmgs won't go to that spot. Don't put the spots close to each other or the bots might all bunch up. When bots spawn they will either go to the nearest camp spot or a random one. Try to put the bulk of the camp spots near the other teams spawn otherwise you might end up with 2 teams of bots camping all day and never seeing each other.
The .cmp file will be stored in dday/navigation.
(You can edit that file in notepad if you want to tweak it without having to start over. Each camp spot is 6 lines, 1st line is team, lines 2-4 are origin(x,y,z location) , 5th line is angle, 6th is stance 1=stand,2=duck,4=crawl. You can find your origin in the map by typing "spot" in the console when cheats are on)
OBJECTIVES
Bots should attack objectives and claim objectives. Make sure you have a campspot near any destroyable objective and inside objective_touches (1 for each team). The closest campspot to each objective will be designated as an objective campspot and will only be used for capturing or destroying objectives. When you use "showlinks" (see below) the flags over these campspots will be translucent.
ROTATING DOORS
If you have a rotating door in your map, when you save your nodes, any links through the doors will be broken. So with cheats on, type "removedoors". This will remove all rotating doors in the map. Then type "sv savenodes" and the bots should be able to go through rotating doors ok. Any time you save your nodes, you will have to do removedoors first, even if you only added a few links to your map that are nowhere near any door. Be aware that when you type "removedoors" the map becomes very unstable and will sometimes crash causing you to lose your navigation data. So save your nodes quickly then restart the map.
BRIDGES/WINDOWS/DESTROYABLE OBJECTS
Bots will destroy any func_explosive it gets close to so you don't have to worry about windows blocking their path (like on outpost). But similar to rotating doors, when you save your nodes, the links will save according to what state the bridge/window/destroyable object is in. If you have a window that you want the bot to go through, you must make sure the window is destroyed when you save the nodes, otherwise it won't be able to get through it. Likewise if there is a bridge you want the bot to cross, if you destroy it the links across the bridge will become invalid.
CUSTOM SPAWNS FOR BOTS
If you are making a map or an ent file you can create an entity called "bot_spawn". It works similar to "info_reinforcements_start" except just the bot spawns there. Give it an obj_owner of "0" for allied or "1" for axis. This is good for if the normal spawn is in a tight spot that the bots are having problems getting out of.
SOME MAPS JUST WON'T WORK due to stuff like the bridges on dday3 or some spawn areas that are too hard to get out of.
Examples of maps I couldn't get to work:
dday3, dday5, soviet1
That's it for now. I'll probably edit this as I think of more stuff. I didn't code any of the .nav file stuff so I don't know exactly how everything works and had to figure out most of this by trial and error. So if anyone has anything to add, feel free to add it. And let me know if you have any problems. Hopefully some people will actually work on this and post their .cmp & .nav files for other people to use.
"showlinks"
In cheats mode, you can type "showlinks" and a laser will point from each bot to their campspot. It will also show the closest node to you and all the links coming out of that node. LINK_MOVE's will be green LINK_JUMP's will be blue. Also, a team flag will appear at every campspot. Objective campspots will be translucent. This only works correctly when you are not in edit mode.