Switch: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
K (Held_Attribute zu Heldattribute / Besonderen zu besonderen geändert)
K (syntaxhighlight)
Zeile 2: Zeile 2:
  
 
Der gesamte '''<switch>'''-Tag sieht wir folgt aus:
 
Der gesamte '''<switch>'''-Tag sieht wir folgt aus:
<code xml>
+
<syntaxhighlight lang="xml">
 
<switch attribute|name="">
 
<switch attribute|name="">
 
   <null>
 
   <null>
Zeile 16: Zeile 16:
 
   </else>
 
   </else>
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
  
 
<br>'''NULL''' wird ausgeführt wenn der Inhalt von NAME oder ATTRIBUTE leer ist.
 
<br>'''NULL''' wird ausgeführt wenn der Inhalt von NAME oder ATTRIBUTE leer ist.
Zeile 24: Zeile 24:
 
<br>Tipp:
 
<br>Tipp:
 
<br>Wenn eine Variable mit 0 gesetzt wird, muss sie wie folgt abgefragt werden.
 
<br>Wenn eine Variable mit 0 gesetzt wird, muss sie wie folgt abgefragt werden.
<code xml>
+
<syntaxhighlight lang="xml">
 
<store name="test" scope="...">0</store> <!-- gesetzte Variable -->
 
<store name="test" scope="...">0</store> <!-- gesetzte Variable -->
  
Zeile 32: Zeile 32:
 
<else>...</else> <!-- bei ungleich 0 -->
 
<else>...</else> <!-- bei ungleich 0 -->
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
  
 
Beispiel:
 
Beispiel:
<code xml>
+
<syntaxhighlight lang="xml">
 
<switch attribute="gender">
 
<switch attribute="gender">
 
   <case value="female">Eine junge Frau</case>
 
   <case value="female">Eine junge Frau</case>
 
   <else>Ein junger Mann</else>
 
   <else>Ein junger Mann</else>
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
 
Der Zweig '''<else>''' wird ausgeführt, wenn das Geschlecht nicht weiblich ist.
 
Der Zweig '''<else>''' wird ausgeführt, wenn das Geschlecht nicht weiblich ist.
  
Zeile 50: Zeile 50:
  
 
Man kann auch Wertebereiche abfragen:
 
Man kann auch Wertebereiche abfragen:
<code xml>
+
<syntaxhighlight lang="xml">
 
<switch name="Nummer">
 
<switch name="Nummer">
 
   <case min="1" max="5">
 
   <case min="1" max="5">
Zeile 59: Zeile 59:
 
   </else>
 
   </else>
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
  
 
==Wahrscheinlichkeits Zweig==
 
==Wahrscheinlichkeits Zweig==
Zeile 67: Zeile 67:
  
 
Beispiel:
 
Beispiel:
<code xml>
+
<syntaxhighlight lang="xml">
 
<set name="zufall" val="1...100" show="none"/>
 
<set name="zufall" val="1...100" show="none"/>
 
<switch name="zufall">
 
<switch name="zufall">
Zeile 80: Zeile 80:
 
   </else>
 
   </else>
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
 
Das Beispiel führt zu einer 25% igen Wahrscheinlichkeit den ersten Zweig aus, zu 40% den Zweiten und somit zu 35% den else-Zweig.
 
Das Beispiel führt zu einer 25% igen Wahrscheinlichkeit den ersten Zweig aus, zu 40% den Zweiten und somit zu 35% den else-Zweig.
  
Zeile 88: Zeile 88:
 
===Beispiel===
 
===Beispiel===
 
Szene 1:
 
Szene 1:
<code xml>
+
<syntaxhighlight lang="xml">
 
<random>
 
<random>
 
  <case><store name="source">Eisentrutz</store></case>
 
  <case><store name="source">Eisentrutz</store></case>
Zeile 94: Zeile 94:
 
  <case><store name="source">Tamelsquell</store></case>
 
  <case><store name="source">Tamelsquell</store></case>
 
</random>
 
</random>
</code>
+
</syntaxhighlight>
  
 
Szene 2:
 
Szene 2:
<code xml>
+
<syntaxhighlight lang="xml">
 
<switch attribute="site">
 
<switch attribute="site">
 
     <case name="${source}"><include target="atSourceLocation"/></case>
 
     <case name="${source}"><include target="atSourceLocation"/></case>
 
     <else><quest status="pending"/></else>
 
     <else><quest status="pending"/></else>
 
</switch>
 
</switch>
</code>
+
</syntaxhighlight>
  
 
[[Kategorie:AOQML-Tags]]
 
[[Kategorie:AOQML-Tags]]

Version vom 10. März 2017, 16:44 Uhr

Das <switch>-Tag vergleicht eine Angabe mit einer Liste von Werten. Der Zweig mit dem passenden Wert wird ausgeführt.

Der gesamte <switch>-Tag sieht wir folgt aus:

<switch attribute|name="">
  <null>
  </null>

  <case ...>
  </case>

  <case ...>
  </case>

  <else>
  </else>
</switch>


NULL wird ausgeführt wenn der Inhalt von NAME oder ATTRIBUTE leer ist.
CASE wird benutzt, um bestimmte Werte oder Wertebereiche zu prüfen. Hier kann zum Beispiel VAL, MIN oder MAX benutzt werden.
ELSE wird ausgeführt, wenn die vorherigen Angaben nicht passen.


Tipp:
Wenn eine Variable mit 0 gesetzt wird, muss sie wie folgt abgefragt werden.

<store name="test" scope="...">0</store> <!-- gesetzte Variable -->

<switch name="test">
<null>...</null> <!-- hat hier keine Auswirkung -->
<case val="0">...</case> <!-- wird in dem Fall ausgeführt -->
<else>...</else> <!-- bei ungleich 0 -->
</switch>

Beispiel:

<switch attribute="gender">
  <case value="female">Eine junge Frau</case>
  <else>Ein junger Mann</else>
</switch>

Der Zweig <else> wird ausgeführt, wenn das Geschlecht nicht weiblich ist.


Eine Liste der Attribute zur Verwendung mit dem attribute Tag gibt's hier: Heldattribute

Außerdem können mit dem name Tag die selben Variablen wie bei Set abgefragt werden.


Man kann auch Wertebereiche abfragen:

<switch name="Nummer">
  <case min="1" max="5">
    ...
  </case>
  <else>
    ...
  </else>
</switch>

Wahrscheinlichkeits Zweig

Um für ein Ereignis/Zweig die Wahrscheinlichkeit anzugeben müssen wir erst per Set und einem besonderen Wert eine zufällige Zahl in einer Variablen speichern (im Beispiel zufall) und diese dann per switch prüfen.

Beispiel:

<set name="zufall" val="1...100" show="none"/>
<switch name="zufall">
  <case min="1" max="25">
    ...
  </case>
  <case min="26" max="65">
    ...
  </case>
  <else>
    ...
  </else>
</switch>

Das Beispiel führt zu einer 25% igen Wahrscheinlichkeit den ersten Zweig aus, zu 40% den Zweiten und somit zu 35% den else-Zweig.

Generische Variablenauswertung im Casezweig

Um flexiblere Quests aufzubauen, dürfen auch Variablennamen durch Verwendung des name-Attributs ausgewertet werden.

Beispiel

Szene 1:

<random>
 <case><store name="source">Eisentrutz</store></case>
 <case><store name="source">Berenhavn</store></case>
 <case><store name="source">Tamelsquell</store></case>
</random>

Szene 2:

<switch attribute="site">
    <case name="${source}"><include target="atSourceLocation"/></case>
    <else><quest status="pending"/></else>
</switch>