Zeitbasierende Events

Dieser Artikel beschreibt zeitbasierende Events. Dabei handelt es sich um Events, die nur an bestimmten Zeitpunkten wirken (z.B ein NPC, welchen man nur Freitags antrifft) oder die nur einmal in bestimmten Zeitabständen ansprechbar sind (z.B dass man einen NPC nur alle 24 Stunden ansprechen kann).

Inhalt

Script-Switches

Siehe auch: Events

Alle zeitbasierende Events müssen wissen, wann sie in Aktion treten und wann nicht. Man kann das durch globale Switches erledigen (siehe den Hauptartikel für mehr Informationen).

Da dieser Artikel zeitbasierende Events beschreibt, werden diese entsprechende globalen Switches benutzen. Man kann allerdings auch seine eigene Switches erstellen, die die passende Zeit bestimmen.

Zu bestimmten Tageszeiten

Diese Events werden nur zur bestimmten Tageszeiten aktiv sein (z.B zwischen 18 und 20 Uhr am Tag oder nur am Freitag).

Typische Verwendungszwecke dafür sind:

  • Ein bestimmtes wildes Pokémon, welches man nur nachts begegnen kann.
  • Ein NPC, das nur zu bestimmten Tageszeiten zu sehen ist.
  • Ein Trainer, welches nur nachts kämpft.
  • Ein Preis/Geschenk, welches nur zur einer bestimmten Zeit verfügbar ist.

Events wie diese sollten folgendermaßen aufgebaut sein:

  • Seite 1  Das Event, wie es an den anderen Zeiten erscheint. Dies kann einfach nur leer sein oder der NPC besitzt einen bestimmten Dialog.
  • Seite 2 – Das Event, wie es zu der bestimmten Tageszeit erscheint (z.B dass es einen zum Kampf herausfordert). Dieses Event besitzt als Bedingung einen oder mehrere Script-Switches.
  • Optionale weitere Seiten – Das Event, wie es zu einer weiteren bestimmten Tageszeit erscheinen könnte oder ein Gespräch, nachdem man es in einen Kampf besiegt hat.

Mit Wartedauer

Sobald das Event angesprochen wurde, fängt es an die Zeit zu zählen. Man kann es dann erst wieder ansprechen, wenn eine bestimmte Zeit vergangen ist (z.B 24 Stunden). Spricht man es vorher an, dann wird ein anderer Ablauf im Event geschehen (z.B ein Text wie „Komm bitte morgen wieder.“).

Typische Verwendungszwecke dafür sind:

  • Ein NPC, das einem alle 24 Stunden ein Geschenk gibt.
  • Eine Lotterie, die man nur alle 24 Stunden spielen kann.
  • Ein Beeren-/Aprikokobaum, das nur alle 24 Stunden blüht.
  • Ein Kopfnussbaum, welches nur dann ein wildes Pokémon fallen lässt, wenn mindestens eine Stunde vergangen ist.
  • Ein Switch, welches eine Tür nur für bestimmte Zeit öffnet.
  • Eine Reihe von wilden Pokémon, die nur für 24 Stunden auftauchen.

Seite 1

Die erste Seite beschreibt die primäre Funktion. Zusätzlich beginnt der Script, um die Zeit zu zählen. Um diesen Zähler zu aktivieren, verwende folgende Methode:

Diese Methode setzt die persönliche Variable des Events auf die aktuelle Zeit. Zusätzlich wird der Self Switch A auf ON gestellt. Nachdem diese Methode verwendet wurde, sollte das Event zu Ende sein.

Man kann diese Methode verwenden, um mehrere Events zu beeinflussen. Dazu muss man nur die Event IDs der anderen Events als Argument mitangeben:

Bei diesem Beispiel wird die persönliche Variable des Events auf die aktuelle Zeit gesetzt und Self Switch A wird auf ON gestellt. Dasselbe gilt für die Events 2 und 3 derselben Map. Beachte, dass nur Events derselben Map beeinflusst werden können.

Seite 2

Die zweite Seite beschreibt, was passiert, wenn der Spieler das Event anspricht, während dieses noch zählt (die Zeit also noch nicht abgelaufen ist). Das ist meistens nur eine einfache Nachricht wie „Komm bitte morgen wieder.“ oder ähnliches.

Diese Seite muss als Bedingung haben, dass Self Switch A auf ON ist.

Seite 3

Die dritte Seite überprüft, ob die Zeit bereits abgelaufen ist. Es überprüft das jedes Mal automatisch, wenn der Spieler die Map des Events betritt, jedoch nicht in der Zeit, in der der Spieler auf der Map verweilt. Der Spieler muss also die Map verlassen und erneut betreten, damit das Event aktualisiert wird.

Diese Seite hat ebenfalls als Bedingung, dass Self Switch A auf ON ist. Zudem muss es per Autorun laufen und es muss zusätzlich die Bedingung eines globalen Switches auf ON haben, wie z.B Nr. 23 s:cooledDown?(86400).

Der Inhalt dieser Seite lautet wie folgt:

Diese Seite besitzt nur diese zwei Zeilen. Diese sind jedoch Pflicht.

Der globale Switch, der für diese Seite als eine der Bedingungen benutzt wird, bestimmt wie lange die Zeit sein wird, die runtergezählt wird. Im Normalfall ist es ein Script, welches so aussieht:

Die Zahl gibt die Länge der Zeit in Sekunden an (86400 Sekunden = 24 Stunden). Man kann seine eigene Script-Switches verwenden, mit einer anderen Dauer.

Zurücksetzung um Mitternacht

Diese Art von Event ist so ähnlich wie das obere, außer dass hier Tage gezählt werden und nicht Sekunden. Genau genommen zählt es die Anzahl der Mitternächte, die seit Verwendung des Events vergangen sind. Zählt das Event also 1 Tag, dann kann es kurz vor und kurz nach Mitternacht benutzt werden und dabei jedes Mal die normale Interaktion ausführen.

Typische Verwendungszwecke dafür sind:

  • Ein NPC, das einem ein Geschenk pro Tag gibt.
  • Eine Lotterie, die man einmal am Tag benutzen kann.
  • Ein Teil der Geschichte, die sich um Mitternacht aktiviert.
  • Ein Rätsel, welches sich um Mitternacht ändert oder zurücksetzt.

Der Aufbau des Events ist derselbe, wie oben. Der einzige Unterschied ist der globale Switch, der auf Seite 3 als Bedingung verwendet wird. Man sollte dort stattdessen ein Switch benutzen, der in etwa so bezeichnet wird:

Die Zahl gibt die Anzahl an Tagen an, wie zwischen der primären Interaktion vergangen sein muss (also die Anzahl an Mitternächten). Eine 1 bedeutet, dass das Event einmal pro Tag verwendet werden kann, 2 bedeutet, dass es an jedem anderen Tag verwendet werden kann usw.

Zurücksetzung zur einer anderen Zeit

Diese Art von Event ist dieselbe wie beim „Zurücksetzen um Mitternacht“-Event oben. Jedoch wird in diesem Fall nicht um Mitternacht überprüft, sondern um eine andere Zeit (z.B 16 Uhr).

Dieses Event überprüft, wie viele Sekunden nach Setzen der aktuellen Zeit vergangen sein müssen, bevor das Event wieder aktiv ist. Die Länge dieser Zeit wird in einer globalen Variable gespeichert, die speziell für dieses Verfahren verwendet wird. Jedes Event bzw jede Gruppe von Events benötigt seine eigene globale Variable.

Seite 3 des Events besitzt einen globalen Switch als Bedingung. Dieser sollte folgenden Namen besitzen:

Die Nummer ist hierbei die Nummer der globalen Variable, die weiter oben erwähnt wurde. Wie auch bei der globalen Variable braucht jedes Event/Eventgruppe seinen eigenen globalen Switch.

Die einzige Änderung am Event befindet sich auf Seite 1, wo pbSetEventTime zu finden ist. Zusätzlich zu diesen Code muss man auch folgendes hinzufügen:

Die zwei Zahlen in der markierten Zeile sind die einzigen Sachen, die man ändern muss. Das erste ist die Stunde, an der geprüft werden soll (16 Uhr in diesem Beispiel), während die zweite Zahl die Anzahl der Überprüfungen angibt, die durchlaufen müssen, ehe sich das Event wieder zurücksetzt. (1 bedeutet jeden Tag, 2 bedeutet jeder andere Tag, usw.).

Der Code erlaubt einem nur ganze Stunde zu überprüfen. Dies sollte jedoch ausreichend sein.