Building Events: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Category:Modding“) |
|||
(5 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | //TODO: Building Events allgemein beschreiben. | ||
+ | Werden in der Reihenfolge '''Dorf''', '''ALL''' aufgerufen. | ||
+ | |||
+ | Identifiziert via BuildingID (siehe Konsole -> Tooltip) | ||
+ | |||
+ | Unique Trigger werden nur einmalig aufgerufen. | ||
+ | |||
+ | Es wird immer nur der erste Trigger aufgerufen (Reihenfolge im XML / Dorf vor ALL) | ||
+ | |||
+ | = Spezial Trigger = | ||
+ | == enterTown == | ||
+ | Wird aufgerufen, wenn ein Dorf betreten wird. | ||
+ | |||
+ | == Camp Trigger == | ||
+ | Damit ihr die Zeugen umsetzen könnt, habe ich das "Camp Scripting", das bereits für spezielle RouteEvents (zB AbandonedHostel, lawinencamp usw.) verfügbar war, jetzt generell für alle Camps verfügbar gemacht. | ||
+ | |||
+ | Grundsätzlich werden die BuildingEvents verwendet, um das "Gesamtskript" für ein Camp zu setzen, und zwar jeweils das ERSTE gefundene BuildingEvent mit korrektem Namen und dem Typ "skript".<br> | ||
+ | |||
+ | Für Dungeons: '''campDungeon<br> | ||
+ | Für Lager im Dorf auf der Straße (toll für nächtlichen Diebstahl ;)): '''campStreet<br> | ||
+ | Für Lager in einer Herberge: '''campHostel<br> | ||
+ | Für Lager auf der Karte, sofern KEIN spezielles Lager (zB besonderer Rastplatz / RouteEvent) eingestellt ist: '''campNature<br> | ||
+ | |||
+ | Angesehen werden für die jeweiligen Events, in der hier angegebenen Reihenfolge:<br> | ||
+ | Für Dungeons: ALL<br> | ||
+ | Für Lager im Dorf: aktuelles Dorf + ALL<br> | ||
+ | Für Lager in der Herberge: aktuelles Dorf + ALL<br> | ||
+ | Für Lager in der Natur: Ausgangsdorf der Route, Zieldorf der Route und ALL<br> | ||
+ | |||
+ | Aufgerufen werden die folgenden Funktionen: | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | function OnSleep() { | ||
+ | return true; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Wird aufgerufen, sobald man die Schlafenszeit eingestellt hat. Liefert diese Funktion true zurück, so wird das Schlafengehen NICHT abgebrochen, sondern fortgesetzt. liefert sie false oder gar nichts, wird abgebrochen, allerdings nur *genau* ein mal. Man kann also das Schlafen gehen nur einmalig unterbrechen. | ||
+ | |||
+ | <syntaxhighlight lang="javascript"> | ||
+ | function OnGuard( guardshift, delay, who, guardshortname ) { | ||
+ | return true; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Wird direkt nach OnSleep erstmals aufgerufen (wenn nicht unterbrochen wurde), und danach jeweils am *Beginn* der Wache. delay gibt die Wachedauer in Stunden an (für alle 3 gleich), who enthält die CharacterID (-1, wenn keine Wache eingeteilt wurde). Sofern true zurückgeliefert wird, wird der Wachezyklus normal fortgesetzt, bei false wird er abgebrochen. | ||
+ | |||
+ | |||
+ | Noch ein paar Ergänzungen: | ||
+ | # Wird die Wache abgebrochen, warum auch immer, gibt es *keinen* Regenerationszyklus | ||
+ | # OnGuard wird auch in der Herberge aufgerufen, selbst wenn es dort keine Wachen gibt, um zB Ereignisse "Mitten in der Nacht" stattfinden lassen zu können | ||
+ | # Ein "unterbrechen und später fortsetzen" des Schlafens, wenn es einmal unterbrochen wurde, ist nicht möglich | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang="javascript"> | ||
+ | function OnLeave() { | ||
+ | return true; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Wird beim Verlassen des Lagers (Abbruch bei Straße und Dungeon, Weiterreisen bei Natur, Zimmer verlassen bei Herberge) aufgerufen. Wiederum kann mit return false; das "normale" Verlassen unterbrochen werden, während mit return true; ganz normal verlassen wird. | ||
+ | |||
+ | Bitte beachtet jeweils, dass der Aufruf eines Dialogs IMMER asynchron verläuft, ihr könnt also Nicht "nach" dem startdlg ein return true; hinpacken, startdlg kehrt nämlich sofort wieder in die Ausführung zurück, selbst wenn der Dialog noch angezeigt wird. Ihr könnt aber zB beim OnLeave mit "leaveLocation()" das Lager verlassen, beachtet aber, dass anders als beim OnSleep diee Funktion OnLeave *beliebig oft* das Verlassen abbrechen kann, also vorsicht vor Endlosschleifen :). | ||
[[Category:Modding]] | [[Category:Modding]] |
Aktuelle Version vom 10. Juli 2014, 07:20 Uhr
//TODO: Building Events allgemein beschreiben. Werden in der Reihenfolge Dorf, ALL aufgerufen.
Identifiziert via BuildingID (siehe Konsole -> Tooltip)
Unique Trigger werden nur einmalig aufgerufen.
Es wird immer nur der erste Trigger aufgerufen (Reihenfolge im XML / Dorf vor ALL)
Spezial Trigger
enterTown
Wird aufgerufen, wenn ein Dorf betreten wird.
Camp Trigger
Damit ihr die Zeugen umsetzen könnt, habe ich das "Camp Scripting", das bereits für spezielle RouteEvents (zB AbandonedHostel, lawinencamp usw.) verfügbar war, jetzt generell für alle Camps verfügbar gemacht.
Grundsätzlich werden die BuildingEvents verwendet, um das "Gesamtskript" für ein Camp zu setzen, und zwar jeweils das ERSTE gefundene BuildingEvent mit korrektem Namen und dem Typ "skript".
Für Dungeons: campDungeon
Für Lager im Dorf auf der Straße (toll für nächtlichen Diebstahl ;)): campStreet
Für Lager in einer Herberge: campHostel
Für Lager auf der Karte, sofern KEIN spezielles Lager (zB besonderer Rastplatz / RouteEvent) eingestellt ist: campNature
Angesehen werden für die jeweiligen Events, in der hier angegebenen Reihenfolge:
Für Dungeons: ALL
Für Lager im Dorf: aktuelles Dorf + ALL
Für Lager in der Herberge: aktuelles Dorf + ALL
Für Lager in der Natur: Ausgangsdorf der Route, Zieldorf der Route und ALL
Aufgerufen werden die folgenden Funktionen:
function OnSleep() { return true; }
Wird aufgerufen, sobald man die Schlafenszeit eingestellt hat. Liefert diese Funktion true zurück, so wird das Schlafengehen NICHT abgebrochen, sondern fortgesetzt. liefert sie false oder gar nichts, wird abgebrochen, allerdings nur *genau* ein mal. Man kann also das Schlafen gehen nur einmalig unterbrechen.
function OnGuard( guardshift, delay, who, guardshortname ) { return true; }
Wird direkt nach OnSleep erstmals aufgerufen (wenn nicht unterbrochen wurde), und danach jeweils am *Beginn* der Wache. delay gibt die Wachedauer in Stunden an (für alle 3 gleich), who enthält die CharacterID (-1, wenn keine Wache eingeteilt wurde). Sofern true zurückgeliefert wird, wird der Wachezyklus normal fortgesetzt, bei false wird er abgebrochen.
Noch ein paar Ergänzungen:
- Wird die Wache abgebrochen, warum auch immer, gibt es *keinen* Regenerationszyklus
- OnGuard wird auch in der Herberge aufgerufen, selbst wenn es dort keine Wachen gibt, um zB Ereignisse "Mitten in der Nacht" stattfinden lassen zu können
- Ein "unterbrechen und später fortsetzen" des Schlafens, wenn es einmal unterbrochen wurde, ist nicht möglich
function OnLeave() { return true; }
Wird beim Verlassen des Lagers (Abbruch bei Straße und Dungeon, Weiterreisen bei Natur, Zimmer verlassen bei Herberge) aufgerufen. Wiederum kann mit return false; das "normale" Verlassen unterbrochen werden, während mit return true; ganz normal verlassen wird.
Bitte beachtet jeweils, dass der Aufruf eines Dialogs IMMER asynchron verläuft, ihr könnt also Nicht "nach" dem startdlg ein return true; hinpacken, startdlg kehrt nämlich sofort wieder in die Ausführung zurück, selbst wenn der Dialog noch angezeigt wird. Ihr könnt aber zB beim OnLeave mit "leaveLocation()" das Lager verlassen, beachtet aber, dass anders als beim OnSleep diee Funktion OnLeave *beliebig oft* das Verlassen abbrechen kann, also vorsicht vor Endlosschleifen :).