Änderungen

Wechseln zu: Navigation, Suche

AOQML-Manual

1.053 Bytes hinzugefügt, 12:27, 20. Apr. 2022
AOQML-Tags
'''Wichtig für die Bearbeitung und Darstellung hier im Wiki:''' Es gibt ein SyntaxDarstellungssystem. Um wunderbare Beispiele anzeigen zu lassen, muss ein xml-Code lediglich von diesem Tag umschlossen sein: <nowiki><code syntaxhighlight lang="xml">...</code></nowiki>. Will man dazu noch eine Zeilenanzeige, nutzt man dieses <nowiki><code xml n>...</codesyntaxhighlight></nowiki>.
Tags werden in spitze Klammern eingeschlossen. Jeder Tag erfordert ein öffnendes (z. B. &lt;challenge&gt;) und ein schließendes Element. Schließende Elemente werden mit einem / nach der Klammer begonnen (&lt;/challenge&gt;). Alles, was zwischen den beiden Tags steht, ist der Bedingung oder Aktion unterworfen, die das Tag bestimmt. Tags können verschachtelt werden, dabei muss darauf geachtet werden, dass die Ebenen sauber getrennt sind. Das heißt, man darf kein Tag schließen, wenn nicht alle unterhalb dieses Tags geöffneten geschlossen sind:<br/>
'''richtig:'''
<code syntaxhighlight lang="xml">
<tag1>
<tag2>
</tag2>
</tag1>
</codesyntaxhighlight>
'''falsch:'''
<code syntaxhighlight lang="xml">
<tag1>
<tag2>
</tag1>
</tag2>
</codesyntaxhighlight>
Es gibt einige Tags, die kein zweites zum Schließen erfordern. Bei diesen wird das / an das Ende gesetzt:
<code syntaxhighlight lang="xml"><set attribute="cash" inc="20"/></codesyntaxhighlight>
Außerdem kann man eine Szene (beispielsweise nach einem include oder choice, das zu einer Abzweigung führt) vorzeitig abbrechen lassen, wenn folgender Code eingegeben wird:
<code syntaxhighlight lang="xml"><quest status="continue" /></codesyntaxhighlight>
==Aufbau der XML-Datei==
Jede Datei muss mit diesem Grundgerüst beginnen:
<code syntaxhighlight lang="xml n">
<?xml version="1.0" encoding="UTF-8"?>
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://eisentrutz.antamar.eu/aoqml.xsd">
...
</scene>
</codesyntaxhighlight>
Erst wird der Inhalt der datei als XML nach Sprachversion 1.0 definiert, danach folgt das Tag &lt;scene&gt;...&lt;/scene&gt;. Außerhalb dieses Tags darf nichts stehen, mit Ausnahme der XML-Definition und Kommentare, die wie folgt gemacht werden können:
<code syntaxhighlight lang="xml">
<!-- hier folgt eine Erklärung -->
</codesyntaxhighlight>
===Formatierung===
Für bessere Lesbarkeit und Übersicht bitte alle Ebenen um zwei Stellen (zwei Leerzeichen) gegenüber der darüber liegenden Ebene einrücken:
<code syntaxhighlight lang="xml">
<Ebene1>
<Ebene2>
</Ebene2>
</Ebene1>
</codesyntaxhighlight>
===Zeichensatz===
*Einrückungen immer zwei Leerzeichen
*keine Zeilenumbrüche im Text
 
==HTML-Tags==
 
Viele üblichen (X)HTML-Tags können verwendet werden, um Text darzustellen und zu formatieren. So kann z. B. das HTML-&lt;p&gt;-Tag verwendet werden, um Textabsätze zu erzeugen. Der &lt;q&gt;-Tag sollte für wörtliche Rede benutzt werden. Anderes XHTML sollte aber sparsam verwendet werden, um das CSS-Design von Antamar berücksichtigen.
 
===String Interpolation===
In allen Text-Inhalten kann sogenannte String-Interpolation verwendet werden, also Platzhalter (${...}) durch Variablen ersetzt werden:
 
'''String-Interpolation:'''
<syntaxhighlight lang="xml">
<store name="titel">Baron von Tannenbrück</store>
<p>Dir wurde der Titel ${titel} verliehen.</p>
</syntaxhighlight>
 
Dabei ist <store ...> ein AOQML-Tag, in diesem Fall zum Speichern des Textes "Baron von Tannenbrück" in einer Variable mit dem Namen "titel", die dann durch String-Interpolation (${titel}) wieder abgerufen wird. Zu AOQML-Tags mehr im folgenden Abschnitt.
==AOQML-Tags==
*[[AOQML:desc|desc]] - Liefert eine Beschreibung
*[[damage]] - verursacht Schadenspunkte beim Held (auf Wunsch mit/ohne Wunden)
*[[debug]] - Inhalte zum Testen auf dem Testserver bereitstellen
*[[div]] - erzeugt eine OOC-Box
*[[drop]] - Gegenstand aus Ausrüstungsliste entfernen
*[[fight]] - Kampf
*[[function]] - spezielle Funktionen
*[[generateName]] - Zufallsnamen generieren
*[[get]] - Attribute des Helden oder eines Gegenstandes oder eines Gebäudes abfragen
*[[has]] - auf vorhandene Ausrüstung und Talente prüfen
*[[item-select]] - einen Gegenstand vom Spieler auswählen lassen
*[[map]] - fügt eine Grafik ein, auf der Questlinks platziert werden (z.B. für grafische Dungeons)
*[[maze]] - fügt eine Karte der gesehenen+erinnerten "Räume" aus Kachel-Grafiken ein (für grafische Dungeons)
*[[paths]] - geografische Richtungsnavigation
*[[q]] - wörtliche Rede
*[[var-dump]] - gibt gesetzte Variablen aus -> hilft beim Debuggen
*[[fight#victory|victory]] - Kampfergebnis: Gegner durch Held besiegt
 
 
Weiter können auch die üblichen (X)HTML-Tags verwendet werden, um Text zu formatieren. Es kann z. B. das HTML-&lt;p&gt;-Tag verwendet werden, um Textabsätze zu erzeugen. Der &lt;q&gt;-Tag sollte für wörtliche Rede benutzt werden. Anderes XHTML sollte aber sparsam verwendet werden, um das CSS-Design von Antamar berücksichtigen.
==Sonstiges==
===Zufallsauswahl aus mehreren Möglichkeiten===
Will man z.B. einen von mehreren Gegenständen einer Liste abfragen, dann kann man einen [[random]]-Block vorschalten:
<code syntaxhighlight lang="xml n">
<random>
<case><store name="Gegenstand">Holzkamm</store></case>
</random>
<take item="${Gegenstand}"/>
</codesyntaxhighlight>
Alternativ kann das [[take]] auch direkt in den jeweiligen case reingeschrieben werden.
===ODER und UND===
Will man prüfen, ob der Held einen von mehreren möglichen Gegenständen bei sich trägt, kann man das mit dem Operator "|" (entspricht einem ODER) erreichen:
<code syntaxhighlight lang="xml n">
<has item="Messer|Dolch|Schwert">
<success>
</failure>
</has>
</codesyntaxhighlight>
Man kann auch auf überprüfen, ob mehrere Gegenstände vorhanden sind:
<code syntaxhighlight lang="xml n">
<has item="Messer+Dolch">
<success>
</failure>
</has>
</codesyntaxhighlight>
Das "+" entspricht also einem UND.<br />
2.924
Bearbeitungen

Navigationsmenü