Switch: Unterschied zwischen den Versionen
Elmar (Diskussion | Beiträge) |
Zardoz (Diskussion | Beiträge) |
||
(24 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Das '''<switch>'''-Tag vergleicht eine Angabe mit einer Liste von Werten. Der Zweig mit dem passenden Wert wird ausgeführt. | 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: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <switch attribute|name=""> | ||
+ | <null> | ||
+ | </null> | ||
+ | |||
+ | <case ...> | ||
+ | </case> | ||
+ | |||
+ | <case ...> | ||
+ | </case> | ||
+ | |||
+ | <else> | ||
+ | </else> | ||
+ | </switch> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <br>'''NULL''' wird ausgeführt wenn der Inhalt von NAME oder ATTRIBUTE leer ist. | ||
+ | <br>'''CASE''' wird benutzt, um bestimmte Werte oder Wertebereiche zu prüfen. Hier kann zum Beispiel VAL, MIN oder MAX benutzt werden. | ||
+ | <br>'''ELSE''' wird ausgeführt, wenn die vorherigen Angaben nicht passen. | ||
+ | |||
+ | <br>Tipp: | ||
+ | <br>Wenn eine Variable mit 0 gesetzt wird, muss sie wie folgt abgefragt werden. | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <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> | ||
+ | </syntaxhighlight> | ||
+ | |||
Beispiel: | Beispiel: | ||
− | < | + | <syntaxhighlight lang="xml"> |
<switch attribute="gender"> | <switch attribute="gender"> | ||
− | <case value="female">Ein junger Mann</case> | + | <case value="female">Eine junge Frau</case> |
− | <else> | + | <else>Ein junger Mann</else> |
+ | </switch> | ||
+ | </syntaxhighlight> | ||
+ | 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: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <switch name="Nummer"> | ||
+ | <case min="1" max="5"> | ||
+ | ... | ||
+ | </case> | ||
+ | <else> | ||
+ | ... | ||
+ | </else> | ||
+ | </switch> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==Wahrscheinlichkeits Zweig== | ||
+ | |||
+ | Um für ein Ereignis/Zweig die Wahrscheinlichkeit anzugeben müssen wir erst per [[Get_set|Set]] und einem [[Besondere_Werte#Zahlenbereiche|besonderen Wert]] eine zufällige Zahl in einer Variablen speichern (im Beispiel ''zufall'') | ||
+ | und diese dann per switch prüfen. | ||
+ | |||
+ | Beispiel: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <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> | </switch> | ||
− | </ | + | </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. | |
+ | |||
+ | ==Generische Variablenauswertung im Casezweig== | ||
+ | Um flexiblere Quests aufzubauen, dürfen auch Variablennamen durch Verwendung des name-Attributs ausgewertet werden. | ||
− | + | ===Beispiel=== | |
+ | Szene 1: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <random> | ||
+ | <case> <store name="source">Eisentrutz</store> </case> | ||
+ | <case> <store name="source">Berenhavn</store> </case> | ||
+ | <case> <store name="source">Tamelsquell</store> </case> | ||
+ | </random> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Szene 2: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <switch attribute="site"> | ||
+ | <case name="${source}"><include target="atSourceLocation"/></case> | ||
+ | <else><quest status="pending"/></else> | ||
+ | </switch> | ||
+ | </syntaxhighlight> | ||
− | [[Kategorie:AOQML]] | + | [[Kategorie:AOQML-Tags]] |
Aktuelle Version vom 1. Oktober 2017, 23:22 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>