Triggers

## What is a trigger

A trigger is something that happens in the map.
The most common triggers are text triggers & sound triggers.
Using the goldrush map as an example, when the 1st tank barrier is blown up you will see this text come up on your screen & in console

Tank Barrier #1 has been destroyed.

This is an example of a text trigger.
The next example is of a sound trigger, when the tank is past the barrier you will hear a sound saying "The tank is past the 1st barrier" but this time you will not see any message.

### Locating the "MISSING\_STRING"

For this part we are only interested in the "global OnMapLoad = function()" section of the script.

You will see in there something like this:

```

 OnTrigger( "MISSING\_STRING", Map.Main\_Entrance\_Destroyed );
 OnTrigger( "MISSING\_STRING", Map.documents\_Taken );

```

Now you need to find out what the actual trigger should be to replace the "MISSING\_STRING" section of the line.

There are 3 ways you can do this.

1) Copy the text you see in the console. This is not a perfect method because some map makers add colour tags.

2) Open the map PK3 file. A PK3 file is just a Zip file that has been renamed. You can open it in any Zip program. Then locate file <mapname>.script in the maps folder. Extract that file from the archive and open it in your text editor. You need to search the script for text such as wm\_announce or wm\_teamvoiceannounce.

3) To find the trigger text you need to open the console & type the following command.

```
    /bot debugtriggers

```

Now all you need to do is play the map & read the console messages.

Example:

```
    <---> Trigger: TagName: The Tank has been repaired! Action: announce Entity: (698:1) Activator: (-1:0)

```

Here we need to use the TagName as the trigger. From this trigger text you just use this section of text

```
    The Tank has been repaired!

```

**Tip:** Rather then coping text from the console you can save it by using the /condump command.
Just add a filename after the command

/condump filename.txt

You will then find this in you mod folder (omnibot in this case) called filename.txt or whatever name you have called it.

**Note:** The maximum supported length is 71 chars. That's why in Marrakesh Streets 2 By Night script you will read:

```
    ^D***^WAllied team have constructed a command post.  Charge speed incre

```

One less or one more doesn't work well usually.

### Understanding what you have done

Each time something happens in the map such as the allies destroying the main entrance the bots need a way to know this. Replacing the "MISSING\_STRING" with actual text that happens in the map will run a command to go to a section in the 'global Map'

Now when the example text of "Allies have destroyed the main entrance" comes up in the game, the command "Map.Main\_Entrance\_Destroyed" is run, this directs the script to the section in 'global Map' called "Main\_Entrance\_Destroyed = function( trigger )"

```

global Map =
{
 Main\_Entrance\_Destroyed = function( trigger )
 {
 //This is where you would add new instructions

 Util.MapDebugPrint( "Main\_Entrance\_Destroyed" );
 },
};

global OnMapLoad = function()
{
 OnTrigger( "Allies have destroyed the main entrance", Map.Main\_Entrance\_Destroyed );
};

```

Command /bot makemapgm is not perfect and you will sometimes need to create extra triggers.

### Supported Triggers

Most events in ET will fall into the following Omni-Bot recognized categories:

* allied\_complete
* allied\_default
* allied\_failed
* announce
* announce\_icon
* axis\_complete
* axis\_default
* axis\_failed
* defused
* dynamited
* exploded
* faceangle
* mover\_goto x y z
* moving
* opened
* closed
* opening
* closing
* returned
* stolen
* team\_announce

**NOTE:** For the returned trigger (i.e. documents returned) use /bot debugtriggers output for when the flag is returned by expiring (no player returns it). If the regular wm\_announce message is used, the event that occurs when the flag expires will not be used. It is recommended to manually steal the flag, /kill and wait for them to be automatically returned. An example can be found in radar.gm. Most of the time it will be something like "Flag returned flag!"