

Als Wait bezeichnet man eine Aktion, die den Auslöser eine bestimmte Zeit warten lässt, also pausiert. In Warcraft III gibt es dafür drei verschiedene Arten von Aktionen.
Inhaltsverzeichnis |
Es gibt verschiedene Arten von Waits, die sich in ihrer Funktion minimal unterscheiden. Hier wird jeweils der Name der Aktion im Auslöser-Editor angegeben:
Dieses Wait pausiert den Auslöser für genau die Zeit, die angegeben wird. Deshalb wird sie auch Realtime Wait genannt. Gerechnet wird dabei mit der Uhr, im lokalen Computer. Dieses Wait ist asynchron.
Entspricht der Funktion TriggerSleepAction.
Dieses Wait wird im Gegensatz zum Realtime Wait mit dem Server synchronisiert, um Netsplits zu verhindern. Realisiert wird dies durch einen unsichtbaren Timer. Da ein Timer verwendet wird, ist die Auflösung aka Genauigkeit des Waits leider nicht sehr hoch. Der Wert wird bestimmt durch die Konstante bj_POLLED_WAIT_INTERVAL und beträgt 0,1 Sekunden.
Entspricht der Funktion PolledWait.
Pausiert den Auslöser bis eine bestimmte Bedingung erfüllt ist. Bedingung und Häufigkeit der Überprüfung können konfiguriert werden. Das kleinste mögliche Intervall für die Überprüfung entspricht der Konstante bj_WAIT_FOR_COND_MIN_INTERVAL und beträgt 0,1 Sekunden.
Dies ist die genaueste Variante ein Wait durchzuführen, dafür etwas umständlicher. Mehr dazu siehe Timer
Eine nicht sehr bekannte Tatsache ist, dass viele Funktionen, so etwa Last Created Unit, Casting Unit, Target Unit Of Issued Order, Last Created Destructable und viele andere, so genannte Globale Variablen sind. Das bedeutet, dass es sie nur genau einmal für alle Trigger gibt und dass sie vom ganzen Spiel aus von jedem Trigger theoretisch modifiziert werden können. Dabei kann es zu sehr schwer auffindbaren Fehlern kommen.
Blizzard hat viele Auslöser, die wir nicht kennen, die auf Globale Variablen zugreifen. Daher kann der Inhalt dieser Variablen praktisch jederzeit verändert werden. Ohne Waits ist das kein Problem. Sobald wir in einem Trigger warten, werden die Daten in allen Globalen Variablen inkonsistent, das heißt, es ist nicht mehr sicher, ob das drin ist, was wir wollen.
Create Units
Ereignisse

Zeit - Every 5.00 seconds of game time
Bedingungen
Aktionen

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees

Wait 0.20 seconds

Einheit - Create 1 Soldat for Spieler 1 (Rot) at (Random point in (Playable map area)) facing Vorgabe für Gebäude-Ausrichtung degrees
Ping Units
Ereignisse

Einheit - A unit enters (Playable map area)
Bedingungen
Aktionen

Wait 2.50 seconds

Video - Ping minimap for (All players) at (Position of (Last created unit)) for 1.00 secondsIn diesem Beispiel werden alle 5 Sekunden nacheinander eine Reihe von Soldaten gespawnt. Diese sollen jeder einzeln nach 2,5 Sekunden nach ihrem Erstellen angepingt werden. Stattdessen wird nur der letzte angepingt. Alle Trigger teilen sich die Last Created Unit, und jedes Erstellen einer Einheit überschreibt sie wieder. Alle Trigger greifen dann auf die selbe Variable zu, in der nur die letzte Einheit gespeichert ist, die erstellt wurde. Deshalb wird nur die letzte Einheit mehrfach gepingt.
Die einfachste Möglichkeit, dieses Problem zu umgehen, ist Lokale Variablen zu verwenden.

Kroatien (wir berichteten), spielt
Österreich bei der Clanbase Nations League heute einen vorentscheidenden War gegen die starke Mannschaft aus
Tschechien. Am heutigen mehr...