Select: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
(hero-Attribut kann nun auch 'nr_<Zahl>' erhalten)
(Beispiel ergänzt)
 
(15 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:
  
  
=== Syntax ===
+
== Syntax ==
 
<code xml n>
 
<code xml n>
<select [[role="" [count="0"]] [all="false"] [hero=""] />
+
<select role="" count="0" all="false" hero="" by-attribute="" by-talent="" by-quality="" by-name="" by-item="" val="" min="" max="" inverted="" />
 
</code>
 
</code>
  
* '''role''': Rollenbezeichnung innerhalb der Gruppe. Möglich sind 'Anführer', 'Dieb', 'Kämpfer', 'Mitreisender'. Wenn es keinen Helden mit dieser Rolle in der Gruppe gibt, wird automatisch der Gruppenleiter selektiert.
+
{| class="wikitable sortable"
* '''count''': Schränkt die Anzahl an zu selektierenden Helden auf Basis der Rollenbezeichnung ein. Wenn bspw. 2 angegeben, werden höchstens zwei Helden selektiert.
+
|-
* '''all''': Mit all="true" können alle Helden der Gruppe selektiert werden (standardmäßig zu Beginn einer Gruppen-ZB/-Quest)
+
!Attribut!! Standardwert!! Erklärung
* '''hero''': Dieses Attribut ist relativ flexibel. Folgende Angaben sind möglich:
+
|-
:: - ''nr_<Zahl>'': z.B. 'nr_1' um den ersten Helden der Gruppe auszuwählen. 'nr_2' um den zweiten Helden der Gruppe auszuwählen usw.
+
|role||||Rollenbezeichnung innerhalb der Gruppe. Möglich sind 'Anführer', 'Dieb', 'Kämpfer', 'Mitreisender'. Wenn es keinen Helden mit dieser Rolle in der Gruppe gibt, wird automatisch der Gruppenleiter selektiert.
:: - die HeldID eines Helden der Gruppe (Achtung: Der Held muss sich in der Gruppe befinden!). Die HeldID kann bspw. via dem [[hero]]-Tag ermittelt werden.
+
|-
:: - der Heldname. Da der Heldname jedoch nicht eindeutig ist, es könnte z.B. zwei "Jasper" in der Gruppe geben, sollte immer die HeldID stattdessen verwendet werden.
+
|count||0||Schränkt die Anzahl an zu selektierenden Helden ein. Wenn bspw. 2 angegeben, werden höchstens zwei Helden selektiert. Wenn 0, dann gibt es keine Beschränkung.
 +
|-
 +
|all||false||Mit all="true" können alle Helden der Gruppe selektiert werden.
 +
|-
 +
|hero||||Hier kann die '''HeldID''' eines Helden der Gruppe (Achtung: Der Held muss sich in der Gruppe befinden!) angegeben werden. Die HeldID kann bspw. via dem [[hero]]-Tag ermittelt werden.
 +
|-
 +
|by-attribute||||Hier kann ein [[Heldattribute|Attribut]] angegeben werden.
 +
|-
 +
|by-talent||||Hier kann eine Fertigkeit, wie z.B. 'Schwimmen', angegeben werden.
 +
|-
 +
|by-quality||||Hier kann eine Eigenschaft, wie z.B. 'ST', angegeben werden.
 +
|-
 +
|by-name||||Hier kann eine Variable angegeben werden. Dies ist sinnvoll, wenn eine Heldvariable (Scope="hero") abgefragt werden soll.
 +
|-
 +
|by-item||||Hier kann der Name einer Ware angegeben werden, um diejenigen Helden zu selektieren, die einen solchen Gegenstand bei sich haben.
 +
|-
 +
|val|||||(nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Wenn ein bestimmter Wert gesetzt sein soll.
 +
|-
 +
|min||||(nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Angabe eines Mindestwertes
 +
|-
 +
|max||||(nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Angabe eines Maximalwertes
 +
|-
 +
|inverted||false||Mit inverted="true" kann angegeben werden, dass alle diejenigen Helden selektiert werden sollen, welche gerade nicht selektiert sind. Funktioniert auch in Verbindung mit ''count''. Hinweis: Falls derzeit alle Helden selektiert sind, ist im Anschluss nur der Gruppenführer selektiert.
 +
|}
  
 +
== Beispiele ==
  
=== Beispiele ===
+
=== Kämpfer auswählen ===
 
 
1)
 
 
<code xml n>
 
<code xml n>
 
<select role="Kämpfer" />
 
<select role="Kämpfer" />
Zeile 34: Zeile 56:
 
</code>
 
</code>
  
2)
+
 
 +
=== Diebe auswählen ===
 
<code xml n>
 
<code xml n>
 
<select role="Dieb" count="1" />
 
<select role="Dieb" count="1" />
Zeile 45: Zeile 68:
 
</code>
 
</code>
  
3)
+
 
 +
=== Gruppenführer auswählen ===
 
<code xml n>
 
<code xml n>
 
<select role="Anführer"/>
 
<select role="Anführer"/>
Zeile 54: Zeile 78:
 
</code>
 
</code>
  
4)
+
 
 +
=== zufälligen Held auswählen ===
 +
<code xml n>
 +
<select role="*" count="1"/>
 +
</code>
 +
 
 +
 
 +
=== Held nach einer Probe auswählen ===
 
<code xml n>
 
<code xml n>
<!-- Annahme: eine Probe mit der ID "Pr1" wurde in der Szene bereits durchgeführt -->
+
<!-- Annahme: eine Probe mit name="Pr1" wurde in der Szene bereits durchgeführt -->
<store name="heldid" scope="quest"><hero output="id" by-challenge="Pr1" select="worst"/></store>
+
<store name="id_held" scope="quest"><hero output="id" by-challenge="Pr1" select="worst"/></store>
<select hero="${heldid}"/><!-- Wählt den schlechtesten Held der Probe Pr1. -->  
+
<select hero="${id_held}"/><!-- Wählt den schlechtesten Held der Probe Pr1. -->  
 
</code>
 
</code>
  
 +
=== Helden anhand einer Eigenschaft wählen ===
 +
Wählt alle Helden aus, die mindestens IQ 15 haben.
 +
<code xml>
 +
<select by-quality="IQ" min="15" />
 +
</code>
 +
 +
 +
=== Helden anhand einer Fertigkeit wählen ===
 +
Wählt alle Helden aus, die Gassenwissen maximal 5 haben.
 +
<code xml>
 +
<select by-talent="Gassenwissen" max="5" />
 +
</code>
 +
 +
 +
=== Helden anhand einer Variable wählen ===
 +
Wählt alle Helden aus, die die Variable ''soelder_rang'' haben.
 +
<code xml>
 +
<select by-name="soelder_rang" />
 +
</code>
 +
 +
 +
=== Helden anhand einer Ware wählen ===
 +
Wählt alle Helden aus, die einen Gewürzkuchen bei sich haben.
 +
<code xml>
 +
<select by-item="Gewürzkuchen" min="1" />
 +
</code>
  
  
 
=== Alle Helden nacheinander wählen ===
 
=== Alle Helden nacheinander wählen ===
  
Mit folgender Methode kann man alle SC der Gruppe nacheinander anwählen:
+
Um jedes Gruppenmitglied nacheinander anzuwählen, kann man auf eine [[for]]-Schleife zurückgreifen. '''Achtung''': Im Anschluss ist nur noch ein Held selektiert (nämlich der letzte, der sich vorgestellt hat).
  
<code xml n>
+
<code xml>
<retain name="helden-durchgehen" id="helden-durchgehen-1">
+
<for all="${sys:heroes}" name="heldid">
   <set name="aktuelle_nr" inc="1" show="none"/><!-- zum Debuggen show="result" verwenden -->
+
   <select hero="${heldid}"/>
 
+
  <p>Name: <get attribute="name"/></p>
  <!-- Held selektieren -->
+
</for>
  <store name="heroAttr">nr_<fetch name="aktuelle_nr"/></store><!-- z.B. nr_1 -->
+
</code>
   <select hero="${heroAttr}"/>
+
 
  <p><q>Hallo, ich heiße <get attribute="name"/> und ich bin <get attribute="race"/></q>.</p>
+
=== Aus einer Gruppe einen Helden anhand eines Attributes wählen und danach nennen ===
 
+
Wählt einen Helden aus, der magisch begabt ist, und gibt anschließend dessen Namen als Teil des Textes aus.
  <!-- gibt es noch weitere Gruppenmitglieder? -->
+
<code xml>
  <switch attribute="anzahl_gruppenmitglieder">
+
<for all="${sys:heroes}" name="heldid">
    <case name="aktuelle_nr">
+
   <select hero="${heldid}"/>
      <!-- Unsere Variable 'aktuelle_nr' entspricht jetzt dem Attribut 'anzahl_gruppenmitglieder'.
+
    <has attribute="magisch" val="true" show="none">
      Daher wurden alle Gruppenmitglieder einmal aufgerufen.
+
      <success>
      Daher nichts weiter machen. -->
+
        <store name="magischbegabt" scope="scene"><get attribute="name"/></store>
    </case>
+
      </success>
     <else>
+
    </has> 
      <p>Der nächste:</p>
+
</for>
      <!-- sich erneut aufrufen -->
+
<has name="magischbegabt" show="none">
      <replay name="helden-durchgehen" />
+
  <success>
    </else>
+
     <p>Mit seinem Stab wirkt <get name="magischbegabt"/> einen Stabzauber.</p>
  </switch>
+
  </success>
</retain>
+
</has>
 +
</code>
 +
 
 +
=== Die anderen Helden wählen ===
 +
 
 +
Um diejenigen Helden auszuwählen, welche gerade nicht selektiert sind:
  
<p>In diesem kleinen Beispiel stellen sich alle Helden der Gruppe kurz vor:</p>
+
<code xml>
<store name="aktuelle_nr">0</store>
+
<select inverted="true" />
<replay name="helden-durchgehen"/>
 
 
</code>
 
</code>
  
  
[[Kategorie:AOQML]]
+
[[Kategorie:AOQML-Tags]]
[[Kategorie:Gruppe]]
 
[[Kategorie:Mitarbeit]]
 

Aktuelle Version vom 11. Februar 2024, 20:41 Uhr

Mit Hilfe des select-Tags kann in AOQML bei einer Gruppenbegegnung ein oder mehrere Helden der Gruppe selektiert werden, sodass die folgenden Befehle (nicht alle, aber viele) nur für die selektierten Helden gelten. Beispiele zur Verwendung:

  • nur selektierte Helden sollen Talentprobe durchführen
  • nur selektierte Helden sollen Gegenstände aufnehmen
  • nur selektierte Helden erhalten LEP-Schaden
  • usw.


Syntax

<select role="" count="0" all="false" hero="" by-attribute="" by-talent="" by-quality="" by-name="" by-item="" val="" min="" max="" inverted="" />
Attribut Standardwert Erklärung
role Rollenbezeichnung innerhalb der Gruppe. Möglich sind 'Anführer', 'Dieb', 'Kämpfer', 'Mitreisender'. Wenn es keinen Helden mit dieser Rolle in der Gruppe gibt, wird automatisch der Gruppenleiter selektiert.
count 0 Schränkt die Anzahl an zu selektierenden Helden ein. Wenn bspw. 2 angegeben, werden höchstens zwei Helden selektiert. Wenn 0, dann gibt es keine Beschränkung.
all false Mit all="true" können alle Helden der Gruppe selektiert werden.
hero Hier kann die HeldID eines Helden der Gruppe (Achtung: Der Held muss sich in der Gruppe befinden!) angegeben werden. Die HeldID kann bspw. via dem hero-Tag ermittelt werden.
by-attribute Hier kann ein Attribut angegeben werden.
by-talent Hier kann eine Fertigkeit, wie z.B. 'Schwimmen', angegeben werden.
by-quality Hier kann eine Eigenschaft, wie z.B. 'ST', angegeben werden.
by-name Hier kann eine Variable angegeben werden. Dies ist sinnvoll, wenn eine Heldvariable (Scope="hero") abgefragt werden soll.
by-item Hier kann der Name einer Ware angegeben werden, um diejenigen Helden zu selektieren, die einen solchen Gegenstand bei sich haben.
val (nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Wenn ein bestimmter Wert gesetzt sein soll.
min (nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Angabe eines Mindestwertes
max (nur in Kombination mit by-attribute/by-talent/by-quality/by-name/by-item) Angabe eines Maximalwertes
inverted false Mit inverted="true" kann angegeben werden, dass alle diejenigen Helden selektiert werden sollen, welche gerade nicht selektiert sind. Funktioniert auch in Verbindung mit count. Hinweis: Falls derzeit alle Helden selektiert sind, ist im Anschluss nur der Gruppenführer selektiert.

Beispiele

Kämpfer auswählen

<select role="Kämpfer" />
<!-- wählt alle Kämpfer in der Gruppe aus.
Die folgende Probe wird folglich auf die selektierten Kämpfer durchgeführt. -->

<challenge quality="ST" mod="3">
...
</challenge>


Diebe auswählen

<select role="Dieb" count="1" />
<!-- wählt genau einen Dieb aus der Gruppe aus.
Die folgende Probe wird nur von diesem selektierten Helden durchgeführt. -->

<challenge talent="Schlösser öffnen">
...
</challenge>


Gruppenführer auswählen

<select role="Anführer"/>
<!-- selektiert den Gruppenleiter -->

<take item="Reiseproviant" />
<!-- nur der Gruppenleiter erhält eine Portion Reiseproviant -->


zufälligen Held auswählen

<select role="*" count="1"/>


Held nach einer Probe auswählen

<!-- Annahme: eine Probe mit  name="Pr1" wurde in der Szene bereits durchgeführt -->
<store name="id_held" scope="quest"><hero output="id" by-challenge="Pr1" select="worst"/></store>
<select hero="${id_held}"/><!-- Wählt den schlechtesten Held der Probe Pr1. -->

Helden anhand einer Eigenschaft wählen

Wählt alle Helden aus, die mindestens IQ 15 haben.

<select by-quality="IQ" min="15" />


Helden anhand einer Fertigkeit wählen

Wählt alle Helden aus, die Gassenwissen maximal 5 haben.

<select by-talent="Gassenwissen" max="5" />


Helden anhand einer Variable wählen

Wählt alle Helden aus, die die Variable soelder_rang haben.

<select by-name="soelder_rang" />


Helden anhand einer Ware wählen

Wählt alle Helden aus, die einen Gewürzkuchen bei sich haben.

<select by-item="Gewürzkuchen" min="1" />


Alle Helden nacheinander wählen

Um jedes Gruppenmitglied nacheinander anzuwählen, kann man auf eine for-Schleife zurückgreifen. Achtung: Im Anschluss ist nur noch ein Held selektiert (nämlich der letzte, der sich vorgestellt hat).

<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
  <p>Name: <get attribute="name"/></p>
</for>

Aus einer Gruppe einen Helden anhand eines Attributes wählen und danach nennen

Wählt einen Helden aus, der magisch begabt ist, und gibt anschließend dessen Namen als Teil des Textes aus.

<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
    <has attribute="magisch" val="true" show="none">
      <success>
        <store name="magischbegabt" scope="scene"><get attribute="name"/></store>
      </success>
    </has>  
</for>
<has name="magischbegabt" show="none">
  <success>
    <p>Mit seinem Stab wirkt <get name="magischbegabt"/> einen Stabzauber.</p>
  </success>
</has>

Die anderen Helden wählen

Um diejenigen Helden auszuwählen, welche gerade nicht selektiert sind:

<select inverted="true" />