Function
Mit Hilfe des <function>-Tags können in AOQML interne Abfragen gemacht werden. Dieser Tag ist generisch gehalten, damit vielfältige, ungewöhnliche Abfragen an das System möglich sind.
Inhaltsverzeichnis
- 1 Syntax
- 2 Funktionen
- 2.1 Funktion "ermittle-item-anzahl"
- 2.2 Funktion "get-ware-from-inventory"
- 2.3 Funktion "ist-segelschiff"
- 2.4 Funktion "ist-urgott-in-pantheon"
- 2.5 Funktion "lies-held-von-rangliste"
- 2.6 Funktion "mach-gegenstand-unklaubar"
- 2.7 Funktion "steigere-eigenschaft-permanent"
- 2.8 Funktion "waren-wiederfinden"
Syntax
<function name="" [param1="" param2="" param3="" ... ] />
- name beschreibt hierbei den Namen der Funktion
- param1 ist der erste Parameter, der der Funktion übergeben wird
- param2 (optional) ist der zweite Parameter, der der Funktion übergeben wird.
Beachte: Jede Funktion benötigt eine vorgeschriebene Anzahl an Parametern, dazu bitte bei der Anwendung der Funktion nachlesen.
Das Ergebnis einer Funktion wird ausgegeben. Um das Ergebnis weiter zu nutzen, kann man den <function>-Tag durch ein store umschließen.
Funktionen
Funktion "ermittle-item-anzahl"
Diese Funktion gibt als Ergebnis die Anzahl eines Gegenstandes zurück, den der Held mit sich führt. Dabei wird auch im Gepäck von Begleitern gesucht.
- param1: erwartet den Warennamen oder die WareID, mit # vorangestellt.
- param2: regelt, ob a) sowohl Gepäck als auch angelegte Kleidung (Standard), b) nur angelegte Kleidung ('true'), c) nur Gepäck durchsucht werden soll ('false')
- Rückgabe: eine Zahl.
Beispiel:
<store name="anzahl1"><function name="ermittle-item-anzahl" param1="Wolldecke"/></store>
<p>Anzahl Wolldecken: <fetch name="anzahl1"/></p>
<store name="anzahl2"><function name="ermittle-item-anzahl" param1="#2300"/></store>
<p>Anzahl Wolldecken: <fetch name="anzahl2"/></p>
<!-- durchsucht nur das Gepäck nach Goldketten. Angelegte Goldketten werden ignoriert. -->
<store name="anzahl3"><function name="ermittle-item-anzahl" param1="Goldkette" param2="false"/></store>
<p>Anzahl Goldketten (nicht angelegt): <fetch name="anzahl3"/></p>
Diese Funktion funktioniert auch bei Gruppen. In diesem Fall wird die Gesamtsumme der selektierten Helden zurückgegeben.
Funktion "get-ware-from-inventory"
Diese Funktion liest den Warennamen oder die WareninstanzID aus einem Inventar aus.
- param1: Name des Inventars
- param2: wenn 'name' wird der Warenname zurückgegeben, andernfalls die InstanzID
- param3: wenn 'true' wird die Ware aus dem Inventar entfernt
- Rückgabe: der Warenname oder die WareninstanzID, abhängig von param1
Beispiel:
<!-- liest den Warennamen der Ware, die sich in einem Inventar befindet, aus -->
<store name="ware_name"><function name="get-ware-from-inventory" param1="inventarname" param2="name" param3="false"/></store>
Funktion "ist-segelschiff"
Die Funktion prüft, ob das aktuelle Fortbewegungsmittel (auf Reisen) ein Segelschiff ist.
Es wird kein Parameter erwartet.
Rückgabe der Funktion ist 'true' oder 'false'.
Beispiel:
<!-- prüfen, ob Segelschiff. Falls nicht, die ZB/Quest nicht starten -->
<store name="segel"><function name="ist-segelschiff"/></store>
<switch name="segel">
<case val="false">
<quest status="rejected"/>
</case>
</switch>
Funktion "ist-urgott-in-pantheon"
Diese Funktion erlaubt die Prüfung, ob ein Urgott durch eine Gottheit in einem Pantheon repräsentiert wird.
- param1: Hier wird der Urgott angegeben.
- param2: Hier wird das Pantheon angegeben.
- Rückgabe: 'true' oder 'false'.
Beispiel:
<!-- prüfe, ob Urgott 'Epohe' bei den Halblingen repräsentiert wird. Erwartet: true -->
<function name="ist-urgott-in-pantheon" param1="Epohe" param2="Religion der Halblinge" />
Noch ein Beispiel:
<store name="test"><function name="ist-urgott-in-pantheon" param1="Nerga" param2="Glaube der Amazonen" /></store>
<p>Test: prüfe, ob 'Nerga' bei den Amazonen vorkommt. Erwartet: false, Ergebnis: <fetch name="test" /></p>
Funktion "lies-held-von-rangliste"
Diese Funktion liest die Rangliste der glänzendsten Helden und miesesten Schurken aus. Die Funktion gibt den Heldname des angegebenen Platzes der angegebenen Rangliste zurück.
- param1: Welche Rangliste? Entweder 'helden' oder 'schurken'
- param2: Welcher Platz? Hier eine Zahl zwischen 1 und 1000 angeben ...
- Rückgabe: Der Heldname.
Beispiele:
<p>Der glorreichste Held auf Antamar ist <function name="lies-held-von-rangliste" param1="helden" param2="1" />.</p>
<p>Der mieseste Schurke auf Antamar ist <function name="lies-held-von-rangliste" param1="schurken" param2="1" />.</p>
<p>Platz 20 der glorreichsten Helden ist <function name="lies-held-von-rangliste" param1="helden" param2="20" />.</p>
<p>Schurke auf Rang 77 ist: <function name="lies-held-von-rangliste" param1="schurken" param2="77" />.</p>
Hinweis zum Testen: Auf dem Testserver wird keine Rangliste für die glorreichsten Helden und miesesten Schurken berechnet. Deshalb bleibt auf dem Testserver die Ausgabe für die Funktion leer.
Funktion "mach-gegenstand-unklaubar"
Diese Funktion markiert einen Gegenstand intern als unklaubar. Die Funktion wird hier nicht weiter dokumentiert, da sie nur mit Bedacht eingesetzt werden soll, d.h. ausschließlich von den Programmierern. Diese können sich die interne Dokumentation anschauen.
Funktion "steigere-eigenschaft-permanent"
Mit Hilfe dieser Funktion kann der Held einen permanenten Eigenschaftsbonus erlangen. Es kann pro Held maximal 5 Mal gesteigert werden. Dabei darf nie das Eigenschaftsmaximum von 40 Punkten überschritten werden.
Die Anwendung dieser Funktion ist auf der Seite Heldattribute#Eigenschaftswerte_dauerhaft_ver.C3.A4ndern erklärt.
Funktion "waren-wiederfinden"
Die Funktion ist für besonders seltene Zufallsbegegnungen vorgesehen. Sie erlaubt, ehemals verlorene Gegenstände des Helden in derselben ZB wiederzufinden.
- param1 (optional): wenn 'false', werden nur eigene Gegenstände wiedergefunden. Wenn dieser Parameter nicht angegeben ist, oder einen anderen Wert als 'false' enthält, dann werden auch Gegenstände von fremden Helden wiedergefunden.
- Rückgabe: 'true' (wenn mindestens 1 Gegenstand wiedergefunden wurde) oder 'false' (wenn kein Gegenstand aufgenommen wurde).
Beispiel:
<!-- Gegenstände in ZB wiederfinden -->
<function name="waren-wiederfinden" />
<!-- wenn nur EIGENE Gegenstände wiedergefunden werden sollen (keine von fremden Helden) -->
<store name="rueck"><function name="waren-wiederfinden" param1="false"/></store>
<has name="rueck" val="true" show="none">
<success>
<p>Da liegen ja längst verloren geglaubte Sachen von dir - na die packst du aber schnell ein!</p>
</success>
<failure>
<p>Schade, du findest nichts interessantes.</p>
</failure>
</has>