=== 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:<code xml><store name="VariablenName" scope="quest"> Inhalt der Variable</store></code>
Das ===Scopes/Geltungsbereiche===Den Zeitraum über welchen eine Variable gespeichert wird kann man über das Attribute '''<store>scope'''-Tag speichert seinen (ausgewerteten) Inhalt persistent, zfestlegen.B. zwischen verchiedenen Schritten eines Quests. Das Attribut 'name' Im Moment gibt dabei an, unter welchem Namen es gespeichert werden sollhierbei fünf verschiedene Möglichkeiten. Der Inhalt selbst ====scene====Die Variable wird an dieser Stelle nicht ausgegebenin der Datenbank zwischengespeichert.Sie kann nur innerhalb derselben Scene verwendet werden.Das '''<fetchcode xml>'''-Tag ruft derart gespeicherte Inhalte wieder ab. Auch dabei wird das Attribut '<store name' zum identifizieren verwendet. Sollte kein Inhalt unter diesem Namen gespeichert sein, und nur dann, wird der ="VariablenName" scope="scene"> Inhalt des fetch-Tags ausgewertet, sozusagen als Default. Dies ist einer der Hauptunterschiede zum get-Tag. Beim get-Tag wird kein Default-Inhalt ausgewertet.Variable</store></code>
Beispiel:====quest====Die Variable wird innerhalb dieser Quest gespeichert.Sobald die Quest beendet wurde wird die Variable gelöscht.Durch eine über den [[quest|Queststatus]] pending unterbrochene Quest werden Variablen mit dem Scope quest '''nicht''' gelöscht.<code xml><store name="HeimatortVariablenName" scope="scene">Gareth Inhalt der Variable</store></code>
Ich komme aus <fetch name="Heimatort"/>===dungeon====Die Variable ist für alle Helden die diese Quest erleben zugreifbar.</code>Ergibt: Ich komme aus GarethDie 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.
<code xml><store name="VariablenName" scope== quest-unabhängig pro Held speichern ==="dungeon"> Inhalt der Variable</store></code>
Während obiger Werte nur während eines Quests - wenn auch über pending-Unterbrechnungen hinaus - erhalten bleiben und pro Quest/Held gelten====hero====Die Variable wird an den Helden gebunden, solange dieser existiert, kann man mit mark= auch etwas dauerhaft oder limitiert am Helden speichern und dies in allen Questen nutzenauf sie zugegriffen werden.
<code xml>
<p>get: <get markstore name="testVariablenName"/></p><p>fetch: <fetch markscope="testdungeon">nichts drin Inhalt der Variable</fetchstore></pcode>
<p>has: <has mark="test"> <success>hat test-Markierung</success>===global==== <failure>hat keine test-markierung</failure>Die Variable wird unabhängig von Questen und Helden gespeichert.</has></p>Sie wird nur manuell von Hand gelöscht.
<pcode xml>switch: <switch markstore name="testVariablenName"> <null>hat keine test-Markierung</null> <case valuescope="gespeicherter Wertglobal">hat test-Markierung: 'gespeicherter Wert'</case> <else>hat eine andere test-Markierung Inhalt der Variable</elsestore></switch></pcode>
<p>if: <if mark="test" equals="gespeicherter Wert" null="hat keine test-Markierung" thenexpire=="hat test-Markierung 'gespeicherter Wert'" else="hat eine test-Markierung"/></p>
Ü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. <code xml><store markname="VariablenName" scope="testglobal" expire="12h4d">gespeicherter Wert Inhalt der Variable</store>
</code>
Da die Variable Expire kann in dem obigen Beispiel erst am Ende gesetzt zwei Formaten angegeben werden "4d" für vier Ingametage, "12h" für zwölf Ingamestunden.Anmerkung: Der AOQML-Editor wird, ergibt das beim ersten Durchlauf:erst ab der Version 1.0 können.
get: fetch: nichts drin has: [hat : [test: 0*vorhanden] ] hat keine test-markierung switch: hat keine test-Markierung if: hat keine test-Markierung===Namenskonvention===
Und beim zweitenDie Variablen können zwar technisch frei benannt werden, wenn dann die damit man aber schnell erkennen kann woher eine Variable vom Ende des ersten, gesetzt wurdekommt gelten folgende Namenskonvention:An erster Stelle der Variable steht ein Oberbegriff der den zur Variable zugehörigen Typ beschreibt.
getAlso z.B. quest: gespeicherter Wert fetchfür eine Variable die nur in einer Quest steht oder region: gespeicherter Wertfür eine Variable die für alle Questen einer bestimmten Region steht. has: [hat : [test: 1*vorhanden] ] hat test-Markierung switch: hat test-Markierung: 'gespeicherter Wert' if: hat test-Markierung 'gespeicherter Wert'Danach folgt der Pfad unter dem die Quest oder ZB abgelegt ist, der Questname und am Ende der Variablenname.
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.: Oberbegriff:PfadZurQuest/QuestName/Variablenname
AnmerkungBeispiele: Der AOQML-Editor wird quest:/quests/deralteleuchtturm/hoehedesturmsnpc:derHerzogVonSonstwo/Name Diese Konvention soll sicherstellen das erst ab einzelne Variablen sich nicht gegenseitig überschreiben, da die Scopes zwar die Art der Version 1.0 könnenSpeicherung, nicht aber den Zugriff auf die Variablen regeln.
'''Namenskonvention''':===fetch===
Zunächst einmal sind die Namen "Freitext"Das '''<fetch>'''-Tag ruft derart gespeicherte Inhalte wieder ab. Schema ist aber:* wenn die Das Attribut 'name' dient hier zum identifizieren der richtigen Variable . Sollte kein Inhalt unter diesem Namen gespeichert sein, und nur in dem Quest gelten soll: quest:pfad/questname/varnamedann, wird der Inhalt des fetch-Tags ausgewertet, sozusagen als Default. * region: bedeutet also, dass die Variable für alle Quests (für die sie relevant Dies ist), in einer der genannten Region gelten sollHauptunterschiede zum get-Tag. Beim get-Tag wird kein Default-Inhalt ausgewertet.
Man könnte auch noch sowas wie Folgendes liefert zum Beispiel die Variable mit dem Namen "VariablenName"npc:DukeVonXYZ/..zurück.<code xml><fetch name="VariablenName" machen, und damit z.B. Beziehungen zu NPCs (kennt, befreundet, befeindet etc.) speicher, die auch in allen Questen ggf. abgefragt werden könnten./></code>
Dieser Scope schränkt allerdings die Sicht nicht technisch ein. Theoretsch könnte jede Quest auf alle diese Variablen zugreifen.
[[Kategorie:AOQML-Tags]]
[[Kategorie:AOQML]]