Item-select: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
(Syntax)
(Beispiele)
 
(10 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
==Syntax==
 
==Syntax==
 
<code xml n>
 
<code xml n>
<item-select item="" target="" [show=""] [continue=""] />
+
<item-select item="" ODER instance-id="" target="" [show=""] [continue=""] />
 
</code>
 
</code>
  
Zeile 11: Zeile 11:
 
!Attribut!! Erforderlich?!! Datentyp!! Erklärung
 
!Attribut!! Erforderlich?!! Datentyp!! Erklärung
 
|-
 
|-
|item||ja||String||Der Warenname, z.B. 'Heiltrank', oder die WareID, z.B. '#921'
+
|item||item oder instance-id||String||Der Warenname, z.B. 'Heiltrank', oder die WareID, z.B. '#921'. Es ist auch möglich, mehrere Items anzugeben, z.B. <nowiki>'Schwert|Dolch|Messer' oder '*Alkohol' um Waren-Tags auszuwerten</nowiki>.
 +
|-
 +
|instance-id||item oder instance-id||Integer||Die interne Waren-Instanz-ID siehe: [[Get#Beispiele_f.C3.BCr_einen_Gegenstand_.28object.3D.22selected-item.22.29|get]], wird instance-id genutzt wird automatisch die in target angegebene Szene aufgerufen. ACHTUNG: Das wirkt wie ein include, folglich ist ein altes selektiertes Item noch ausgewählt. Das ändert sich erst in der Folge-Szene.
 
|-
 
|-
 
|target||ja||String||Gibt die nächste Szene an. In dieser Szene ist dann automatisch der vom Spieler gewählte Gegenstand selektiert.
 
|target||ja||String||Gibt die nächste Szene an. In dieser Szene ist dann automatisch der vom Spieler gewählte Gegenstand selektiert.
Zeile 21: Zeile 23:
  
 
==Beispiele==
 
==Beispiele==
 +
===Select mit "item"===
 
Der Spieler soll einen Heiltrank auswählen. In szene2.xml ist dann intern ein Heiltrank markiert als Object ''selected-item''.
 
Der Spieler soll einen Heiltrank auswählen. In szene2.xml ist dann intern ein Heiltrank markiert als Object ''selected-item''.
  
Zeile 37: Zeile 40:
  
  
In szene2.xml ist dann automatisch intern einer der Heiltränke markiert, sodass Änderungen auf dieser Wareninstanz vorgenommen werden können. Beispielsweise könnte man den Heiltrank trinken lassen und abhängig von der Qualität (Wert zwischen 0 und 100) einen Text ausgeben:
+
In szene2.xml ist dann automatisch intern einer der Heiltränke markiert, sodass Änderungen auf dieser Wareninstanz vorgenommen werden können. Beispielsweise könnte man den Heiltrank trinken lassen und abhängig von der [[Quality (AOQML-Attribut)|Qualität]] (Wert zwischen 0 und 100) einen Text ausgeben:
  
 
<code xml n>
 
<code xml n>
Zeile 81: Zeile 84:
 
</scene>
 
</scene>
 
</code>
 
</code>
 +
 +
===Select mit "instance-id"===
 +
In einer vorhergehenden Szene wurde ein Gegenstand mittels "item" ausgewählt und die Instanz-ID wird gespeichert:
 +
<code xml n>
 +
<store name="instanzID"><get object="selected-item" attribute="instance_id"/></store>
 +
</code>
 +
 +
Später wurde ein anderes item ausgewählt und man möchte zurück zum gespeicherten Objekt:
 +
<code xml n>
 +
<item-select instance-id="${instanzID}" target="include-szene" />
 +
</code>
 +
 +
Die Szene bindet das target automatisch per [[include]] ein. Dies bedeutet das auswählen des alten Objekts ist erst in der darauf folgenden Szene abgeschlossen. Also muss man einen Link zum klicken einfügen, DANN ist das Objekt wieder ausgewählt.
  
 
[[Kategorie:AOQML-Tags]]
 
[[Kategorie:AOQML-Tags]]
[[Kategorie:AOQML]]
 

Aktuelle Version vom 2. Februar 2021, 10:40 Uhr

Der <item-select>-Tag ermöglicht in AOQML die Auflistung von Gegenständen. Der Spieler kann einen der angezeigten Gegenstand anklicken und somit auswählen. Der ausgewählte Gegenstand kann danach durch Attribute wie get ausgelesen und durch set verändert werden.

Syntax

<item-select item="" ODER instance-id="" target="" [show=""] [continue=""] />


Attribut Erforderlich? Datentyp Erklärung
item item oder instance-id String Der Warenname, z.B. 'Heiltrank', oder die WareID, z.B. '#921'. Es ist auch möglich, mehrere Items anzugeben, z.B. 'Schwert|Dolch|Messer' oder '*Alkohol' um Waren-Tags auszuwerten.
instance-id item oder instance-id Integer Die interne Waren-Instanz-ID siehe: get, wird instance-id genutzt wird automatisch die in target angegebene Szene aufgerufen. ACHTUNG: Das wirkt wie ein include, folglich ist ein altes selektiertes Item noch ausgewählt. Das ändert sich erst in der Folge-Szene.
target ja String Gibt die nächste Szene an. In dieser Szene ist dann automatisch der vom Spieler gewählte Gegenstand selektiert.
show optional String Wenn nichts angegeben, werden nur die Warennamen als Link angezeigt. Wenn show="quality" angegeben, wird dahinter auch noch die Qualität des Gegenstandes vermerkt (siehe Beispiel unten).
continue optional Bool Wenn 'true' und wenn der Spieler nur 1 Item der angegebenen Ware hat, dann wird direkt die unter target angegebene Szene ausgeführt.

Beispiele

Select mit "item"

Der Spieler soll einen Heiltrank auswählen. In szene2.xml ist dann intern ein Heiltrank markiert als Object selected-item.

<p>Bitte wähle einen Heiltrank aus.</p>

<item-select item="Heiltrank" target="szene2" show="quality"/>

Sollte der Held keine Ware besitzen, die der Angabe unter item entspricht, werden konsequenterweise auch keine Links ausgegeben. Man sollte also zusätzlich immer noch ein anderes choice bereitstellen.

show="quality" bewirkt, dass nicht nur für jeden Heiltrank ein Link erzeugt wird, sondern hinter jedem Link auch noch der Zustand (Qualität) des Heiltrankes angegeben ist. Hat der Held in diesem Beispiel also mehrere Heiltränke im Gepäck, könnte die Ausgabe wie folgt sein:

Heiltränke mit Qualitätsausgabe


In szene2.xml ist dann automatisch intern einer der Heiltränke markiert, sodass Änderungen auf dieser Wareninstanz vorgenommen werden können. Beispielsweise könnte man den Heiltrank trinken lassen und abhängig von der Qualität (Wert zwischen 0 und 100) einen Text ausgeben:

<!-- szene2.xml -->
<?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">

<store name="heiltrank-quality" scope="quest"><get object="selected-item" attribute="quality"/></store>

<switch name="heiltrank-quality">
  <case val="0">
    <p>Pfui bäh!!!!</p>
    <drop object="selected-item" />
  </case>

  <case min="1" max="20">
    <p>Naja.</p>
    <drop object="selected-item" />
  </case>

  <case min="21" max="50">
    <p>Mittelgut.</p>
    <drop object="selected-item" />
  </case>

  <case min="51" max="80">
    <p>Lecker.</p>
    <drop object="selected-item" />
  </case>

  <case min="81" max="100">
    <p>WOW Super!!!.</p>
    <drop object="selected-item" />
  </case>

  <else>
    <p>Ein Fehler ist aufgetreten. Die Ware liegt außerhalb der Qualitätsskala.</p>
  </else>
</switch>

<quest status="ended"/>

</scene>

Select mit "instance-id"

In einer vorhergehenden Szene wurde ein Gegenstand mittels "item" ausgewählt und die Instanz-ID wird gespeichert:

<store name="instanzID"><get object="selected-item" attribute="instance_id"/></store>

Später wurde ein anderes item ausgewählt und man möchte zurück zum gespeicherten Objekt:

<item-select instance-id="${instanzID}" target="include-szene" />

Die Szene bindet das target automatisch per include ein. Dies bedeutet das auswählen des alten Objekts ist erst in der darauf folgenden Szene abgeschlossen. Also muss man einen Link zum klicken einfügen, DANN ist das Objekt wieder ausgewählt.