=== pro Quest/Heldstore===Das '''<store>'''-Kombination speichern 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:<syntaxhighlight lang="xml"><store name="VariablenName" scope="quest">Inhalt der Variable</store></syntaxhighlight>
Das '''<store>'''-Tag speichert seinen (ausgewerteten) Inhalt persistent, z.B. zwischen verchiedenen Schritten eines Quests. Das Attribut 'name' gibt dabei an, unter welchem Namen es ===Scopes/Geltungsbereiche===Den Bereich und die Art wie eine Variable gespeichert werden soll. Der Inhalt selbst wird an dieser Stelle nicht ausgegeben.Das kann man über das Attribut '''<fetch>scope'''-Tag ruft derart gespeicherte Inhalte wieder abfestlegen. Auch dabei wird das Attribut 'name' zum identifizieren verwendet. 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 ausgewertetHierbei [[ScopeValues|verschiedene Möglichkeiten]].
Beispiel:<code xml><store name=Zu beachten ist, dass in [[Quest|Questen]] standardmäßig der scope "Heimatortquest">Gareth</store>eingestellt ist. Wird für eine Variable ein anderer Scope, z.B. 'hero', festgelegt und wird diese Variable später an einer anderen Stelle im Code verändert, dann muss der zugehörige Scope wieder explizit angegeben werden.
Ich komme aus <fetch syntaxhighlight lang="xml"><store name="HeimatortVariablenName" scope="hero">Inhalt der Variable</store>.</codesyntaxhighlight>Ergibt: Ich komme aus Gareth.
=== quest-unabhängig pro Held speichern expire===
Während obiger Werte nur während eines Quests - wenn auch über pending-Unterbrechnungen hinaus - erhalten bleiben und pro Quest/Held gelten, Über das Attribut '''expire''' kann man mit mark= auch etwas dauerhaft oder limitiert am Helden speichern und dies der Zeitraum angegeben werden in allen Questen nutzenwelchem diese (unabhängig vom scope) Gespeichert wird.Folgendes definiert eine Variable die nach 4 Ingame-Tagen wieder gelöscht wird.
<code syntaxhighlight lang="xml"><p>get: <get markstore name="VariablenName" scope="testhero"/></p><p>fetch: <fetch markexpire="test4d">nichts drinInhalt der Variable</fetchstore></psyntaxhighlight>
<p>has: <has mark=Expire kann in zwei Formaten angegeben werden "test4d"> <success>hat testfür vier Ingametage, "12h" für zwölf Ingamestunden oder "4D" für vier Reallife-Markierung</success> <failure>hat keine test-markierung</failure></has></p>Tage, "12H" für zwölf echte Stunden.
<p>switch: <switch mark="test">
<null>hat keine test-Markierung</null>
<case value="gespeicherter Wert">hat test-Markierung: 'gespeicherter Wert'</case>
<else>hat eine andere test-Markierung</else>
</switch></p>
<p>if: <if mark="test" equals="gespeicherter Wert" null="hat keine testinc-Markierung" thenexpire=="hat test-Markierung 'gespeicherter Wert'" else="hat eine test-Markierung"/></p>
Mittels '''inc-expire''' kann der Zeitraum verlängert werden, indem eine Variable gültig ist.<syntaxhighlight lang="xml"><store markname="testmeineVariable" scope="hero" expire="12h4d">gespeicherter WertInhalt der Variable</store></code>
Da ...<!-- Variable um weitere 2 Tage verlängern --><store name="meineVariable" scope="hero" inc-expire="2d">neuer Inhalt der Variable</store><!-- die Variable in dem obigen Beispiel erst am Ende gesetzt wird, ergibt das beim ersten Durchlauf:ist somit insgesamt 6 Ingame-Tage aktiv --></syntaxhighlight>
get===Variablen überschreiben===Eine Variable kann einfach überschrieben werden, indem ihr ein neuer Inhalt zugewiesen wird: fetch: nichts drin<syntaxhighlight lang="xml"> has: [<store name="held-hat : [test: 0*vorhanden] ] hat keine test-markierunggefruehstueckt">nein</store> switch: ...<store name="held-hat keine test-Markierunggefruehstueckt">ja</store> if: hat keine test-Markierung</syntaxhighlight>
Und beim zweitenZu beachten ist, dass in [[Quest|Questen]] standardmäßig der scope "quest" eingestellt ist. Wird für eine Variable ein anderer Scope, z.B. 'hero', festgelegt und wird diese Variable später an einer anderen Stelle im Code verändert, wenn dann die muss der zugehörige Scope wieder explizit angegeben werden:<syntaxhighlight lang="xml"><store name="held-ist-ein-schwarzer-ritter" scope="hero">nein</store>...<store name="held-ist-ein-schwarzer-ritter" scope="hero">ja</store><!-- Scope 'hero' muss hier wieder angegeben werden, sonst wird Variable vom Ende des erstennicht überschrieben, sondern eine neue Variable mit dem Scope "quest" gesetzt wurde:! --></syntaxhighlight>
===Variablen löschen===
Variablen können mittels
<syntaxhighlight lang="xml">
<store name="meineVar">NULL</store>
<!-- oder -->
<store name="meineVar"/>
</syntaxhighlight>
gelöscht werden.
get: gespeicherter Wert
fetch: gespeicherter Wert
has: [hat : [test: 1*vorhanden] ] hat test-Markierung
switch: hat test-Markierung: 'gespeicherter Wert'
if: hat test-Markierung 'gespeicherter Wert'
Für expire= kann man Tage ("5d") oder Stunden ("12h") angeben oder dies, für dauerhaftes speichern, auch ganz weglassen. Die Zeitangaben sind in-game, also derzeit 1d=4min.=Namenskonvention===
Anmerkung: Der AOQMLDie Variablen können zwar technisch frei benannt werden, aber bei scope="hero"-Editor Variablen ist zwingend auf einen aussagekräftigen und eindeutigen Namen zu achten. Dazu wird das erst ab zunächst der Version 1Questname (+ggf.0 könnenAutor) und danach die Variablenkennung angegeben, z.B.<syntaxhighlight lang="xml"><store name="SchiffBlutrabe-Tagesablauf" scope="hero">Schlaf</store></syntaxhighlight>
Diese Konvention soll sicherstellen, dass einzelne hero-/global-Variablen sich nicht gegenseitig überschreiben. ===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. Bei [[get]] wird kein Default-Inhalt ausgewertet. Folgendes bewirkt zum Beispiel die Ausgabe der Variable "papagei_name".<syntaxhighlight lang="xml"><p><q>Hallo <fetch name="papagei_name"/>!</q></p></syntaxhighlight> ===Inhalte ändern=== Grundsätzlich kann eine Variable jederzeit überschrieben werden und beinhaltet damit den neuen Wert. Sollte gewünscht sein, einen Zahlenwert zu erhöhen oder zu erniedrigen, siehe [[set]]. [[Kategorie:AOQML-Tags]]