Store fetch: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
K (syntaxhighlight)
Zeile 3: Zeile 3:
 
Das Attribut 'name' gibt dabei an, unter welchem Namen es gespeichert werden soll. Der Inhalt selbst wird an dieser Stelle nicht ausgegeben.
 
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:
 
Der folgende Code speichert '''Inhalt der Variable''' unter dem Namen 'VariablenName' für die Dauer des laufenden Quests:
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="VariablenName" scope="quest">Inhalt der Variable</store>
 
<store name="VariablenName" scope="quest">Inhalt der Variable</store>
</code>
+
</syntaxhighlight>
  
 
===Scopes/Geltungsbereiche===
 
===Scopes/Geltungsbereiche===
Zeile 13: Zeile 13:
 
Zu 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, dann muss der zugehörige Scope wieder explizit angegeben werden.
 
Zu 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, dann muss der zugehörige Scope wieder explizit angegeben werden.
  
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="VariablenName" scope="hero">Inhalt der Variable</store>
 
<store name="VariablenName" scope="hero">Inhalt der Variable</store>
</code>
+
</syntaxhighlight>
  
 
===expire===
 
===expire===
Zeile 22: Zeile 22:
 
Folgendes definiert eine Variable die nach 4 Ingame-Tagen wieder gelöscht wird.  
 
Folgendes definiert eine Variable die nach 4 Ingame-Tagen wieder gelöscht wird.  
  
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="VariablenName" scope="hero" expire="4d">Inhalt der Variable</store>
 
<store name="VariablenName" scope="hero" expire="4d">Inhalt der Variable</store>
</code>
+
</syntaxhighlight>
  
 
Expire kann in zwei Formaten angegeben werden "4d" für vier Ingametage, "12h" für zwölf Ingamestunden oder "4D" für vier Reallife-Tage, "12H" für zwölf echte Stunden.
 
Expire kann in zwei Formaten angegeben werden "4d" für vier Ingametage, "12h" für zwölf Ingamestunden oder "4D" für vier Reallife-Tage, "12H" für zwölf echte Stunden.
Zeile 32: Zeile 32:
  
 
Mittels '''inc-expire''' kann der Zeitraum verlängert werden, indem eine Variable gültig ist.
 
Mittels '''inc-expire''' kann der Zeitraum verlängert werden, indem eine Variable gültig ist.
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="meineVariable" scope="hero" expire="4d">Inhalt der Variable</store>
 
<store name="meineVariable" scope="hero" expire="4d">Inhalt der Variable</store>
  
Zeile 39: Zeile 39:
 
<store name="meineVariable" scope="hero" inc-expire="2d">neuer Inhalt der Variable</store>
 
<store name="meineVariable" scope="hero" inc-expire="2d">neuer Inhalt der Variable</store>
 
<!-- die Variable ist somit insgesamt 6 Ingame-Tage aktiv -->
 
<!-- die Variable ist somit insgesamt 6 Ingame-Tage aktiv -->
</code>
+
</syntaxhighlight>
  
 
===Variablen überschreiben===
 
===Variablen überschreiben===
 
Eine Variable kann einfach überschrieben werden, indem ihr ein neuer Inhalt zugewiesen wird:
 
Eine Variable kann einfach überschrieben werden, indem ihr ein neuer Inhalt zugewiesen wird:
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="held-hat-gefruehstueckt">nein</store>
 
<store name="held-hat-gefruehstueckt">nein</store>
 
...
 
...
 
<store name="held-hat-gefruehstueckt">ja</store>
 
<store name="held-hat-gefruehstueckt">ja</store>
</code>
+
</syntaxhighlight>
  
 
Zu 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, dann muss der zugehörige Scope wieder explizit angegeben werden:
 
Zu 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, dann muss der zugehörige Scope wieder explizit angegeben werden:
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="held-ist-ein-schwarzer-ritter" scope="hero">nein</store>
 
<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 nicht überschrieben, sondern eine neue Variable mit dem Scope "quest" gesetzt! -->
 
<store name="held-ist-ein-schwarzer-ritter" scope="hero">ja</store><!-- Scope 'hero' muss hier wieder angegeben werden, sonst wird Variable nicht überschrieben, sondern eine neue Variable mit dem Scope "quest" gesetzt! -->
</code>
+
</syntaxhighlight>
  
 
===Variablen löschen===
 
===Variablen löschen===
 
Variablen können mittels
 
Variablen können mittels
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="meineVar">NULL</store>
 
<store name="meineVar">NULL</store>
 
<!-- oder -->
 
<!-- oder -->
 
<store name="meineVar"/>
 
<store name="meineVar"/>
</code>
+
</syntaxhighlight>
 
gelöscht werden.
 
gelöscht werden.
  
Zeile 69: Zeile 69:
  
 
Die Variablen können zwar technisch frei benannt werden, aber bei scope="hero"-Variablen ist zwingend auf einen aussagekräftigen und eindeutigen Namen zu achten. Dazu wird zunächst der Questname (+ggf. Autor) und danach die Variablenkennung angegeben, z.B.
 
Die Variablen können zwar technisch frei benannt werden, aber bei scope="hero"-Variablen ist zwingend auf einen aussagekräftigen und eindeutigen Namen zu achten. Dazu wird zunächst der Questname (+ggf. Autor) und danach die Variablenkennung angegeben, z.B.
<code xml n>
+
<syntaxhighlight lang="xml">
 
<store name="SchiffBlutrabe-Tagesablauf" scope="hero">Schlaf</store>
 
<store name="SchiffBlutrabe-Tagesablauf" scope="hero">Schlaf</store>
</code>
+
</syntaxhighlight>
  
 
Diese Konvention soll sicherstellen, dass einzelne hero-/global-Variablen sich nicht gegenseitig überschreiben.
 
Diese Konvention soll sicherstellen, dass einzelne hero-/global-Variablen sich nicht gegenseitig überschreiben.
Zeile 83: Zeile 83:
  
 
Folgendes bewirkt zum Beispiel die Ausgabe der Variable "papagei_name".
 
Folgendes bewirkt zum Beispiel die Ausgabe der Variable "papagei_name".
<code xml n>
+
<syntaxhighlight lang="xml">
 
<p><q>Hallo <fetch name="papagei_name"/>!</q></p>
 
<p><q>Hallo <fetch name="papagei_name"/>!</q></p>
</code>
+
</syntaxhighlight>
  
  
 
[[Kategorie:AOQML-Tags]]
 
[[Kategorie:AOQML-Tags]]

Version vom 7. März 2017, 12:03 Uhr

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. Hierbei verschiedene Möglichkeiten.

Zu beachten ist, dass in 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, dann muss der zugehörige Scope wieder explizit angegeben werden.

<store name="VariablenName" scope="hero">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="hero" expire="4d">Inhalt der Variable</store>

Expire kann in zwei Formaten angegeben werden "4d" für vier Ingametage, "12h" für zwölf Ingamestunden oder "4D" für vier Reallife-Tage, "12H" für zwölf echte Stunden.


inc-expire

Mittels inc-expire kann der Zeitraum verlängert werden, indem eine Variable gültig ist.

<store name="meineVariable" scope="hero" expire="4d">Inhalt der Variable</store>

...
<!-- Variable um weitere 2 Tage verlängern -->
<store name="meineVariable" scope="hero" inc-expire="2d">neuer Inhalt der Variable</store>
<!-- die Variable ist somit insgesamt 6 Ingame-Tage aktiv -->

Variablen überschreiben

Eine Variable kann einfach überschrieben werden, indem ihr ein neuer Inhalt zugewiesen wird:

<store name="held-hat-gefruehstueckt">nein</store>
...
<store name="held-hat-gefruehstueckt">ja</store>

Zu beachten ist, dass in 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, dann muss der zugehörige Scope wieder explizit angegeben werden:

<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 nicht überschrieben, sondern eine neue Variable mit dem Scope "quest" gesetzt! -->

Variablen löschen

Variablen können mittels

<store name="meineVar">NULL</store>
<!-- oder -->
<store name="meineVar"/>

gelöscht werden.


Namenskonvention

Die Variablen können zwar technisch frei benannt werden, aber bei scope="hero"-Variablen ist zwingend auf einen aussagekräftigen und eindeutigen Namen zu achten. Dazu wird zunächst der Questname (+ggf. Autor) und danach die Variablenkennung angegeben, z.B.

<store name="SchiffBlutrabe-Tagesablauf" scope="hero">Schlaf</store>

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".

<p><q>Hallo <fetch name="papagei_name"/>!</q></p>