Änderungen

Wechseln zu: Navigation, Suche

AOQML-Manual

957 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">
<?xml version="1.0" encoding="UTF-8"?>
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://spieleisentrutz.antamar.org/Antamar/xml/aoqmleu/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==
*[[action]] - Aktionen die den Helden betreffen, z.B. Annahme einer Arbeit / Einsperren im Kerker
*[[add-EP]] - geb. EP für Fertigkeiten vergeben
*[[case]] - für Fallunterscheidungen &rarr; [[switch]] und Zufallsauswahlen &rarr; [[random]]
*[[challenge]] - für Proben auf Talente und Eigenschaften
*[[delay]] - Reise des Helden verzögern
*[[AOQML:desc|desc]] - Liefert eine Beschreibung
*[[take_drop|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
*[[eval]] - Tag zum berechnen einfacher und komplexer mathematischer Funktionen
*[[switch|else]] - Fallunterscheidungen: Default-Option &rarr; [[switch]]
*[[fight#escape|escape]] - Kampfergebnis: Held flüchtet &rarr; [[fight]]
*[[exists]] - zur Prüfung, ob ein Gebäude/Raum an der aktuellen Questlocation existiert
*failure - Prüfergebnis / Probe negativ &rarr; [[challenge]], [[has]]
*[[for]] - Erstellen von Schleifen
*[[store_fetch|fetch]] - gespeicherten Wert abrufen &rarr; [[store_fetch|store]]
*[[fight]] - Kampf
*[[function]] - spezielle Funktionen
*[[get_set|getgenerateName]] - Attribute des Helden abfragenZufallsnamen generieren*[[AOQML:gott|Gottget]] - "Übersetzt" den namen einer Gottheit in eine GlaubensrichtungAttribute des Helden oder eines Gegenstandes oder eines Gebäudes abfragen
*[[has]] - auf vorhandene Ausrüstung und Talente prüfen
*[[hero]] - Held aus Gruppe heraussuchen
*[[img]]- um Bilder einzubinden
*[[include]] - andere Questdateien einbinden
*[[input]] - ein Eingabefeld anzeigen
*[[inventar]]- Tag der verschiedene Gegenstände in sich speichert um z.B. Truhen oder ähnliches zu simulieren.
*[[AOQML:item|item]] wählt ein zufälligen Gegenstand aus der DB
*[[inventaritem-select]]- Tag einen Gegenstand vom Spieler auswählen lassen*[[map]] - fügt eine Grafik ein, auf der verschiedene Gegenstände in sich speichert um Questlinks platziert werden (z.B. Truhen oder ähnliches zu simulieren.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
*[[Quest (Tag)|quest]] - zur Steuerung der Queste, z. B. um eine Quest als (noch nicht) abgeschlossen zu markieren
*[[random]] - Zufallsauswahl
*[[ranged-defence]] - NPCs attackieren den Held mit Fernkampfwaffen
*[[Regeneration (AOQML)|regeneration]] - Stoppt die Regeneration für den Held in der Quest.
*[[restrict]] - Stellt sicher das bestimmte AOQML-Teile nur einmal pro Held ausgeführt werden.
*[[retain_replay|replay]] - gespeicherte Aktionsfolge abrufen &rarr; [[retain_replay|retain]]
*[[fight#rivals|rivals]] - im Kampf Gegner festlegen
*[[scene]] - oberstes Tag, definiert Beginn und Ende der XML-Datei
*[[select]] - Auswahl eines/mehrerer Helden bei Gruppenbegegnungen
*[[get_set|set]] - Werte des Helden verändern
*[[select]] - Wahl des handelnden/betroffenen Helden in der Gruppe
*[[set]] - Werte des Helden verändern
*[[steal]] - Begleiter entfernen (= gemeiner Viehraub!)
*[[store_fetch|store]] - Wert speichern um später darauf zugreifen zu können &rarr; [[store_fetch|fetch]]
*success - Prüfergebnis / Probe positiv &rarr; [[challenge]], [[has]]
*[[switch]] - Fallunterscheidung
*[[take_drop|take]] - Gegenstand in die Ausrüstungsliste legen*[[transfer]] - Austausch von Gegenständen zwischem Held und einem Behälter*[[travel]] - startet eine Reise*[[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, muss man einfach nur eine normale Abfrage wie bei einem Gegenstand machen und jeweils ein | zwischen die unterschiedlichen Namen setzen. Sollte auch bei Gegnern, Waffen oder anderem klappen. Beispiele: <take item="Einfacher Holzbecher|Schere|Hartwurst"/> (für variable Beutestücke) <set quality="cash" inc="200|300|400|500"/> (wenn man genau 2, 3, 4 oder 5 D vergeben will) '''''So einfach ist es leider nicht!''''' Die Auswahl mit dem "|" funktioniert nur für zwei Möglichkeiten. Für mehrere muss dann kann man einen <[[random>]]-Block vorschalten:<code syntaxhighlight lang="xml">
<random>
<case><store name="Gegenstand">Holzkamm</store></case>
</random>
<take item="${Gegenstand}"/>
</codesyntaxhighlight>--Alternativ kann das [[Benutzer:Handborons|Handboronstake]] 18:33, 24. Julauch direkt in den jeweiligen case reingeschrieben werden. 2008 (CEST)
===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">
<has item="Messer|Dolch|Schwert">
<success>
</failure>
</has>
</codesyntaxhighlight: Siehe oben - die ODER-Abfrage mit "|" funktioniert vorerst nur mit zwei Optionen. --[[Benutzer:Handborons|Handborons]] 10:18, 2. Okt. 2008 (CEST)
Man kann auch auf überprüfen, ob mehrere Gegenstände vorhanden sind:
<code syntaxhighlight lang="xml">
<has item="Messer+Dolch">
<success>
</failure>
</has>
</codesyntaxhighlightDas "+" entspricht also einem UND.<br />Das "|" entspricht einem ODER.
Diese zwei Operatoren sind jedoch nur bei [[has|&lt;has&gt;]] und [[switch|&lt;switch&gt;]] verfügbar.
===nützliche Listen===
* [[Held Attribute]]
* [[Gegenstände|Gegenstandsliste]]
* [[NPC Liste]]
* [[Waffenliste]]
* [[Aktuelle_Warenliste|Warenliste]]
== Wohin mit fertigen Questen? ==Fertige Questen, also vollständige Bündel von vielen durchgesehenen und korrekt codierten Dateien bitte gezippt an Athuran schicken. --[[Benutzer:Athuran|Athuran]] 13:05, 23. Jul. 2008 (CEST)[[Kategorie:AOQML]]
2.924
Bearbeitungen

Navigationsmenü