Sie sind auf Seite 1von 51

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

1 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

2 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

3 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

4 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

5 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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


6 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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:

7 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

addbot fritz addbot 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 available addbot 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)

8 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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)

9 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

10 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

11 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

12 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

13 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

14 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

15 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

/node_flag <nodeNumber> <flagNumber> /node_radius <nodeNumber> <radius> /node_ent <nodeNumber> <entity>


for spawn flags)

- sets the node flag - sets the node radius - sets the node entity (only used - sets the usability of the node - sets the node group (leave at

/node_team <nodeNumber> <team>


to only one team (1 axis, 2 allies)

/node_group <nodeNumber> <group>


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

- moves the node to your current

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

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 -NODE_INVALID NODE_NORMAL NODE_LADDER_TOP NODE_LADDER_BOTTOM NODE_SPAWNFLAG NODE_BUTTON NODE_JUMP NODE_LEAP NODE_CONSTRUCTABLE NODE_WALK -- FLAG NUMBER --1 <- a null node type (not valid!) 0 <- the default 1 <- node is at the top of a ladder 2 <- node is at the bottom of a ladder 3 <- node is next to a spawnflag 4 <- not used yet 5 <- bots will jump between nodes with this flag set 6 <- a one-way jump - low health bots beware! 7 <- not used 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.

16 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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
17 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

/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
18 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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:

19 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

/action_axis <actionNumber> <actionType> /action_allies <actionNumber> <actionType> /action_radius <actionNumber> <radius> /action_ent <actionNumber> <entityNumber> /action_active <actionNumber> <foreverNumber>
number should be active forever (1 yes, 0 no) for further discussion.

sets sets sets sets sets

the axis action type the allied action type the radius the entity number whether the action

See Fritzbot_Goal_Tracker

/action_group <actionNumber> <groupNumber> /action_goal <actionNumber> <goalNumber> /action_class <actionNumber> <classesNumber>


this action

- sets the group number - sets the goal number - sets which classes can use

- 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_prone <actionNumber> <proneNumber>

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

20 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

in the aiscript are marked with an asterisk . -- ACTION TYPE -ACTION_INVALID ACTION_CAMP ACTION_MG42 *ACTION_CONSTRUCT_MINOR ACTION_AIM camping *ACTION_DYNAMITE *ACTION_DEFUSE *ACTION_SPAWNFLAG ACTION_DELIVER objects *ACTION_STEAL steal ACTION_DEFEND ACTION_AIRCAN ACTION_ARTY ACTION_ROAM ACTION_SNIPE ACTION_PANZER ACTION_NADE yet implemented) ACTION_ENGCAMP maps only) ACTION_ALTROAM ACTION_MG42CAMP mg42 marker *ACTION_CONSTRUCT_MAJOR bridges, water pumps ACTION_TANK ACTION_TRAIN *ACTION_CMDPOST ACTION_SMOKECAN ACTION_MINEPLANT ACTION_MINEHUNT ACTION_SUBVERSION implemented) ACTION_SATCHEL ACTION_MOBILEMG42_CAMP ACTION_BUTTON (not yet implemented) ACTION_UNUSED ACTION_UNUSED *ACTION_PLANT_CONSTRUCT *ACTION_EVENT_EXPIRE *ACTION_EVENT_EXPLODE --1 0 1 2 3 4 5 6 7 ACTION NUMBER -<- the default, a NULL action. <- short-term camping goal <- marker for a fixed mg42 <- marker for minor things: MG42s, towers <- tells the bot where to look while <<<<dynamite non-constructible objects defuse dynamite marks a spawn flag marks the delivery point for stolen

8 <- marks the location of an object to 9 10 11 12 13 14 15 <<<<<<<long term place to camp airstrike hint artillery hint (not yet implemented) patrol location sniper camp for coverts panzer camp for soldiers grenade goal for barriers, etc. (not

16 <- camp for engineers (for dual-objective 17 <- route destination 18 <- fixed mg42-camp goal, doubles as a 19 <- MAJOR construction goals, like 20 21 22 23 24 25 26 <<<<<<<for tanks (not yet implemented) railgun train (not yet implemented) command post smoke-can hint for coverts area to plant mines area to spot mines area to sneak into (not yet

27 <- covert's satchel goal 28 <- camp for mobile mg42 soldiers 29 <- button or lever a bot needs to use 30 31 32 33 34 <<<<<reserved reserved dynamite a constructible object catches entities leaving the game catches walls or doors blowing up

21 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

22 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

23 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

24 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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,

25 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

26 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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)

27 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

28 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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:

29 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

//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 classes 1 - soldiers 2 - medics 4 - engineers 8 - field ops 16 - 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

30 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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>


the actions for the route

- sets - sets

/route_radius <routeNumber> <radius>


the route's radius the alt_roam actions to the route

/route_pathactions <routeNumber> <altRoam1> <altRoam2>...<altRoam6> - links /route_team <routeNumber> <team>


route's team. 1 = axis, 2 = allies. Team is required - sets - moves

/route_move <routeNumber>
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.

31 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

bot_SightDist <dist> see on this map (2000 - 3000 normally) spawnflag_is_priority <num> (0 = No, 1 = Yes) cmdpost_is_priority <num> map? (0 = No, 1 = Yes) construct_is_priority <num> constructibles (0 = No, 1 = Yes) map_has_vehicle <num> vehicle_entity_number <ent> vehicle_team_owner <num>

// How far the highest skill bot can // Should bots focus on spawnflags? // Are cmdposts critical on this // Should engs focus more on // 0 = No, 1 = Tank/Truck, 2 = Train // Vehicle "script_mover" entity 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:

32 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

33 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

34 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

35 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 }

36 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 }

37 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

38 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

39 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

40 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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.

41 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 14 activateAction_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 25 activateAction 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 1 activateAction_Group 3 } action 2 // the construct action { if_construct_built_false 2 AND if_fda_owner_allies 1 activateAction_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.)

42 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 139 set_Map_Has_Vehicle true new vehicle in the game if_obj_captured 139 set_Vehicle_Number 178 truck if_obj_captured 139 set_Map_Owner Allies attack the truck }

// alert the bots that there is a

//script_mover entity number of the

// Allies will fix and Axis will

Wait
Delays execution of keywords.

43 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

action 2 // an action test { wait 5 occurs, then activateAction_Group 3 activateAction_Group 7 }

// wait 5 seconds after action 2 // activate Group 3 // 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 construct is built, then wait 20 activateAction_Group 6 }

// when action 5 occurs and if the // wait 20 seconds, then // 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:

44 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 8 kill_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:

45 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

bot_SightDist 2000 this map spawnflag_is_priority 1 cmdpost_is_priority 1 construct_is_priority 1 map_has_vehicle 1 vehicle_entity_number 188 vehicle_team_owner 1

// How far the highest skill bot can see on // // // // // // Should bots focus on spawnflags? Are cmdposts critical on this map? Should engs focus more on constructibles 0 = No, 1 = Tank, 2 = Train Tank "script_mover" entity num 1 = Axis, 2 = Allies

default // Run these at game start { // Let Allied engineers complete minor tasks before blowing bridge wait 20 activateAction_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 45 activateAction_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

46 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 { spawn { // // // // part of the map script file ditto ditto ditto // Window glass for axis panzer

barrierRemove { 129 } barrierRemove { 139 }

// Window glass for sniper

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

47 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

48 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

49 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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

50 of 51

03-Nov-2012 4:36 PM

FritzBot ET - Bots-United Wiki

http://web.archive.org/web/20070924190336/http://wiki.bots-united.com...

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 rules wm_axis_respawntime wm_allied_respawntime

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

51 of 51

03-Nov-2012 4:36 PM

Das könnte Ihnen auch gefallen