51
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

FritzBot ET - Bots-United Wiki

Embed Size (px)

Citation preview

Page 1: FritzBot ET - Bots-United Wiki

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

Page 2: FritzBot ET - Bots-United Wiki

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

Page 3: FritzBot ET - Bots-United Wiki

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

Page 4: FritzBot ET - Bots-United Wiki

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

Page 5: FritzBot ET - Bots-United Wiki

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

Page 6: FritzBot ET - Bots-United Wiki

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

Page 7: FritzBot ET - Bots-United Wiki

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

Page 8: FritzBot ET - Bots-United Wiki

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

Page 9: FritzBot ET - Bots-United Wiki

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

Page 10: FritzBot ET - Bots-United Wiki

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

Page 11: FritzBot ET - Bots-United Wiki

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

Page 12: FritzBot ET - Bots-United Wiki

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

Page 13: FritzBot ET - Bots-United Wiki

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

Page 14: FritzBot ET - Bots-United Wiki

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

Page 15: FritzBot ET - Bots-United Wiki

--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

Page 16: FritzBot ET - Bots-United Wiki

/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

Page 17: FritzBot ET - Bots-United Wiki

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

Page 18: FritzBot ET - Bots-United Wiki

/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

Page 19: FritzBot ET - Bots-United Wiki

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

Page 20: FritzBot ET - Bots-United Wiki

/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

Page 21: FritzBot ET - Bots-United Wiki

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

Page 22: FritzBot ET - Bots-United Wiki

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

Page 23: FritzBot ET - Bots-United Wiki

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

Page 24: FritzBot ET - Bots-United Wiki

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

Page 25: FritzBot ET - Bots-United Wiki

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

Page 26: FritzBot ET - Bots-United Wiki

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

Page 27: FritzBot ET - Bots-United Wiki

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

Page 28: FritzBot ET - Bots-United Wiki

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

Page 29: FritzBot ET - Bots-United Wiki

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

Page 30: FritzBot ET - Bots-United Wiki

//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

Page 31: FritzBot ET - Bots-United Wiki

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

Page 32: FritzBot ET - Bots-United Wiki

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

Page 33: FritzBot ET - Bots-United Wiki

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

Page 34: FritzBot ET - Bots-United Wiki

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

Page 35: FritzBot ET - Bots-United Wiki

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

Page 36: FritzBot ET - Bots-United Wiki

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

Page 37: FritzBot ET - Bots-United Wiki

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

Page 38: FritzBot ET - Bots-United Wiki

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

Page 39: FritzBot ET - Bots-United Wiki

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

Page 40: FritzBot ET - Bots-United Wiki

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

Page 41: FritzBot ET - Bots-United Wiki

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

Page 42: FritzBot ET - Bots-United Wiki

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

Page 43: FritzBot ET - Bots-United Wiki

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

Page 44: FritzBot ET - Bots-United Wiki

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

Page 45: FritzBot ET - Bots-United Wiki

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

Page 46: FritzBot ET - Bots-United Wiki

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

Page 47: FritzBot ET - Bots-United Wiki

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

Page 48: FritzBot ET - Bots-United Wiki

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

Page 49: FritzBot ET - Bots-United Wiki

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

Page 50: FritzBot ET - Bots-United Wiki

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

Page 51: FritzBot ET - Bots-United Wiki

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