Upload
vinchand
View
173
Download
4
Embed Size (px)
Citation preview
web.archive.org
http://web.archive.org/web/20070924190336/http://wiki.bots-united.com/index.php/FritzBot_ET
From Bots-United Wiki
This is the complete user's guide for
Fritzbot ET, a bot mod for Wolfenstein:
Enemy Territory.
Looking for the Fritzbot RTCW section?
You can find it here.
Fritzbot ET Information
Current Version: 0.70b FINAL
Webpages, Help & Support, etc.
Fritzbot ET Website
Fritzbot ET Message Boards
Fritzbot ET Wiki (permanent link to this page)
Fritzbot ET Team Members
Massive thanks go to all team members and contributers for their help on making Fritzbot ET one of
the best bot mods on the net.
Maleficus - Coder & Project Leader
420Blunt - Waypointer & Beta Tester
the bindlestiff - Waypointer
CrapShoot - Waypointer & Beta Tester
Hobbit - Waypoint Tool Development
TomTom - Waypointer
Fritzbot ET Features
Objectives:
Constructions
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
1 of 51 03-Nov-2012 4:36 PM
Steal
Deliver
Flags
Dynamite
Command Posts
Game Sense:
Objective priorities
Event awareness and response
Offensive and Defensive "phases"
Combat:
Use all of their weapons (class-based and personal) effectively to fight you
Use and understand grenades.
Use and understand every trick in the ET book on how to fight your enemy
Game:
Unique GUI and menu interface that lets you setup all of your Fritz specific options
Easy to use and setup
Predefined campaigns that have all the maps Fritz supports
5. Navigation:
Usage of the entire map rather than a shortest path
Obstacle recognition and avoidance
Skill levels:
General Skill (1-3)
Aim Skill (1-4)
Medics:
Recognition of teammates with low health
Ability to find teammates in need of a revive
Teamkill revive for teammates with very low health
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
2 of 51 03-Nov-2012 4:36 PM
Automatically pass out med packs at spawn if they have high level teammates
Field Ops:
Airstrike and Artillery support
Recognition of teammates that need ammo
Automatically pass out ammo at spawn
Covert Ops:
Satchel
Disguises
Smoke Grenades
Sniping
Mine spotting
Soldiers:
Panzer camps
Mobile mg42 camps
ALL weapons used, except the mortar
Engineers:
Rifle Nades
Mines
Tools:
Built in .nav file editor
"FritzScript" a simple, easy-to-use script system to control the bots actions.
External waypointer's tool
Example .bot file so that you can learn how to make your own bots
Online Tutorial to get you started.
Helpful online community to turn to with any questions/comments/suggestions.
What You Need First
First you need to download the full client version of Wolfenstein: Enemy Territory from
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
3 of 51 03-Nov-2012 4:36 PM
Splash Damage, it's a free download you don't have to pay for this game. Otherwise if you
purchased the Platinum Version of Return to Castle Wolfenstein, Enemy Territory comes with
that version so you don't need to download the full client.
Next you need to download and install the latest patch for Enemy Territory from Splash
Damage, which is patch version 2.60b at present time.
Then finally, you need to download the latest Fritzbot ET version from the Fritzbot ET
Website
Getting Started
Installing Fritzbot
Download the zip file from above and extract it to your \Program Files\Wolfenstein: Enemy Territory
directory on your hard drive, it should create a folder called "fritzbot". At this point, you are ready to
start playing
Installation of additional files
When you download custom waypoint files created for Fritzbot or any patch of sorts or just modified
files you want to add to your Fritzbot installation, you place the corresponding files in their proper
directories. Below is a list of the most common file extensions that are used with Fritz and what
directory they go into. Keep in mind the files mentioned below MUST go into their proper directories
in order for them to work. To be more sure, read the documentation that came with the file(s) for any
special installation instructions.
.aiscript files go into the ~\Wolfenstein - Enemy Territory\fritzbot\bots\scripts directory
.arena files go into the ~\Wolfenstein - Enemy Territory\fritzbot\scripts directory
.bot files go into the ~\Wolfenstein - Enemy Territory\fritzbot\bots directory
.cfg files go into the ~\Wolfenstein - Enemy Territory\fritzbot\configs directory
.nav files go into the ~\Wolfenstein - Enemy Territory\fritzbot\bots\maps directory
.script files go into the ~\Wolfenstein - Enemy Territory\fritzbot\maps directory
.dll & .pk3 files go into the ~\Wolfenstein - Enemy Territory\fritzbot\ directory as well as any new
fritzbot related folder you don't already have or are planning to replace. BE CAREFUL especially with
dll's as they are very sensitive to alterations.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
4 of 51 03-Nov-2012 4:36 PM
If the specified directory above doesn't exist, create it. That should be about it, I'll add more if needed
but that's all that's needed for now
note: If you are placing files in the directories listed above, you will need to set sv_pure to 0 for the
game to load them. It's recommended to place the files inside of a pk3 file. A pk3 template can be
found here. Read the Readme file included in the zip for instructions.
Running Fritzbot
Start Enemy Territory (ET.exe) and go to the mods section in the options menu of the main menu,
highlight fritzbot then click launch. After fritz loads, click on play Fritzbot, set your options, then go.
Another way to load Fritzbot is to create a shortcut on your desktop than will load the mod
automatically. To do this, goto the \Program Files\Wolfenstein - Enemy Territory folder and right
click on the ET.exe file and go to "Send To" on the shortcut menu, then click desktop, it should ask if
you want to create a shortcut, click ok and go to your desktop. You should see a shortcut there with
the Wolfenstein logo.
Right click on this shortcut and select properties. You should see a box that says "Target:" and it
should say something like this...
"C:\Program Files\Wolfenstein - Enemy Territory\ET.exe"
Now add +set fs_game fritzbot right after the .exe (make sure to include a space between the two), so
it should look something like this...
"C:\Program Files\Wolfenstein - Enemy Territory\ET.exe" +set fs_game fritzbot
After that, click on apply, then okay and then you're done. Fritzbot will now load whenever you click
on that shortcut.
In-Game Console Commands
Most map waypoint-related settings are set by default like bot count, etc. But there are some console
commands you can enter in game to add/change some random things in game, all command
mentioned below can only be entered in the console. To bring down the console in-game press the
tilde key (~ by default) and enter the commands below exactly as follows. This is only a brief mention
of a few of the console commands used by Fritz.
/addbot <Name> <AI Skill> <Aim Skill>
Loads a bot into the current map. For the name you can use any bot name from any bot profile in the
\Program Files\Return to Castle Wolfenstein\fritzbot\bots directory (the filename of the bot file is
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
5 of 51 03-Nov-2012 4:36 PM
the one you use with this command). The AI skill goes from 1-3 (1=Easy, 3=Hard). The Aim Skill goes
from 1-4 (1 = Easy, 4 = Nightmare) So if you want to load Dolphin_Girl with a skill of 2 you would
enter the command like so: /addbot dolphin 2, and then hit Enter. Using the /addbot command with
no name or skill will add a random bot. You can also load bots without defining a skill setting and
they will load to the default skill setting mentioned below. Before entering this command the map
you are playing MUST have a valid waypoint and aiscript file installed. The list of Fritzbot ET default
bots (and their defined class and team) is in the file \Program Files\Return to Castle
Wolfenstein\fritzbot\docs\et_botindex.txt.
/addbot random <AI Skill> <Aim Skill>
This loads a random bot to the team that needs it, using the AI and aim skill values you define.
/addbot
This loads a random bot to the team that needs it, setting the AI and Aim skill values to the global
cvars "bot_skill" and "bot_aimskill".
/bot_skill <value>
This is used to adjust the bot's skill for bots that we've loaded without the skill setting defined. The
same skill levels mentioned above apply to this command as well. By default the skill setting is set to
2 but if you want to set it to 3 you would enter the command like so: /bot_skill 3, and then press
Enter.
/bot_aimskill <value>
This is to specify the aiming skill of the bots when you play them, the values are 1 for easy skill, 2 for
medium, 3 for hard and 4 for nightmare skill.
/kick allbots
Kicks all bots from the server.
/bot_pause <value>
A value of 1 with this command will freeze all bots in place, a value of 0 unpauses them from a
paused state. Good for testing things and/or taking screenshots.
Most other RTCW server and client console commands work with Fritzbot as well but those are
beyond the scope of this guide.
Dedicated Server Setup
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
6 of 51 03-Nov-2012 4:36 PM
To start a dedicated server, the best method is to create a .bat file (batch file). Open up a text editor
and place the following line in it:
etded.exe +set fs_game fritzbot +set com_hunkmegs 64 +set dedicated 2 +exec server.cfg
Save the file as fritzserver.bat (or whatever you want to name it. The extension must be set to .bat
however). Place the file in the ~/Wolfenstein - Enemy Territory/ folder (where etded.exe is)
Double-clicking the file will start the server, and then execute the server.cfg file. You may want to edit
the server.cfg file (or create one if you need to).
A nice guide for server configs can be found here.
In addition to the settings you will find there, Fritzbot has a few specific cvars you may want to set in
the server.cfg:
g_minbots <numberOfBots>
Used to keep a certain number of bots on the server. The default value is 10.
note: if this cvar is set to anything above 0, the .bots files will not be used
g_maxbots <numberOfBots>
Used to limit the number of bots in the game. Default is 20
bot_skill <1-3>
Used to set the bots navigation and awareness setting. 1 is lowest skill, 3 is highest skill
bot_aimskill <1-4>
Used to set the bots aiming skill. 1 is lowest level, 4 is highest level
Custom Bot Configs
For those of you that want to customize the bots that join the server, set g_minbots to 0 and create a
separate bot config file. To create a custom bot config file for your dedicated server, open up a text
editor and add the following to a new file:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
7 of 51 03-Nov-2012 4:36 PM
addbot fritzaddbot dolphin
Save this file as something like 2bots.cfg and place it in either etmain or the fritzbot folder on the
server. You can now execute the config via rcon to add the 2 bots to the server.
If you want to add a variety of skill levels for the bots, you can specify ai skill and aimskill with the
addbot command. These settings will override the server cvars for each individual bot as it connects:
/addbot <botname> <aiskill> <aimskill>:
addbot fritz 1 1 //the lowest skill availableaddbot dolphin 3 4 //the highest skill available
In the Frtizbot/Docs folder, there is a file called et_botindex.txt. This has all the names of the bots
you can use.
Supported Maps
This section is just a compiled list of each map that is supported by Fritzbot ET and which maps are
currently being given support by various waypointers. Please check this list often to see the current
status of support for Enemy Territory maps.
Released Waypoints
Last Updated:by TomTom on 9-18-07
Title - mapname (waypoint author)
Adlernest - adlernest (CrapShoot)
Ammo Depot (Cement Island) - ammodepot (TomTom)?
Assault - et_assault_beta4 (the bindlestiff)
Base - tc_base (420Blunt)
Base47 - base47 (CrapShoot)
Baserace - baserace (CrapShoot)
Beach Invasion - et_beach / mp_beach (420Blunt)
Braundorf - braundorf_b4 (CrapShoot)
Bridge - md_bridge (TomTom)?
Bridges - __bridges__ (the bindlestiff)
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
8 of 51 03-Nov-2012 4:36 PM
Byzantine - byzantine, byzantine-final (TomTom)?
Caen 2 - caen2 (the bindlestiff)
CAHA_Tavern - caha_tavern_b2 (TomTom)?
Das Boot - mp_sub_rc1 (420Blunt & CrapShoot)
Daybreak - mlb_daybreak (420Blunt)
Desert Temple Final - temple_final (the bindlestiff)
Dubrovnik - dubrovnik_final (CrapShoot)
El Kef - sw_el_kef (420Blunt & CrapShoot)
Foo Fighter - et_ufo_b3, et_ufo_final (the bindlestiff)
Frostbite - frostbite (CrapShoot)
Fuel Dump - fueldump (CrapShoot)
GA_El_Kef - ga_el_kef (TomTom & 420Blunt)
Gold Rush - goldrush (CrapShoot)
Heart of Gold Beta 12 - HoG_b12_dt (420Blunt)
Hill - dm_hillb2 (TomTom)
Ice - et_ice (Hobbit)
Industry2_Final - industry2 (420Blunt)
Marketgarden - marketgarden_et_r2 (the bindlestiff)
Marrakech Streets 2 - et_mor2 (420Blunt)
MML Church - mml_church_et_v1, church_chigc (TomTom)?
Nachteinbruch - nachteinbruch (420Blunt)
Oasis - oasis (CrapShoot)
Radar - radar (CrapShoot)
Reactor - reactor_final (CrapShoot)
Rocket - mp_rocket_et_a1 (420Blunt)
Rommel - rommel_final (CrapShoot)
Stalingrad - stalingrad (420Blunt)
Seawall Battery - battery (CrapShoot)
Summer Palace - summer_palace_b1 (TomTom)?
SW_Goldrush_TE - sw_goldrush_te (CrapShoot)
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
9 of 51 03-Nov-2012 4:36 PM
SW_Oasis_B3 - sw_oasis_b3 (420Blunt, CrapShoot)
Townsquare - townsquare_final (the bindlestiff)
Transmitter (final) - transmitter (Craig and the bindlestiff)
Trenches - trenches05 (TomTom)
Tundra - et_tundra_beta4a (the bindlestiff)
V2Base Tournament Edition - v2base_te (SteelRat)
Venice - venice (420Blunt)
Wacht Am Rhein Beta 1 - bulge_beta1 (420Blunt)
Xdam2 - xdam2 (the bindlestiff)
Xposed - xposed (the bindlestiff)
If you don't have some of these waypoints installed, check here for them. Just place the pk3 files into
the ~/Fritzbot folder.
(If they don't appear in your start display, try starting them in the console ' /map mapname. If
you still can't find them they may be recently released. In which case search the message board for
packs and individual map releases.) Or check this Fritzbot Waypointing Map Status List
Waypoints In Progress
Last Updated:by TomTom on 9-18-07
Air Assault (Air Ship) - airassfp1 (TomTom)
Eagles 2Ways - eagles_2ways_b3 (TomTom) ?
Glider 3.02 - glider (TomTom) ?
Headshot - et_headshot (TomTom) ?
Hide (Channel Gun) - 2hide (TomTom)?
Hide (Channel Gun) Competition - 2hide_cal_r1 (TomTom)?
Lighthouse - lighthouse (TomTom)?
Northpole - northpole (TomTom)?
N.O.T.W. - notw (TomTom)
Snatch - snatch3 (the bindlestiff)
Secret Weapon - SOS_Secret_Weapon (TomTom)
Supply Depot - supply (Crapshoot)?
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
10 of 51 03-Nov-2012 4:36 PM
Supply Depot 2 - supplydepot2 (TomTom, Crapshoot & 420Blunt)?
Supply Depot (Winter) - supplydepot3 (TomTom et al)
Hospital Sniper - uje_hospital_sniper (TomTom)
Village - et_village (Stormer)
Charts, Links, and Feedback
Finished and In-Progress Waypoints
Orphaned and Tentative Waypoint Projects
General Troubleshooting
There is a Fritzbot_ET_Bug_Report_form which can be helpful when reporting problems back to the
Fritzbot waypoint forum.
Problem: Fritzbot is crashing after warmup ends
This may happen if some files become corrupted. However, the most likely cause is the 2.60 ET patch
not being installed.
Download and install the 2.60 patch from here.
Delete the entire Fritzbot folder and re-download the mod. Be sure to make backup copies of
any waypoint files that you may have started first
Problem: The maps aren't showing up in the list
This can happen for a couple of reasons. The first thing to do is to try to start the map with the
console (/map mapname)
Double check and make sure the map pk3 is in the etmain folder
If you have a lot of maps in etmain, remove some of them that you don't use often
Problem: The bots are just standing around and not doing anything
This will happen if no nav files have been loaded.
Check the supported map list
Make sure you have additional waypoint files in the correct place
Problem: My custom bots are not loading
The first thing to do is to check the console by pressing the ~ key when the bot doesn't load. You will
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
11 of 51 03-Nov-2012 4:36 PM
see an error message.
If the error message says the bot doesn't exist, start fritzbot using sv_pure 0. Or you can place
the bot file(s) in a pk3
If the error message says unrecognized commands or bot file too long (no ending bracket),
make sure you created the bot file in notepad and not wordpad.
Frequently Asked Questions
Q. When/will you release a Mac/Linux/ version so that I can play on my OS of choice?
A. I know there are quite a few of you that want a Linux/Mac version, and I'd love to do that for you,
but it's just not possible right now for several reasons:
1. I have no Linux/Mac experience. I've never used either before, or coded for them, so I wouldn't
even know where to start. For macs it's worse, because I'd actually have to buy a mac to compile for
it (at least Linux is free/very cheap). I hate Windoze as much as you do, but it's what I know.
2. I have a full time job, school, and a busy personal life. I have to make a great effort to work on
Fritz as it is - which is why it seems to take me forever to release. If I worked on a Linux/Mac
version, it would mean I would have to stop work on Fritz for weeks, possibly longer (read:
months).
3. Fritz is playable as a server side only mod, so if you can get a server with windows running, Win,
Mac, and Linux clients can all connect to it and play. Fritz ET will stay capable of being played
server-side only.
If the time/money was there to support Linux and Macs, you can be sure that I'd be cranking out
versions of Fritz ET for them too!
Q. Why don't you support Railgun?
A. Railgun support was partially completed when I took a new job at ID Software and my time to
continue with ET became severely limited. Maps with tanks are supported, however.
Q. I like some features of mod X, will you support it?
A. Let me know what it is, and I'll see about it.
There are a few things I won't support tho.
1. Features that bugger me (in game banners/spam/popups/annoying sounds/anything that could
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
12 of 51 03-Nov-2012 4:36 PM
be used to cheat/etc). I'm pretty flexible with these rules tho (EX: I don't like hitsounds personally,
but I have no problem making them an optional feature for the ppl who do.
2. Anything that breaks Fritz being able to be played as a server side only mod. Sometimes it's hard
to know what would break this rule, so just ask, and if it will be a problem, I'll let you know.
3. Features that are more suitable as mods in themselves, rather then small additions to ET. Fritz is
a bot mod that plays a tweaked version of ET, not a Total Conversion mod that happens to have
bots. I have time to code bots, or code general mod features, but not both sadly.
Q. Will you support map X?
A. Make a thread in the waypointing forum for it. If someone wants to path for it, they'll let you
know. If it's a fun and popular map, chances are it will be done sooner or later.
Q. I like mod X - can you combine it with Fritz?
A. No. Most mods are not open source, which means I have no way of accessing the source code
(ETPro is a good example - I can't just DL the ETPro source and release a Fritz ETPro version), so I
have no way of combining Fritz with these mods. Also - I just don't have the time. Working on the
bots takes up all my time. And, I want to keep the game fairly close to vanilla ET play, and while I will
add some features from other mods if they are asked for, I can't just combine mods, or recreate every
mod out there. I can recreate some features if they mesh with where I want Fritz to go, but not whole
mods.
NOTE: If you can supply me with the source code to the feature you really want, or know of a mod
that has the feature and is open source (and has no problem sharing), then the chances of seeing
that feature in Fritz are MUCH improved.
I see it this way: I can make a bot that plays one game REALLY well, or a bot that plays a whole bunch
of mods, but doesn't play any one of them very well. A jack of all trades is a master of none.
Creating Waypoints
A tutorial is coming soon. A lot of features are still in development, so a complete tutorial is not
possible yet. In the meantime, there are two tools available to get you started:
Hobbit's ET Waypoint Tool
Denny's RTCW Waypoint Tutorial
The recommended steps for those of you that want to get started prior to a full tutorial are to first
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
13 of 51 03-Nov-2012 4:36 PM
read the RTCW tutorial, then view the fundamental changes listed below. Once you have a basic
understanding, Hobbit's waypoint tool is an excellent tool to use.
To help you use Denny's tutorial and understand the differences between the RTCW and ET versions
of Fritzbot, the new Fritzbot_ET_waypointing_tutorial provides a lesson plan that gives corrections
and quiz questions for new ET waypointers.
For now, this section will be set up as a reference to all the commands needed for ET waypointing.
Goal Tracker
The Goal Tracker is a method that is used to help the bots to 'understand' a maps' progression. When
certain events take place on a map, the Goal Tracker will be updated. When a round starts, the Goal
Tracker is set to 0. This is important to understand when placing actions on a map because bots will
only see actions as usable if they have the same "Goal Number" as the current Goal Tracker value. In
the RTCW Tutorial, this is referred to as the action_group and is explained here. Keep in mind that in
ET, it's called action_goal.
The console command /goal_num displays the current goal tracker state.
Events that increase the goal tracker are:
Dynamite Objective being destroyed
Major Construction Being Built
Objective being stolen (i.e. docs or gold)
Events that decrease the goal tracker are:
Objective Returned
note: If more than one of the above objectives are in the same Goal Number, only the first one
completed will increase the goal tracker
Actions that have the same Goal Number as the Goal Tracker are active. All other actions are not
active.
See Fritzbot_Goal_Tracker for further discussion.
Node Basic Concepts
Nodes are placed in the maps to tell the bots that a certain part of the map is usable. By connecting
nodes together, a grid can be created on a map that gives bots paths to their goals (actions).
The maximum number of nodes is 1024 (0-1023).
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
14 of 51 03-Nov-2012 4:36 PM
--Tips--
Nodes should be no more than 2.5 seconds apart
Limit the number of 90 degree turns in the pathing. Not many people move around a map
taking 90 degree turns, so lets not make the bots do it.
Walk through the map in editor mode and see if there are any 'shortcuts' that are left
unpathed.
Keep in mind that the bots can travel to the very edge of a node's radius, then move to the
next radius. Use /node_drawradius 1 to see the radius. This is especially useful when pathing
for narrow hallways or tight corners
One way paths should only be used when absolutely necessary (i.e. a jump down)
More about nodes can be read here. Keep in mind that the node_flags have been changed in ET while
reading through it.
Node Properties
Each node has several properties. In editor mode /node_drawhud 1 will show the properties of the
closest node to where you are standing. The full command for adding a node is:
/node_add <flag> <radius> <entity> <team> <group>
That may be a bit much to type in a single command. Each property has a default value that can be
edited with the waypoint tool or with additional commands.
Typically it's best to add a node to the map by just typing /node_add in the console. You can then
chose to use the waypoint tool to edit the properties or use the following commands in the console:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
15 of 51 03-Nov-2012 4:36 PM
/node_flag <nodeNumber> <flagNumber> - sets the node flag/node_radius <nodeNumber> <radius> - sets the node radius/node_ent <nodeNumber> <entity> - sets the node entity (only used for spawn flags)/node_team <nodeNumber> <team> - sets the usability of the node to only one team (1 axis, 2 allies)/node_group <nodeNumber> <group> - sets the node group (leave at default)/node_connect <nodeNumber> <nodeNumber> - creates a one way path /node_disconnect <nodeNumber> <nodeNumber> - removes a one way path/node_resetlinks <nodeNumber> - removes all connects from a node (outgoing connections)/node_move <nodeNumber> - moves the node to your current position/node_autoconnect - creates a two-way path between the just-placed node and the previous node placed/node_num - identifies the node nearest to your position (apparently)
Node Flags
Hobbit's Waypoint Tool has all of the node flags available in pull-down menus, but for those that are
interested in the variables, they are listed here:
-- NODE FLAG -- -- FLAG NUMBER --NODE_INVALID -1 <- a null node type (not valid!)NODE_NORMAL 0 <- the defaultNODE_LADDER_TOP 1 <- node is at the top of a ladderNODE_LADDER_BOTTOM 2 <- node is at the bottom of a ladderNODE_SPAWNFLAG 3 <- node is next to a spawnflagNODE_BUTTON 4 <- not used yetNODE_JUMP 5 <- bots will jump between nodes with this flag setNODE_LEAP 6 <- a one-way jump - low health bots beware!NODE_CONSTRUCTABLE 7 <- not usedNODE_WALK 9 <- bots will walk to this node
To edit a node flag in the editor mode, the console command is /node_flag <nodeNumber>
<nodeFlag>
Example: Let's say you placed node number 5 at the bottom of a ladder. You would then type in
console /node_flag 5 2.
It's recommended to just make a note of the node number and flag it requires so you can add them
with Hobbit's Waypoint Tool. The tool will also provide validation for the nodes.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
16 of 51 03-Nov-2012 4:36 PM
Below is a listing of each node flag with some notes on how / when to use them.
node_invalid
/node_flag <nodeNumber> -1
Used to deactivate a node. only use this if you have an extra node on the map that you can't place
anywhere else.
node_normal
/node_flag <nodeNumber> 0
Default setting for nodes. nothing special about this node, treat it normally.
node_ladder_top
/node_flag <nodeNumber> 1
Used at the top of ladders. this gives the bots a hint on how to handle navigating down ladders. It
causes them to slow down and walk to this node as well. IF you don't want them walking a long
distance to a top ladder node, connect it to a normal node close by.
node_ladder_bottom
/node_flag <nodeNumber> 2
Used at the bottom of ladders. this gives the bots a hint on how to handle navigating up a ladder and
what to do if they get stuck on one.
node_flag
/node_flag <nodeNumber> 3
Used for the node closest to a spawnflag. this gives a hint to the bot that a flag is nearby.
-IMPORTANT- when setting a node_flag to 3, the nodes' entity also needs to be set to the entity
number of the flag /node_ent <nodeNumber> <entity>
node_button
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
17 of 51 03-Nov-2012 4:36 PM
/node_flag <nodeNumber> 4
-NOT IMPLEMENTED YET-
node_jump
/node_flag <nodeNumber> 5
Used to make the bots jump across gaps. two successive nodes need to be set with node_flag 5 for it
to work. It should not be used on a node that is the "closenode" of an action (see note 2 of the
closenode property described under #Action Properties below)
node_leap
/node_flag <nodeNumber> 6
This flag is used to warn bots that a dangerous jump down is ahead. It should have been named
"node_DON'T LEAP" because it is primarily intended for wounded bots. Bots with less than 30%
health will not make the jump and will look for a way around it. Use this flag carefully because if
there is no suitable detour, they will freeze in place and go no further, wherever they are. Be sure to
test the path with a wounded bot to make sure that this doesn't happen. The flag must be set for the
nodes at the each end of the jump. It should not be used on a node that is the "closenode" of an action
(see note 2 of the closenode property described under #Action Properties below), and it should be
avoided on nodes connecting crossing paths because it affects movement on each.
node_constructable
/node_flag <nodeNumber> 7
-NOT IMPLEMENTED YET-
node_walk
/node_flag <nodeNumber> 9
Used to make the bots walk to a node. As they approach a node marked as a walk node, they will walk
to it. Used for some areas you wouldn't want them to jump off, like narrow ledges.
Action Basic Concepts
Actions are in place to give the bots something to do. Without them, they will stand in place and let
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
18 of 51 03-Nov-2012 4:36 PM
you know they have nothing to do. More about actions can be read here. Keep in mind while reading
that the action types have changed / expanded for ET.
The maximum number of actions is 256 (0-255).
--Tips--
Place non-objective actions around a map in positions that human players would play them
Use a radius of 45 or lower for most actions. Any radius larger than 45 and you may get more
than one bot "sharing" the same action
Start with the objective actions and test them
Add actions in one phase of the map at a time, then test
If you're testing your waypoints and some bots start spamming "no goals", you can type
/bot_pause 1 to stop the spamming and begin troubleshooting.
If you forgot where you placed an action you can turn off the display of other actionTypes
with /node_drawonly <actionType> to speed up the search.
Action Properties
Each action has several properties. In editor mode, /node_drawhud 2 will show the action properties
of the closest action to where you're standing. The full command for adding an action is:
/action_add <axisAction> <alliedAction> <radius> <entity> <active> <group> <goal> <class>
<prone> <behind> <behindGoal>
As you can see, that's a lot to type in a single command. Each variable has a default value and can be
set with additional commands. So typically when adding an action, you should just set the axis action
and allied action. You can then use the Waypoint Tool to edit the rest of the properties.
/action_add -1 0 is an example of adding an allied camp action. The rest of the actions' properties
will be set to the default values. If you would like to edit the properties in the editor rather than with
the tool, below is a list of commands:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
19 of 51 03-Nov-2012 4:36 PM
/action_axis <actionNumber> <actionType> - sets the axis action type /action_allies <actionNumber> <actionType> - sets the allied action type /action_radius <actionNumber> <radius> - sets the radius /action_ent <actionNumber> <entityNumber> - sets the entity number /action_active <actionNumber> <foreverNumber> - sets whether the action number should be active forever (1 yes, 0 no) See Fritzbot_Goal_Tracker for further discussion./action_group <actionNumber> <groupNumber> - sets the group number /action_goal <actionNumber> <goalNumber> - sets the goal number /action_class <actionNumber> <classesNumber> - sets which classes can use this action/action_prone <actionNumber> <proneNumber> - sets whether or not the bot should prone when using this action (1 yes, 0 no)/action_links <actionNumber> <linkedActions> - links actions together(like a camp action linked to an aim action)/action_closenode <actionNumber> <NodeNumber> - specifies the closest path node to the action (helps the bots find it) Note 1: The closenode is automatically updated when you move the action, but it may not be correct if you later move the node Note 2: Do not use a specially-flagged path node like a jump or a ladder as the closenode for an action because the node's special-handling code can interfere with that of the action. Note 3: It is best to use a node that is available to both teams for any closenode even for actions that are only defined for the same team as the node. (You might forget later, add an opposing team action and wonder why some bot zombies occasionally.)/action_move <actionNumber> - moves the action to your current position/action_num - identifies the action nearest to your position (apparently)
* action_behind and action_behindGoal aren't implemented at this time.
Action Types
Hobbit's Waypoint Tool has all of the action types available in pull-down menus and does validation,
but for those that are interested in the variables, they are listed here. Actions that are suitable for use
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
20 of 51 03-Nov-2012 4:36 PM
in the aiscript are marked with an asterisk .
-- ACTION TYPE -- -- ACTION NUMBER --ACTION_INVALID -1 <- the default, a NULL action.ACTION_CAMP 0 <- short-term camping goalACTION_MG42 1 <- marker for a fixed mg42*ACTION_CONSTRUCT_MINOR 2 <- marker for minor things: MG42s, towersACTION_AIM 3 <- tells the bot where to look while camping*ACTION_DYNAMITE 4 <- dynamite non-constructible objects*ACTION_DEFUSE 5 <- defuse dynamite*ACTION_SPAWNFLAG 6 <- marks a spawn flagACTION_DELIVER 7 <- marks the delivery point for stolen objects*ACTION_STEAL 8 <- marks the location of an object to stealACTION_DEFEND 9 <- long term place to campACTION_AIRCAN 10 <- airstrike hintACTION_ARTY 11 <- artillery hint (not yet implemented)ACTION_ROAM 12 <- patrol locationACTION_SNIPE 13 <- sniper camp for covertsACTION_PANZER 14 <- panzer camp for soldiersACTION_NADE 15 <- grenade goal for barriers, etc. (not yet implemented)ACTION_ENGCAMP 16 <- camp for engineers (for dual-objective maps only)ACTION_ALTROAM 17 <- route destinationACTION_MG42CAMP 18 <- fixed mg42-camp goal, doubles as a mg42 marker*ACTION_CONSTRUCT_MAJOR 19 <- MAJOR construction goals, like bridges, water pumpsACTION_TANK 20 <- for tanks (not yet implemented)ACTION_TRAIN 21 <- railgun train (not yet implemented)*ACTION_CMDPOST 22 <- command postACTION_SMOKECAN 23 <- smoke-can hint for covertsACTION_MINEPLANT 24 <- area to plant minesACTION_MINEHUNT 25 <- area to spot minesACTION_SUBVERSION 26 <- area to sneak into (not yet implemented)ACTION_SATCHEL 27 <- covert's satchel goalACTION_MOBILEMG42_CAMP 28 <- camp for mobile mg42 soldiersACTION_BUTTON 29 <- button or lever a bot needs to use (not yet implemented)ACTION_UNUSED 30 <- reservedACTION_UNUSED 31 <- reserved*ACTION_PLANT_CONSTRUCT 32 <- dynamite a constructible object*ACTION_EVENT_EXPIRE 33 <- catches entities leaving the game*ACTION_EVENT_EXPLODE 34 <- catches walls or doors blowing up
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
21 of 51 03-Nov-2012 4:36 PM
action_invalid
/action_<team> <actionNumber> -1
This is the default setting for action types. Using the /action_add command will add an action, but
because both teams' action types default to -1, it will be invisible in the editor until you specify one of
the team-specific actions.
action_camp
/action_<team> <actionNumber> 0
A short-term camping goal. Set the entity number of a camp action to 1 to cause the bot to remain
standing instead of kneeling. Useful for snipers standing behind walls.
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
action_mg42
/action_<team> <actionNumber> 1
A marker for a fixed mg42. Use when you want a bot to only use the mg42 when it is in the area and
spots an enemy. This is not a camp action.
REQUIRES: the entity number of the mg42 (misc_mg42) to be defined with /action_ent
action_construct_minor
/action_<team> <actionNumber> 2
A construct action for minor constructions (ladders, barriers, mg42's, etc)
REQUIRES: the entity number of the construct (trigger_obj_info on the materials) /action_ent
action_aim
/action_<team> <actionNumber> 3
Tells the bot where to look while camping. This is what you will use for /action_links on the actions
that require it. You can use multiple aim actions for a single camp and the bot will randomly rotate
between all of them.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
22 of 51 03-Nov-2012 4:36 PM
In order for an aim action to be valid, it needs to be set for the correct team and be "active" in the
same goal_num of the actions that are linked to it.
To be safe, you can set the goal number (/action_goal <actionNum> <goal> 0 and make it active
forever (/action_active <actionNumber> 1)
action_dynamite
/action_<team> <actionNumber> 4
A dynamite action for non-constructible objects.
REQUIRES: the entity number of the dynamiteable (trigger_obj_info) /action_ent
<actionNumber> <entity>
action_defuse
/action_<team> <actionNumber> 5
A defuse action. Typically this is combined with the dynamite action, but set for the opposite team.
/action_add 5 4 is an example of adding an action with both dynamite and defuse goals (axis defuse,
allies plant)
REQUIRES: the entity number of the dynamiteable (trigger_obj_info) /action_ent
<actionNumber> <entity>
action_spawnflag
/action_<team> <actionNumber> 6
A spawnflag action.
REQUIRES: the entity of the spawnflag (team_WOLF_checkpoint)
See the node_flag section about additional requirements of setting up a spawnflag correctly.
action_deliver
/action_<team> <actionNumber> 7
Tells the bot where to take documents /gold /key /etc
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
23 of 51 03-Nov-2012 4:36 PM
action_steal
/action_<team> <actionNumber> 8
A steal action for documents /gold /key /etc
REQUIRES: the entity of the object to be stolen (team_CTF_blueflag or team_CTF_redflag)
action_defend
/action_<team> <actionNumber> 9
A longer-term camp action.
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
action_aircan
/action_<team> <actionNumber> 10
An airstrike hint. This is a secondary goal; meaning that if a field op passes through the radius of this
action with a full charge-bar, it will toss an airstrike in the direction of the center of the action.
action_arty
/action_<team> <actionNumber> 11
NOT IMPLEMENTED YET
action_roam
/action_<team> <actionNumber> 12
An action used to make the bots patrol a certain area. They will go to the roam action, then
immediately move on to the next goal (action).
action_snipe
/action_<team> <actionNumber> 13
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
24 of 51 03-Nov-2012 4:36 PM
A specialized camp action for covert ops with scoped weapons. Covert ops with scoped weapons will
prefer to use this while other classes will ignore it.
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
Note: it's best to set up at least two of these in each goal_num you want them in. The reason for this is
because the bots by default do not like to choose the same action twice in a row.
action_panzer
/action_<team> <actionNumber> 14
A specialized camp action for a soldier with a panzerfaust. Soldiers with panzerfausts will prefer to
use this while other classes will ignore it.
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
Note: it's best to set up at least two of these in each goal_num you want them in. The reason for this is
because the bots by default do not like to choose the same action twice in a row.
action_nade
/action_<team> <actionNumber> 15
NOT IMPLEMENTED YET
action_engcamp
/action_<team> <actionNumber> 16
Intended for use only in dual_objective maps with dynamite goals as the main objectives. By default,
the engineers number one priority will be to plant dynamite. This action has an equal priority to
dynamite actions, so they will randomly choose to defend their own objective.
Advanced waypointers may chose to use these camps carefully in other styles of maps on the
following considerations;
Used for the defending team,
Only active when there are few engineer tasks and none of critical priority elsewhere in the
map,
Placement is such as to defend a high priority target,
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
25 of 51 03-Nov-2012 4:36 PM
The number of engineers playing exceeds the number of active engineer camps (typically just
1 engineer camp).
action_altroam
/action_<team> <actionNumber> 17
This is used for the route system and will be described in more detail in that section.
action_mg42camp
/action_<team> <actionNumber> 18
A camp action for fixed mg42's.
REQUIRES: the entity number of the mg42 (misc_mg42) to be defined with /action_ent
<actionNumber> <entity>
Note: this does not require an aim action
action_construct_major
/action_<team> <actionNumber> 19
A construct action for major constructions (bridges, ramps, etc)
REQUIRES: the entity number of the construct (trigger_obj_info on the materials) /action_ent
<actionNumber> <entity>
action_tank
/action_<team> <actionNumber> 20
NOT IMPLEMENTED YET
action_train
/action_<team> <actionNumber> 21
NOT IMPLEMENTED YET
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
26 of 51 03-Nov-2012 4:36 PM
action_cmdpost
/action_<team> <actionNumber> 22
An action for command posts
REQUIRES: the entity number of the command post(trigger_obj_info) /action_ent
<actionNumber> <entity>
note: for neutral command posts, covert ops will know when they need to satchel them. For
team-specific command posts, a satchel action will be required if you want them to destroy it.
action_smokecan
/action_<team> <actionNumber> 23
A smoke-can hint for covert ops. This is a secondary goal, meaning that if a covert op passes through
the radius of this action with a full chargebar, it will toss the smoke can in the direction of the center
of the action.
action_mineplant
/action_<team> <actionNumber> 24
A place for engineers to plant mines
REQUIRES: the action_ent on the mine plant actions is used to tell them how many mines to plant at
the actions' radius. The ent shouldn't be set to more than 3 for this, and typically it's best to set it to 2.
No more than 10 mine-plant actions can be active at once or the game will crash.
action_minehunt
/action_<team> <actionNumber> 25
A hint for covert ops to look for mines at a specific location
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
Note: covert ops by default will randomly look for mines, so this action isn't absolutely needed for
them to find them. The higher the skill level setting is for the bots, the better they are at spotting
them on their own (independent of this action)
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
27 of 51 03-Nov-2012 4:36 PM
action_subversion
/action_<team> <actionNumber> 26
NOT IMPLEMENTED YET
action_satchel
/action_<team> <actionNumber> 27
A satchel action for coverts to destroy minor constructs or command posts.
REQUIRES: the entity number of the construct (trigger_obj_info on the materials) /action_ent
<actionNumber> <entity>
action_mobilemg42_camp
/action_<team> <actionNumber> 28
A specialized camp action for soldiers with a mobile mg42. Soldiers with a mobile mg42 will prefer to
use this while other classes will ignore it.
REQUIRES: a link to an aim action /action_links <actionNumber> <aimAction>
Note: it's best to set up at least two of these in each goal_num you want them in. The reason for this is
because the bots by default do not like to choose the same action twice in a row.
action_button
/action_<team> <actionNumber> 29
NOT IMPLEMENTED YET
New with Fritz ET Ver. 0.70
action_unused
/action_<team> <actionNumber> 30
RESERVED FOR FUTURE USE
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
28 of 51 03-Nov-2012 4:36 PM
action_unused
/action_<team> <actionNumber> 31
RESERVED FOR FUTURE USE
action_plant_construct
/action_<team> <actionNumber> 32
This is a dynamite plant goal for constructible objects. This action can also be used for defusing
dynamite at constructs. Set action_prone to 1 to make it a priority defuse action.
REQUIRES: the entity number of the construct (trigger_obj_info on the materials) /action_ent
<actionNumber> <entity>
action_event_expire
/action_<team> <actionNumber> 33
Use this to catch certain entities leaving the game (like the tank barriers on goldrush).
REQUIRES: the entity number of the barrier (trigger_obj_info on the materials) /action_ent
<actionNumber> <entity>
action_event_explode
/action_<team> <actionNumber> 34
Use this to catch objects blowing up (like the doors on goldrush or the walls of fueldump).
REQUIRES: the entity number of the object (func_explosive) /action_ent <actionNumber>
<entity>
Action Groups
/action_group <actionNumber> <group>
Action grouping is extremely useful for managing actions in the aiscript. It's really important to keep
track of the actions you have in a particular group, and what the group is used for. At the bottom of
the Oasis.aiscript, you will see an example of one way to keep track of the groups:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
29 of 51 03-Nov-2012 4:36 PM
//ACTION GROUP DEFINITIONS// Group 1 - Allied Actions if they own flag and Old City Water Pump isn't constructed// includes actions: 35, 37, 38, 39
*Tip: using the command /action_group_info will list all the actions in a particular
group. For instance, /action_group_info 1 will list all actions in group 1 (in console).
So using this example, further up in the Oasis script, you will see how we can manipulate all 4 of
these actions with a single command:
action 4 // Old City Wall{ ...snip... //deactivate the allied actions in the old city deactivateAction_Group 1 ...snip...}
Listing the action groups at the bottom of the script is not necessary, but it's good to have for a
reference.
Action Classes
Action classes are used in some cases to limit actions to a certain class or classes.
/action_class <actionNumber> <bitFlag>
The bitFlag number for this is determined by using the following table:
0 - all classes1 - soldiers 2 - medics4 - engineers8 - field ops16 - covert ops
Example: Lets say we wanted action number 9 to only be used by field ops, engineers, and medics. To
do this, we look at the table above and add all the classes numbers together (8 field ops + 4 engineers
+ 2 medics = 14).
So /action_class 9 14 will set action 9 as only useable by field ops, engineers, and medics
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
30 of 51 03-Nov-2012 4:36 PM
Routes
By default, bots will travel to their goals using the shortest path. The route system gives a waypointer
the option to specify alternate routes for the bots to take. A full description of routing can be found in
The Route System.
The command for adding a route is: /route_add <radius> <team>
The full command for adding a route: /route_add <actions 1-6> <radius> <pathactions 1-6>
<team> does not seem to work.
The maximum number of routes in ET is 64 (0-63).
In Fritzbot ET, any action can be routed to. So, one fundamental change to route system is the
number of route_actions. In RTCW, you could only specify one action per route node. In ET, you can
specify up to 6.
Route properties:
/route_actions <routeNumber> <action1> <action2>....<action6> - sets the actions for the route/route_radius <routeNumber> <radius> - sets the route's radius/route_pathactions <routeNumber> <altRoam1> <altRoam2>...<altRoam6> - links the alt_roam actions to the route/route_team <routeNumber> <team> - sets route's team. 1 = axis, 2 = allies. Team is required/route_move <routeNumber> - moves the route to your current position
AI Scripts
AI Scripts are used to control the gameplay beyond what the Goal Tracker does. You can read more
about them here. Keep in mind that in ET, a lot of things have been added when reading through that
page. Hobbit's waypoint tool can be used when creating scripts for ET. Read about how it works here.
They can be edited in a text editor too if you prefer; name the file .aiscript and place it in ~/fritzbot
/bots/scripts. Place the header info at the top of the file and be sure to have an end-of-file code
(#EOF) at the bottom. If you're just starting to waypoint a new map, that's all that's necessary. You
can add action tests to it as the need arises.
The header has changed in ET and needs to be at the top of every aiscript in this exact order, with
the appropriate value for each parameter. The last two parameters can be omitted if the map has no
vehicles.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
31 of 51 03-Nov-2012 4:36 PM
bot_SightDist <dist> // How far the highest skill bot can see on this map (2000 - 3000 normally)spawnflag_is_priority <num> // Should bots focus on spawnflags? (0 = No, 1 = Yes)cmdpost_is_priority <num> // Are cmdposts critical on this map? (0 = No, 1 = Yes)construct_is_priority <num> // Should engs focus more on constructibles (0 = No, 1 = Yes)map_has_vehicle <num> // 0 = No, 1 = Tank/Truck, 2 = Trainvehicle_entity_number <ent> // Vehicle "script_mover" entity numvehicle_team_owner <num> // 1 = Axis, 2 = Allies
Below the header are action tests. Action tests are 'triggers' that are called after an event on the
particular action occurs during gameplay. The basic setup for an action test is:
action x // the action (x = the number of the action) { ..keywords go here.. }
A simple example of how it works is as follows. Say we have action 1 as a dynamite action at a wall.
And after the wall is destroyed, we want the bots to be able to go through it by connecting nodes 5
and 6:
action 1 // the wall { node_connect 5 6 true //true tells it to create a 2 way path }
The script system is used to control the bot responses to certain events in the map beyond what the
Goal Tracker does. Expanding on our example, lets say we want the bots to assist / defend our wall
plant and then when the wall is destroyed, have them move through to the next set of goals. Action
Group 1 will be the assist / defend wall plant actions for non-engineers and Action Group 2 will be the
actions we want to make available after the wall is destroyed:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
32 of 51 03-Nov-2012 4:36 PM
action 1 // the wall { node_connect 5 6 true // create a 2 way path deactivateAction_Group 1 // deactivate the action group we set up for the wall plant assist / defend activateAction_Group 2 // activate the actions on the other side of the wall that was just destroyed }
There are some actions / events in a map that will require conditional statements. An example is
barrier constructs. If a barrier is constructed, we will want to make sure nodes are disconnected so
the bots don't think that they can go through them. And when the barrier is destroyed, we want to
make sure the nodes are connected:
action 2 // a barrier construct { if_construct_built_true 2 // the conditional statement node_disconnect 7 8 true // what to do if the conditional statement is met if_construct_built_false 2 node_connect 7 8 true //barrier isn't built, connect the nodes }
There is a limit to the number of action tests that an aiscript file can have. (Empirically it seems to be
16 in rev. 0.70B final (a new beta with a limit of 32 is in its initial testing stage).)
Keywords
Keywords fall into 2 categories; conditionals and regular. Regular keywords can be used in the action
tests at any time. Conditionals require a regular keyword to be on the very next line. The following
are all of the keywords available: The maximum number of keywords allowed in an aiscript is 256.
node_connect
node_connect <node1> <node2> <true / false>
used to connect nodes after an action occurs. requires true or false at the end. true means create a 2
way connection between the nodes, and false means create a one way connection between the nodes
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
33 of 51 03-Nov-2012 4:36 PM
action 1 // test action{ node_connect 1 2 true //create a two way connection node_connect 3 4 false //create a one way connection}
node_disconnect
node_disconnect <node1> <node2> <true / false>
used to disconnect nodes after an action occurs. requires true or false at the end. true means
disconnect a 2-way connection between the nodes, and false means disconnect a one-way connection
between the nodes
action 1 // test action{ node_disconnect 1 2 true //disconnect a two-way connection node_disconnect 3 4 false //disconnect a one-way connection}
activateAction
activateAction <actionNumber>
Sets the actions goal number to match the goal tracker; activates it.
action 1 // test action{ activateAction 2 // activate action number 2 after action 1 occurs }
deactivateAction
deactivateAction <actionNumber>
Sets the actions goal number to -1; deactivates it.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
34 of 51 03-Nov-2012 4:36 PM
action 1 // test action{ deactivateAction 2 // deactivate action number 2 after action 1 occurs }
activateAction_Group
activateAction_Group <groupNumber>
Sets the goal number of all actions in a group to match the goal tracker; activates them.
action 1 // test action{ activateAction_Group 1 // activate action group number 1 after action 1 occurs }
deactivateAction_Group
deactivateAction_Group <groupNumber>
Sets the goal number of all actions in a group to -1; deactivates them.
action 1 // test action{ deactivateAction_Group 1 // deactivate action group number 1 after action 1 occurs }
resetNodeFlag
resetNodeFlag <nodeNumber> <nodeFlag>
used to reset a nodes flag after an even occurs. Most commonly used for spawn flag nodes when the
spawn flag disappears after an event. An example of this is on Oasis; when the Old City wall is
destroyed, the spawn flag is removed from the game.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
35 of 51 03-Nov-2012 4:36 PM
action 1 // test action{ resetNodeFlag 1 0 //set the node back to normal because the spawn flag is removed after this event occurs}
if_obj_home_false
if_obj_home_false <actionNum>
used for when the documents / gold / key is stolen. This is a conditional test and requires a regular
keyword to be on the next line.
action 1 // a steal action{ if_obj_home_false 1 //the action number here must be set to the steal actions number activateAction_Group 3 // activate actions near the deliver action if_obj_home_false 1 //you can't have 2 regular keywords after a conditional statement deactivateAction_Group 2 // deactivate the action group we had set up for defending the objective}
if_obj_home_true
if_obj_home_true <actionNum>
used for when the documents / gold / key is recovered. This is a conditional test and requires a
regular keyword to be on the next line.
action 1 // a steal action{ if_obj_home_true 1 //the action number here must be set to the steal actions number deactivateAction_Group 3 // deactivate actions near the deliver action if_obj_home_true 1 //you can't have 2 regular keywords after a conditional statement activateAction_Group 2 // activate the action group we have set up for defending the objective}
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
36 of 51 03-Nov-2012 4:36 PM
if_construct_built_false
if_construct_built_false <action_number>
used to manipulate nodes and / or actions based on the status of the construct.
action 2 // a barrier construct { if_construct_built_false 2 //the action number here must be set to the constructs action number node_connect 7 8 true //barrier isn't built, connect the nodes }
if_construct_built_true
if_construct_built_true <action_number>
used to manipulate nodes and / or actions based on the status of the construct.
action 2 // a barrier construct { if_construct_built_true 2 //the action number here must be set to the constructs action number node_disconnect 7 8 true //barrier is built, disconnect the nodes }
if_fda_owner_allies
if_fda_owner_allies <action_number>
used to manipulate nodes and / or actions based on the status of the flag.
action 2 // a spawn flag { if_fda_owner_allies 2 //the action number here must be set to the flags action number activateAction_Group 1 // allies have the flag, so activate these actions }
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
37 of 51 03-Nov-2012 4:36 PM
if_fda_owner_axis
if_fda_owner_axis <action_number>
used to manipulate nodes and / or actions based on the status of the flag.
action 2 // a spawn flag { if_fda_owner_axis 2 //the action number here must be set to the flags action number activateAction_Group 1 // axis have the flag, so activate these actions }
if_action_false
if_action_false <actionNumber>
Checks the goal number of an action to see if it has happened. It references the goal number of the
action. If the goal number is the current goal number or greater, it assumes that the action has not
happened.
For this example, let's say we have 2 walls that need to be destroyed to gain entry into an area and
you have 2 objectives behind the wall. Stalingrad is an example of this type of map setup. If one wall
is destroyed, the allied team can reach both main objectives to plant. So, in each action test for the
walls, certain action groups are activated. And because we aren't forcing a specific order for this, we
need to activate those actions in both wall tests. It is possible for one of the main objectives to be
destroyed before one of the walls is destroyed. Because of this, we want to check the status of the
tanks before activating any actions. This will keep them from attacking or defending a tank that has
already been destroyed.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
38 of 51 03-Nov-2012 4:36 PM
action 1 //western wall on Stalingrad { if_action_false 64 //west tank dynamite action activateAction_Group 3 //west tank actions (attack and defend for non-engineers) if_action_false 63 //east tank dynamite action activateAction_Group 2 //east tank actions (attack and defend for non-engineers) } action 2 //main gate on Stalingrad { if_action_false 64 activateAction_Group 3 //west tank actions if_action_false 64 activateAction_Group 5 //some more actions if_action_false 63 activateAction_Group 2 //east tank actions if_action_false 63 activateAction_Group 4 //some more actions }
if_action_true
if_action_true <actionNumber>
Checks the goal number of an action to see if it has not happened. It references the goal number of
the action. If the goal number is less than the current goal number, it assumes that the action has not
happened.
same principle as if_action_false, but checks to see if the action has happened already. see
if_action_false for an example script
if_obj_captured
if_obj_captured <actionNumber>
used in maps where a single deliver action doesn't end the map. Rommel_final is an example of this.
On Rommel_final, once the key is delivered, the script connects the nodes into the cystern area and
activates / deactivates actions so they can start this phase of the map
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
39 of 51 03-Nov-2012 4:36 PM
action 3 // key card on Rommel_Final{ if_obj_captured 3 node_connect 184 185 true //connect the nodes now that the key is captured if_obj_captured 3 activateAction 5 //activate the dynamite action if_obj_captured 3 activateAction_Group 3 //activate the water cystern actions (defend and attack) if_obj_captured 3 deactivateAction_Group 2 //deactivate the key card deliver actions (defend and attack)}
New with Fritz ET Ver. 0.70
if_allied_cp_built_true
if_allied_cp_built_true <action_number>
used to manipulate nodes and / or actions based on the status of the command post. Requires that
the command post action have the correct entity number, otherwise the game may crash.
action 7 // a command post { if_allied_cp_built_true 7 //the action number here must be set to the CP action number activateAction 23 // when the allies build the CP, activate action 23 }
if_allied_cp_built_false
if_allied_cp_built_false <action_number>
used to manipulate nodes and / or actions based on the status of the command post. Requires that
the command post action have the correct entity number, otherwise the game may crash.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
40 of 51 03-Nov-2012 4:36 PM
action 7 // a command post { if_allied_cp_built_false 7 //the action number here must be set to the CP action number deactivateAction 23 // if the allies have not built the CP, deactivate action 23 }
if_axis_cp_built_true
if_axis_cp_built_true <action_number>
used to manipulate nodes and / or actions based on the status of the command post. Requires that
the command post action have the correct entity number, otherwise the game may crash.
action 12 // a command post { if_axis_cp_built_true 12 //the action number here must be set to the CP action number activateAction 47 // when the axis build the CP, activate action 47 }
if_axis_cp_built_false
if_axis_cp_built_false <action_number>
used to manipulate nodes and / or actions based on the status of the command post. Requires that
the command post action have the correct entity number, otherwise the game may crash.
action 12 // a command post { if_axis_cp_built_false 12 //the action number here must be set to the CP action number deactivateAction 47 // if the axis have not built the CP, deactivate action 47 }
Logical Operators
The logical operators AND and OR can be used to combine a pair of conditional action tests.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
41 of 51 03-Nov-2012 4:36 PM
action 5 // an action test{// If BOTH the spawn flag is owned by the allies AND the construct is built, then action Group 9 // is activated
if_fda_owner_allies 3 AND if_construct_built_true 14activateAction_Group 9
// If EITHER the documents are home OR action 25 hasn't happened, then action 34 is activated
if_obj_home 2 OR if_action_false 25activateAction 34
}
An important thing to remember when using these operators is that they are called ONLY when the
particular action test is called. In some cases you will need to have the same statement inside both
action tests. For example, we want to have group activated only if a team holds a flag AND a construct
is not built:
action 1 // a spawn flag{
if_construct_built_false 2 AND if_fda_owner_allies 1activateAction_Group 3
}
action 2 // the construct action{
if_construct_built_false 2 AND if_fda_owner_allies 1activateAction_Group 3
}
This is necessary because there is no set order in which these actions are completed and because the
state of each of the actions may change during the game.
Now Fritzbot ET does not support brackets nor longer chains of logical operations in a single line.
Rarely is that a problem but in some more complex maps you may want to use a longer logical
condition. For those cases there are ways to extend the condition over multiple statements. A future
topic is being added to provide examples.
(For now I suggest reading the example in FritzBot_Buttons_And_Levers and note how action 6 is
used.)
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
42 of 51 03-Nov-2012 4:36 PM
set_Map_Has_Vehicle true/false
Sets whether or not there is a vehicle in the map that the bots should worry about. In goldrush, for
example, after the church doors are blown there is no further use for the tank, and after the gold
crates are loaded on the truck, the truck must be activated so it can be fixed and attacked.
set_Vehicle_Number <entity num>
Sets the entity number of the vehicle entering the game.
set_Vehicle_Owner Axis/Allies
Sets the current vehicle owner, determining who will fix it and who will attack it.
action 138 // the church door event_explode{
set_Map_Has_Vehicle false // remove the bots' interest in the current vehicle, the tank}
action 139 // the gold steal action{
if_obj_captured 139set_Map_Has_Vehicle true // alert the bots that there is a
new vehicle in the game
if_obj_captured 139set_Vehicle_Number 178 //script_mover entity number of the
truck
if_obj_captured 139set_Map_Owner Allies // Allies will fix and Axis will
attack the truck}
Wait
Delays execution of keywords.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
43 of 51 03-Nov-2012 4:36 PM
action 2 // an action test{
wait 5 // wait 5 seconds after action 2 occurs, then
activateAction_Group 3 // activate Group 3
activateAction_Group 7 // no wait for Group 7}
When the action test is called, it will wait 5 seconds before activating Group 3. It wil not wait 5
seconds to activate Group 7. The keyword must be on the very next line after the "wait." If you want a
delay for Group 7 as well, put an addtional "wait" just above that line. The maximum delay is 500
seconds.
The wait command can be stacked inside conditional statements as well.
action 5 // an action test{
if_construct_built_false 13 // when action 5 occurs and if the construct is built, then
wait 20 // wait 20 seconds, thenactivateAction_Group 6 // activate Group 6
}
kill_Action
Sets the actions type and group number to -1. Because the action type is -1 (invalid), even if the action
is activated, no bot will ever use it.
Used to permanently turn off an action, even if it is scripted to be turned on. Consider the case where
a dynamite plant action is carried out against a bridge construct. You want the dynamite plant action
#7 to be active when the bridge is standing and you want your engineers to ignore it when it is
destroyed. So you toggle it off and on like this:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
44 of 51 03-Nov-2012 4:36 PM
action 8 // a bridge construct action{// ...snip...// Toggle the bridge dynamite action if_construct_built_true 8 activateAction 7 // Dynamite the bridge if it has been built if_construct_built_false 8 deactivateAction 7 // Ignore the bridge if it has been destroyed// ...snip... }
But after the tank has crossed the bridge there is no need to keep blowing it up. Normally you would
deactivate both actions 7 and 8 to keep the bots away. But what if a human player decides to blow it
up anyway, and after he does another human on the other team rebuilds it? The action 8 test triggers
and action 7 gets activated. So we kill the dynamite action forever to prevent this.
action 9 // tank event_explode action when it crosses the bridge{
deactivateAction 8kill_Action 7
}
default
This defines a group of actions that will run at startup of the game. Usually these are actions that you
want to delay for a time after the game starts (to run actions without delays at game start, simply set
their goal_num to 0). Do not use "activateAction_Group 0" here because it is unnecessary and
will just cause a flurry of "no goals" spam at startup. The default group works just like action tests
except that it is run at startup and it ignores conditional statements.
The original purpose of this action test was to delay the activation of actions in Goal Number 0. Any
actions that are placed in goal number -1 (off) can be activated in goal number 0 with the default
action test.
REQUIRES that it be placed at the start of the aiscript immediately after the headers.
Here's an example from Caen2:
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
45 of 51 03-Nov-2012 4:36 PM
bot_SightDist 2000 // How far the highest skill bot can see on this mapspawnflag_is_priority 1 // Should bots focus on spawnflags?cmdpost_is_priority 1 // Are cmdposts critical on this map?construct_is_priority 1 // Should engs focus more on constructiblesmap_has_vehicle 1 // 0 = No, 1 = Tank, 2 = Trainvehicle_entity_number 188 // Tank "script_mover" entity numvehicle_team_owner 1 // 1 = Axis, 2 = Allies
default // Run these at game start{// Let Allied engineers complete minor tasks before blowing bridge
wait 20activateAction_Group 18 // Bridge dynamite_plant
// Activate Allied air-strike hint & roam at NW bldg corner// after initial contact has been made near iron gate
wait 45activateAction_Group 9
// <snip>}
note: it is not necessary to activate any actions or groups that are already set to goal
number 0 (because they are already on).
Debugging Aiscripts
For some ideas on how to debug your aiscript file see Debugging_Aiscripts.
ET Map Scripting
More Keywords
barrierRemove keyword
An important keyword not available in the aiscript that you may need is barrierRemove. This
Fritzbot-only keyword is used the used in the .script file to remove troublesome barriers from the
map, such as vent grates, barbed-wire barriers, and windows that a bot cannot punch though by
himself. If a simple obstruction blocks a bot's path he can usually break through on his own, but
cannot if it requires a grenade or if it isn't in his direct path.
The code to remove the obstruction must be installed in your map's .script file which you can find in
the map.pk3, located in /etmain. Its script is located in the "maps" folder of the map.pk3, along with
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
46 of 51 03-Nov-2012 4:36 PM
some other files. Open the map.pk3 with your unzip software and find the script file. It'll have the
same name as the map with a .script extension. Click on it and drag a copy to your fritzbot/maps
folder. Do not remove the original from the pk3. If the fritzbot/maps folder is missing, create it first.
Make sure that you have set /sv_pure 0 so your soon-to-be modified version of the script will be used
when you run the map (instead of the original in the .pk3).
Using a text editor, insert the barrierRemove trigger code into the script file at the beginning of the
file as shown for each barrier that you want to remove. Use the "func_explosive" entity number. Each
removed entity must be in its own "trigger". Include your modified file with your waypointing
package when you release it.
Here's an example from Foo Fighter:
game_manager // part of the map script file{ // ditto
spawn // ditto{ // ditto
barrierRemove // Window glass for axis panzer
{129
}
barrierRemove // Window glass for sniper{
139}
// <remainder of the map script file>
More Advanced Script Options
Fritzbot supports ETPro map scripting; which makes it possible to create entities in maps. Originally
implemented for dynamiting the back door on Seawall Battery, other uses were soon realized. For
some information about how to modify map scripts for use with Fritzbot, a reference is available
here: Fritzbot_Map_Scripting
How to waypoint with tanks
By default, the bots know where an active vehicle is and will escort, fix, and attack it automatically.
But it will be as a mob. It would be better if the attack and defense actions could be choreographed to
move along with the vehicle. Panzer positions could be set up ahead of the vehicle, barriers
constructed before it gets there, and defenses that are left behind shut down. To accomplish this, you
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
47 of 51 03-Nov-2012 4:36 PM
need to know where the vehicle is, or more specifically, when it has reached pre-determined
checkpoints. A detailed step-by-step procedure to do this is described in Creating a fake toi.
Waypointing Aids
Pre-release Checklist
TomTom has prepared a Fritzbot ET Waypoint Pre-release Checklist to help you remember all the
little details that need to be checked before releasing your waypoints for general public use. Make
good use of it!
Making a Waypointing Configuration File
coming soon
Waypointing Quick reference
coming soon
Waypoint Troubleshooting
Problem: bots are standing in place and spamming that they are stuck and have no goals.
The first thing to do in this case it to type bot_pause 1 to get the "no goals" messages to stop. Then do
the following:
check to make sure they have actions available in the current goal (/goal_num in console to
find current goal)
check the pathing to make sure they can reach the goals
double-check the nodes properties along a path to make sure the node_team is correct for
them all
check the aiscript to make sure you are turning on the actions at the right time
Problem Engineer bots sometimes stand around with or without spamming Error messages.
Review all engineer actions as to their triggers.
If using the goal tracker (trigger by goalnums) verify that it is impossible for any of the
engineer actions (dynamite, construct etc.) to be enabled prior to becoming accessible.
Remember that the goal tracker does not differentiate between dynamite actions and that
human players may not play by the rules.
If using the aiscript to trigger the engineer actions verify that actions or action-groups
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
48 of 51 03-Nov-2012 4:36 PM
are properly and completely handled whenever the paths to the engineer actions may be
affected. Pay particular attention to the effect of re-constructible barriers.
Verify the engineer actions' closenode values are not for nodes with flags that are problems
such as;
Nodes that are team specific for the opposite team only.
Nodes that are flagged for jumps or leaps (can be a problem).
Problem: can't get an action to work like I want it to
Most actions are fairly simple to set up, but some can be tricky at times
open a nav file that came with the fritzbot release and look to see how a similar action has
been set up
ask questions in the waypoint forum. A lot of help is available there
Problem: Fritz is crashing when I load a specific map
if it crashes before you get to limbo there may be an serious error in one of the files. Verify
that the #EOF appears at the end of the aiscript and bots file. Look for unclosed action test
blocks, verify that you have not exceeded the maximum number of action tests and keywords.
Check for spelling errors in keywords.
verify that the map itself is not the problem by loading it in plain vanilla ET.
start the map without the .aiscript file (rename, move or delete the .aiscript then start
fritzbot). If still crashing try loading without the .bots file and any modified .script file.
if the map crashes after the warmup then it might be the .nav file
Problem: Fritz is crashing at certain times while testing new waypoints
Remove any bot config files that you may have for your map, start the node editor and do the
following:
double check the entity numbers you have set for all constructs (command posts included)
if a construct disappears on a map after a certain event happens, be sure to disable that action
in the script
Problem: bots are getting stuck on walls or in doorways
There are a few reasons this may happen. Go to the spot they are getting stuck and do the following:
double check the node connections to make sure the pathing isn't going through the walls
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
49 of 51 03-Nov-2012 4:36 PM
type cg_drawradius 1 and check the radii in the area
if it's a construct or dynamiteable, check the script and make sure the node connection is set
up correctly
Problem: Covert Ops are standing in place doing nothing
This will happen if it has a goal that it can't reach:
double check pathing to every available covert ops specific action (satchel actions)
double check the entity numbers for the satchel actions
Problem: Engineer is planting dynamite repeatedly even after the objective is destroyed
This can happen because of a couple of reasons:
double check the entity number of the dynamite action. it should be the
trigger_objective_info entity
double check and make sure that the dynamite action is not set to active forever
(action_active 0 is recommended)
you may have a map with multiple-stage constructions that can't be completed at one
construct. The bots cannot handle this situation ATM.
Problem: Changes to the waypoint don't seem to be saving
A few things may cause this:
make sure you are doing a /node_save and then a /map_restart
make sure you don't have the waypoints inside of a pk3 file in the fritzbot directory
if you are editing nodes with the waypoint tool, sometimes you will have to restart fritz to see
the changes
Gameplay / Balance
Gameplay and Balance are the most important things to test in waypoints. If gameplay is bad and / or
the map is too hard or too easy to win, then your waypoints aren't ready to release. The best thing to
do is to play the map a lot on both teams. This will help find areas in the map that a human player
may be able to 'exploit'. In these areas, add some actions to help prevent it. It's a good thing if the bots
give each other a nice balanced game, but at this point of the waypoint development we should start
to focus on what human players will experience. After all, we aren't creating the waypoints for the
bots to play by themselves :p
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
50 of 51 03-Nov-2012 4:36 PM
When you think you have waypointed the gameplay so that the bots will defend / use the map to
prevent a human player unreasonably exploiting anything, it is a good idea to check balance for the
two teams. You cannot expect to have properly tested the map in even a half-dozen plays and unless
you can 'exploit' some friends, this means all your time playing both teams in different roles and
tallying the results. However you can also run unattended games with no human players (since bots
don't sleep) and get the results afterwards. More on how to do this can be found in
Unattended_Testing_Methods.
Tweaking the Balance
There are some maps where no matter what waypoint tweaks you make, the balance isn't quite right.
In this case, adjusting the spawntimes is recommended. Some people may think that isn't a good idea,
but the real thing that matters is how the gameplay feels. This is a mod, so adjusting spawn times to
improve gameplay seems reasonable to me. It should however be used as a last resort and most likely
will require a lot of testing to get it just right.
If it gets to the point where you find that you need to adjust spawn times a little, open up the map's
pk3 file and make a copy of the <mapname>.script file. Place that file in ~Fritzbot/maps and open it
in your favorite text editor. At the top of the file you will see something similar to this:
// Game ruleswm_axis_respawntime 30wm_allied_respawntime 20
Adjust these in small increments until you find the right balance. Once you are happy with how the
game feels, you are ready to release the waypoints for others to try and test. You can expect feedback
on the waypoints and that is a good thing. Ultimately they will be packaged with the next release of
Fritzbot and become official waypoints.
Releasing Waypoints
Once you are ready to post or send files, it's best to package them into a pk3 file. Grab this file here
and read the readme included.
Include in the pk3 file some text file identifying revision, author, date and other things of special
note. The preferred revision-readme form is here README-_mapname_revM.mm.txt
After getting the waypoint files packaged into a pk3, you can post them to the filebase or email them
to one of the Fritzbot team members for testing / posting.
FritzBot ET - Bots-United Wiki http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...
51 of 51 03-Nov-2012 4:36 PM