Store fetch
Inhaltsverzeichnis
Store
Das <store>-Tag speichert seinen (ausgewerteten) Inhalt persistent, z.B. zwischen verschiedenen Schritten eines Quests. Das Attribut 'name' gibt dabei an, unter welchem Namen es gespeichert werden soll. Der Inhalt selbst wird an dieser Stelle nicht ausgegeben. Der folgende Code speichert Inhalt der Variable unter dem Namen 'VariablenName' für die Dauer des laufenden Quests:
<store name="VariablenName" scope="quest">
Inhalt der Variable
</store>
Scopes/Geltungsbereiche
Den Bereich und die Art wie eine Variable gespeichert wird kann man über das Attribut scope festlegen. Im Moment gibt es hierbei fünf verschiedene Möglichkeiten.
scene
Die Variable wird nicht in der Datenbank zwischengespeichert. Sie kann nur innerhalb derselben Scene verwendet werden.
<store name="VariablenName" scope="scene">
Inhalt der Variable
</store>
quest
Die Variable wird innerhalb dieser Quest gespeichert. Sobald die Quest beendet wurde wird die Variable gelöscht. Durch eine über den Queststatus pending unterbrochene Quest werden Variablen mit dem Scope quest nicht gelöscht.
<store name="VariablenName" scope="quest">
Inhalt der Variable
</store>
dungeon
Die Variable ist für alle Helden die diese Quest erleben zugreifbar. Die Variable bleibt erhalten auch wenn ein Held die Quest schon beendet hat, bezieht sich aber im Gegensatz zum Scope 'hero' auf die Quest und nicht auf den sie absolvierenden Helden.
<store name="VariablenName" scope="dungeon">
Inhalt der Variable
</store>
hero
Die Variable wird an den Helden gebunden, solange dieser existiert, kann auf sie zugegriffen werden.
<store name="VariablenName" scope="hero">
Inhalt der Variable
</store>
global
Die Variable wird unabhängig von Questen und Helden gespeichert. Sie wird nur manuell von Hand gelöscht. Siehe hier.
<store name="VariablenName" scope="global">
Inhalt der Variable
</store>
expire
Über das Attribut expire kann der Zeitraum angegeben werden in welchem diese (unabhängig vom scope) Gespeichert wird. Folgendes definiert eine Variable die nach 4 Ingame-Tagen wieder gelöscht wird.
<store name="VariablenName" scope="global" expire="4d">
Inhalt der Variable
</store>
Expire kann in zwei Formaten angegeben werden "4d" für vier Ingametage, "12h" für zwölf Ingamestunden. Anmerkung: Der AOQML-Editor wird das erst ab der Version 1.0 können.
Namenskonvention
Die Variablen können zwar technisch frei benannt werden, damit man aber schnell erkennen kann woher eine Variable kommt gelten folgende Namenskonvention: An erster Stelle der Variable steht ein Oberbegriff der den zur Variable zugehörigen Typ beschreibt.
Also z.B. quest: für eine Variable die nur in einer Quest steht oder region: für eine Variable die für alle Questen einer bestimmten Region steht. Danach folgt der Pfad unter dem die Quest oder ZB abgelegt ist, der Questname und am Ende der Variablenname.
also: Oberbegriff:PfadZurQuest/QuestName/Variablenname
Beispiele: quest:/quests/deralteleuchtturm/hoehedesturms npc:derHerzogVonSonstwo/Name
Diese Konvention soll sicherstellen das einzelne Variablen sich nicht gegenseitig überschreiben, da die Scopes zwar die Art der Speicherung, nicht aber den Zugriff auf die Variablen regeln.
fetch
Das <fetch>-Tag ruft derart gespeicherte Inhalte wieder ab. Das Attribut 'name' dient hier zum identifizieren der richtigen Variable. Sollte kein Inhalt unter diesem Namen gespeichert sein, und nur dann, wird der Inhalt des fetch-Tags ausgewertet, sozusagen als Default. Dies ist einer der Hauptunterschiede zum get-Tag. Beim get-Tag wird kein Default-Inhalt ausgewertet.
Folgendes liefert zum Beispiel die Variable mit dem Namen "VariablenName" zurück.
<fetch name="VariablenName"/>