Benutzer-Werkzeuge

Webseiten-Werkzeuge


tutorials:ausloeser

Auslöser

FIXME es fehlen Beispiele

Wie schon in Allgemeines beschrieben, beruht ein Skript auf Ereignissen, Bedingungen und Aktionen.
Das Spiel stellt bestimmte Ereignisse automatisch bereit.

Das wohl bekannteste Auslöser-Ereignis ist der SimpleJob oder Job, der nichts anderes als das Ereignis „jede Sekunde“ ist. Ein weiteres bekanntes Auslöser-Ereignis ist der SimpleHiResJob oder HiResJob, hinter ihm steckt das Ereignis „jeder Tick“ (normalerweise eine Zehntelsekunde). Doch dass es auch noch andere Ereignisse gibt, die vom Spiel bereit gestellt werden, wissen die meisten Skripter nicht oder haben sich bisher nicht damit beschäftigt.

Man kann die Auslöser auch, anders als in Simple(HiRes)Jobs, auch in Bedingung und Aktion aufteilen. Dies fördert die Übersichtlichkeit.
Außerdem kann man bei bestimmten Ereignissen bestimmte Ereignis-Funktionen aufrufen.

Nun soll eine nähere Erläuterung der Auslöser-Funktionalität folgen. Hier wird nicht die volle Funktionalität der Auslöser erläutert, eine Auslistung der Ereignisse finden Sie hier und weitere Informationen zu den Auslöser-Funktionen finden Sie hier.

Einen Auslöser erstellen

Einen Auslöser kann man über die Funktion Trigger.RequestTrigger() erstellen. Die Parameter für die Funktion sind (in dieser Reihenfolge)

  • das Ereignis
  • der globale Name der Bedingungs-Funktion
  • der globale Name der Haupt-Funktion
  • ist der Auslöser zu Beginn aktiv/inaktiv (1/0)
  • Parameter für die Bedingungs-Funktion
  • Parameter für die Haupt-Funktion

Eine Bedingungs-Funktion muss nicht vorhanden sein. Wenn sie nicht vorhanden ist, wird die Haupt-Funktion automatisch aufgerufen, sonst muss die Bedingungs-Funktion „true“ zurückgeben.

Die beiden letzten Parameter können auch fehlen und sind nur für größere Projekte wichtig. Sie werden als Table übergeben und können Werte der folgenden Typs enthalten:

  • Zahlen
  • Strings
  • Wahrheitswerte

Tables und Funktionen führen allerdings zu einem Zwischenspeicher-Error. Dafür wurde dieser Trigger-Fix entwickelt.

Die Haupt-Funktion kann durch die Rückgabe von „true“ den Auslöser löschen.

Einen Auslöser de-/aktivieren

Hierzu möchte ich nicht viel schreiben. Auslöser können durch Trigger.DisableTrigger() und Trigger.EnableTrigger() de-/aktiviert werden. Wenn der Auslöser allerdings nicht mehr benötigt wird, so sollte er gelöscht werden und nicht nur de-/aktiviert werden.

Einen Auslöser löschen

Ein Auslöser kann durch Trigger.UnrequestTrigger() gelöscht werden. Da vielen Skriptern allerdings dieser Funktions-Name zu lang ist, verwenden sie die Funktion EndJob.

Ein Auslöser muss nicht über diese Funktion gelöscht werden, sondern kann auch durch die Haupt-Funktion, indem sie „true“ zurückgibt, beendet werden.

tutorials/ausloeser.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)