Set: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
(expire statt duration (Vereinheitlichung mit store, duration funktioniert aber weiterhin) und scope eingeführt)
 
(15 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
== Syntax ==
 
== Syntax ==
 
<code xml n>
 
<code xml n>
<set [object="hero"] [scope="quest"] [attribute=""] [quality=""] [talent=""] [name=""] [inc=""] [dec=""] [val=""] [expire=""] />
+
<set [object="hero"] [attribute=""] [quality=""] [talent=""] [name=""] [scope="quest"] [inc=""] [dec=""] [val=""] [expire=""] [target=""] />
 
</code>
 
</code>
  
*'''object''': Standardmäßig wird der aktive Held betrachtet und dessen Werte manipuliert. Es lassen sich jedoch noch weitere Objekte manipulieren:
+
 
 +
{| class="wikitable sortable"
 +
|-
 +
!Attribut!! Datentyp!! Standardwert!! Erklärung
 +
|-
 +
|object||String||hero||Standardmäßig wird der aktive Held betrachtet und dessen Werte manipuliert. Es lassen sich jedoch weitere Objekte manipulieren:
 
: Ist ''object="selected-item"'' angegeben, wird auf einem zuvor selektierten Gegenstand (siehe [[item-select]]) gearbeitet und dessen Attribute verändert.
 
: Ist ''object="selected-item"'' angegeben, wird auf einem zuvor selektierten Gegenstand (siehe [[item-select]]) gearbeitet und dessen Attribute verändert.
 
: Ist ''object="ordenshaus"'' angegeben, werden Werte des Ordenshauses, in dem sich der Held befindet, verändert.
 
: Ist ''object="ordenshaus"'' angegeben, werden Werte des Ordenshauses, in dem sich der Held befindet, verändert.
*'''scope'''  und die Art wie eine Variable gespeichert wird. Hierbei [[ScopeValues|verschiedene Möglichkeiten]].
+
|-
*'''attribute''' beim Helden alle möglichen [[Held Attribute|Heldenattribute]]. Beachte: Es lassen sich nicht alle Heldenattribute verändern, einige Attribute sind nur lesbar.
+
|attribute||String||||beim Helden alle möglichen [[Held Attribute|Heldenattribute]]. Beachte: Es lassen sich nicht alle Heldenattribute verändern, einige Attribute sind nur lesbar.
 
: Bei einem Gegenstand ''(object="selected-item")'' kann das Attribut 'quality' (Zustand des Items, ein Wert zwischen 0 und 100) verändert werden.
 
: Bei einem Gegenstand ''(object="selected-item")'' kann das Attribut 'quality' (Zustand des Items, ein Wert zwischen 0 und 100) verändert werden.
 
: Bei einem Ordenshaus ''(object="ordenshaus")'' kann das Attribut 'schatz' verändert werden (nur mittels ''inc'' oder ''dec'', '''nicht''' mittels val/value!)
 
: Bei einem Ordenshaus ''(object="ordenshaus")'' kann das Attribut 'schatz' verändert werden (nur mittels ''inc'' oder ''dec'', '''nicht''' mittels val/value!)
*'''quality''' beim Held kann man Eigenschaften temporär verändern, siehe Beispiele weiter unten
+
|-
*'''talent''' beim Held kann man Fertigkeitswerte temporär verändern, siehe Beispiele weiter unten
+
|quality||String||||beim Held kann man Eigenschaften temporär verändern, siehe Beispiele weiter unten
*'''name''' der Name einer Variable, die verändert werden sol
+
|-
*'''inc''' zur Erhöhung von Zahlenwerten bei Variablen oder Attributen
+
|talent||String||||beim Held kann man Fertigkeitswerte temporär verändern, siehe Beispiele weiter unten
*'''dec''' zur Verringerung von Zahlenwerten bei Variablen oder Attributen
+
|-
*'''expire''' diese Angabe wird benötigt, wenn beim Held eine Eigenschaft oder eine Fertigkeit temporär verändert werden soll
+
|name||String||||der Name der Variable, die verändert werden soll
 +
|-
 +
|scope||String||quest||Bezeichnet den Gültigkeitsbereich, wie eine Variable gespeichert wird. Hierzu [[ScopeValues|verschiedene Möglichkeiten]].
 +
|-
 +
|inc||Integer||||zur Erhöhung von Werten
 +
|-
 +
|dec||Integer||||zur Verringerung von Werten
 +
|-
 +
|val||(mixed)||||Der neue Wert für die Variable oder das Attribut.
 +
|-
 +
|expire||String||||diese Angabe wird benötigt, wenn beim Held eine Eigenschaft oder eine Fertigkeit temporär verändert werden soll, siehe Beispiele weiter unten
 +
|-
 +
|target||String||||Kann in Verbindung mit <set attribute="wounds"/> benutzt werden, siehe Beispiel weiter unten
 +
|}
  
 
== Beispiele für den Held ==
 
== Beispiele für den Held ==
Zeile 33: Zeile 51:
  
 
dec, inc, val, attribute und name können alle auch [[Besondere Werte]] annehmen.
 
dec, inc, val, attribute und name können alle auch [[Besondere Werte]] annehmen.
 +
  
 
=== Eigenschaften temporär ändern ===
 
=== Eigenschaften temporär ändern ===
Zeile 38: Zeile 57:
 
Eigenschaften können mittels ''set'' temporär verändert werden. Beispiele:
 
Eigenschaften können mittels ''set'' temporär verändert werden. Beispiele:
 
<code xml n>
 
<code xml n>
<set quality="ST" inc="4" duration="10 days" /><!-- erhöht Stärke um 4 für 10 Tage -->
+
<set quality="ST" inc="4" expire="10 days" /><!-- erhöht Stärke um 4 für ingame 10 Tage -->
<set quality="FF" dec="2" duration="3 hours" /><!-- verringert Fingerfertigkeit um 2 für 3 Stunden -->
+
<set quality="FF" dec="2" expire="3 hours" /><!-- verringert Fingerfertigkeit um 2 für ingame 3 Stunden -->
 +
<set quality="MR" inc="3" expire="1D" /><!-- erhöht Magieresistenz um 3 für 1 Echtzeit-Tag -->
 
</code>
 
</code>
 +
Erlaubte Zeitformate: 2d (2 Ingame-Tage), 2 days (2 Ingame-Tage), 2D (2 Echtzeit-Tage)
  
 
=== Fertigkeiten temporär ändern ===
 
=== Fertigkeiten temporär ändern ===
Zeile 46: Zeile 67:
 
Fertigkeitswerte (Talentwerte) können ebenfalls temporär verändert werden. Beispiele:
 
Fertigkeitswerte (Talentwerte) können ebenfalls temporär verändert werden. Beispiele:
 
<code xml n>
 
<code xml n>
<set talent="Sinnenschärfe" inc="4" duration="10 days" /><!-- erhöht den FeW "Sinnenschärfe" um 4 für 10 Tage -->
+
<set talent="Sinnenschärfe" inc="4" expire="10 days" /><!-- erhöht den FeW "Sinnenschärfe" um 4 für 10 Tage -->
<set talent="Schwimmen" dec="2" duration="3 hours" /><!-- verringert den FeW "Schwimmen" um 2 für 3 Stunden -->
+
<set talent="Schwimmen" dec="2" expire="3 hours" /><!-- verringert den FeW "Schwimmen" um 2 für 3 Stunden -->
 
</code>
 
</code>
 +
Erlaubte Zeitformate: 2d (2 Ingame-Tage), 2 days (2 Ingame-Tage), 2D (2 Echtzeit-Tage)
  
 
=== Eigene Variablen verändern ===
 
=== Eigene Variablen verändern ===
Zeile 62: Zeile 84:
 
Es handelt sich dabei um dieselben Variablen wie bei [[Store_fetch]].
 
Es handelt sich dabei um dieselben Variablen wie bei [[Store_fetch]].
  
 +
 +
=== Eine Wunde verursachen ===
 +
 +
Der folgende Code schlägt eine Wunde beim Helden.
 +
<code xml>
 +
<set attribute="wounds" inc="1" />
 +
</code>
 +
Die Trefferzone würde dabei zufällig gewählt werden.
 +
 +
Möchte man eine bestimmte [[Trefferzone]] festlegen, kann dies wie folgt geschehen:
 +
<code xml>
 +
<set attribute="wounds" inc="1" target="linker Arm" />
 +
</code>
 +
 +
Hier würde eine Zone am linken Arm des Helden verursacht werden. Mögliche [[Trefferzonen]] sind:
 +
<code>
 +
Kopf
 +
Brust
 +
linker Arm
 +
rechter Arm
 +
Bauch
 +
linkes Bein
 +
rechtes Bein
 +
</code>
 +
Beachte die korrekte Groß-/Kleinschreibung der Trefferzone, ansonsten wird sie nicht erkannt!
 +
 +
=== Vorhandene Geldmenge anpassen ===
 +
 +
Im Wesentlichen gibt es drei verschiedene Möglichkeiten den Inhalt der Geldbörse eines Helden zu modifizieren:
 +
 +
'''1. Auf Null setzen.'''
 +
 +
<code xml>
 +
<set attribute="cash" val="0"/>
 +
</code>
 +
 +
Sehr populär nach verlorenen Kämpfen. In jedem Fall sollte hierbei das [[Heldattribute#Allgemein|Attribut ''welpenschutz'']] beachtet werden. Grundsätzlich gilt: Möglichst kein vollständiges Ausplündern von Junghelden! Die üblichen Ausnahmen sind Aivarunen, besondere Gegner, Orks, usw. ...
 +
 +
'''2. Geld vergeben oder entnehmen.'''
 +
 +
<code xml>
 +
<!-- Geld erhöht um 5 Gulden, 3 Thaler und 6 Groschen -->
 +
 +
<set attribute="cash" inc="536"/>
 +
 +
<!-- Geld gesenkt um 13 Gulden, 1 Thaler und 3 Groschen -->
 +
 +
<set attribute="cash" dec="1313"/>
 +
</code>
 +
 +
Entsprechende Varianten kommen häufig bei Belohnungen oder kleinen Diebstählen vor. In jedem Fall sind sie dazu da, Geld um feste Werte zu verändern.
 +
 +
'''Stolperfalle''': Wenn ihr Helden für etwas bezahlen lassen wollt, solltet ihr erst mit [[Switch]] oder [[Has]] prüfen, ob das Geld auch wirklich vorhanden ist, ansonsten wird so viel abgezogen, wie da ist, und es geht trotzdem weiter.
 +
 +
'''3. Prozentualer Geldverlust.'''
 +
 +
Manchmal muss es jedoch etwas mehr sein ... Wenn man einem Helden eine größere Menge Geld in Relation zum vorhandenen abknöpfen möchte, ohne ihn gleich völlig auszunehmen, gibt es noch die Möglichkeit, einen Prozentwert festzulegen, der abgezogen werden soll:
 +
 +
<code xml>
 +
<!-- 50% des Geldes entfernt -->
 +
 +
<set attribute="cash" dec="*50%"/>
 +
</code>
 +
 +
Hierbei ist zu beachten, dass die prozentuale Veränderung des Geldes ausschließlich mit ''dec'' funktioniert, um missbräuchliche Geldvermehrung von vornherein auszuschließen!
  
 
== Beispiele für einen Gegenstand (object="selected-item") ==
 
== Beispiele für einen Gegenstand (object="selected-item") ==
  
Wurde zuvor ein Gegenstand via [[item-select]] ausgewählt, kann das Warenattribut ''quality'' (der Zustand des Gegenstandes) verändert werden:
+
Wurde zuvor ein Gegenstand via [[item-select]] ausgewählt, kann das Warenattribut ''[[Quality (AOQML-Attribut)|quality]]'' (der Zustand des Gegenstandes) verändert werden:
  
 
<code xml n>
 
<code xml n>
Zeile 77: Zeile 164:
 
<set object="selected-item" attribute="quality" val="100" />
 
<set object="selected-item" attribute="quality" val="100" />
 
</code>
 
</code>
 
 
  
 
== Beispiele für das Ordenshaus (object="ordenshaus") ==
 
== Beispiele für das Ordenshaus (object="ordenshaus") ==
Zeile 103: Zeile 188:
  
 
[[Kategorie:AOQML-Tags]]
 
[[Kategorie:AOQML-Tags]]
[[Kategorie:AOQML]]
 

Aktuelle Version vom 17. September 2020, 09:00 Uhr

Die Tags get und set geben Zugriff auf die Werte des Helden, also die Eigenschaften, Lebensenergie, Ausdauer, Abenteuerpunkte, Talentwerte etc. Get liest die Werte aus, mit set kann man sie verändern um z.B. Schadenspunkte oder Erfahrungspunkte zu verteilen.

Syntax

<set [object="hero"] [attribute=""] [quality=""] [talent=""] [name=""] [scope="quest"] [inc=""] [dec=""] [val=""] [expire=""] [target=""] />


Attribut Datentyp Standardwert Erklärung
object String hero Standardmäßig wird der aktive Held betrachtet und dessen Werte manipuliert. Es lassen sich jedoch weitere Objekte manipulieren:
Ist object="selected-item" angegeben, wird auf einem zuvor selektierten Gegenstand (siehe item-select) gearbeitet und dessen Attribute verändert.
Ist object="ordenshaus" angegeben, werden Werte des Ordenshauses, in dem sich der Held befindet, verändert.
attribute String beim Helden alle möglichen Heldenattribute. Beachte: Es lassen sich nicht alle Heldenattribute verändern, einige Attribute sind nur lesbar.
Bei einem Gegenstand (object="selected-item") kann das Attribut 'quality' (Zustand des Items, ein Wert zwischen 0 und 100) verändert werden.
Bei einem Ordenshaus (object="ordenshaus") kann das Attribut 'schatz' verändert werden (nur mittels inc oder dec, nicht mittels val/value!)
quality String beim Held kann man Eigenschaften temporär verändern, siehe Beispiele weiter unten
talent String beim Held kann man Fertigkeitswerte temporär verändern, siehe Beispiele weiter unten
name String der Name der Variable, die verändert werden soll
scope String quest Bezeichnet den Gültigkeitsbereich, wie eine Variable gespeichert wird. Hierzu verschiedene Möglichkeiten.
inc Integer zur Erhöhung von Werten
dec Integer zur Verringerung von Werten
val (mixed) Der neue Wert für die Variable oder das Attribut.
expire String diese Angabe wird benötigt, wenn beim Held eine Eigenschaft oder eine Fertigkeit temporär verändert werden soll, siehe Beispiele weiter unten
target String Kann in Verbindung mit <set attribute="wounds"/> benutzt werden, siehe Beispiel weiter unten

Beispiele für den Held

Um Heldenwerte mit set zu verändern, muss das Tag um ein Attribut erweitert werden, das entweder die neue Höhe angibt oder den Betrag um den der Wert verändert wird:

<set attribute="LEP" dec="5"/>

Verringert die Lebensenergie um 5.

<set attribute="LEP" inc="1...6"/>

Hingegen erhöht die LP um 1 bis 6 ("W6") Punkte, aber nur bis zum möglichen Maximum.

  • dec - Wert um den Betrag verringern
  • inc - Wert um den Betrag erhöhen
  • val - neuer Wert (absolut)

dec, inc, val, attribute und name können alle auch Besondere Werte annehmen.


Eigenschaften temporär ändern

Eigenschaften können mittels set temporär verändert werden. Beispiele:

<set quality="ST" inc="4" expire="10 days" /><!-- erhöht Stärke um 4 für ingame 10 Tage -->
<set quality="FF" dec="2" expire="3 hours" /><!-- verringert Fingerfertigkeit um 2 für ingame 3 Stunden -->
<set quality="MR" inc="3" expire="1D" /><!-- erhöht Magieresistenz um 3 für 1 Echtzeit-Tag -->

Erlaubte Zeitformate: 2d (2 Ingame-Tage), 2 days (2 Ingame-Tage), 2D (2 Echtzeit-Tage)

Fertigkeiten temporär ändern

Fertigkeitswerte (Talentwerte) können ebenfalls temporär verändert werden. Beispiele:

<set talent="Sinnenschärfe" inc="4" expire="10 days" /><!-- erhöht den FeW "Sinnenschärfe" um 4 für 10 Tage -->
<set talent="Schwimmen" dec="2" expire="3 hours" /><!-- verringert den FeW "Schwimmen" um 2 für 3 Stunden -->

Erlaubte Zeitformate: 2d (2 Ingame-Tage), 2 days (2 Ingame-Tage), 2D (2 Echtzeit-Tage)

Eigene Variablen verändern

Statt Attributen können auch Variablen-Werte gesetzt werden. Damit kann man beispielsweise im Laufe der Quest EP ansammeln:

<set name="questEP" inc="5" show="none"/>

Und dann am Ende der Quest gesammelt vergeben:

<set attribute="EP" inc="${questEP}"/>

Es handelt sich dabei um dieselben Variablen wie bei Store_fetch.


Eine Wunde verursachen

Der folgende Code schlägt eine Wunde beim Helden.

<set attribute="wounds" inc="1" />

Die Trefferzone würde dabei zufällig gewählt werden.

Möchte man eine bestimmte Trefferzone festlegen, kann dies wie folgt geschehen:

<set attribute="wounds" inc="1" target="linker Arm" />

Hier würde eine Zone am linken Arm des Helden verursacht werden. Mögliche Trefferzonen sind: Kopf Brust linker Arm rechter Arm Bauch linkes Bein rechtes Bein Beachte die korrekte Groß-/Kleinschreibung der Trefferzone, ansonsten wird sie nicht erkannt!

Vorhandene Geldmenge anpassen

Im Wesentlichen gibt es drei verschiedene Möglichkeiten den Inhalt der Geldbörse eines Helden zu modifizieren:

1. Auf Null setzen.

<set attribute="cash" val="0"/>

Sehr populär nach verlorenen Kämpfen. In jedem Fall sollte hierbei das Attribut welpenschutz beachtet werden. Grundsätzlich gilt: Möglichst kein vollständiges Ausplündern von Junghelden! Die üblichen Ausnahmen sind Aivarunen, besondere Gegner, Orks, usw. ...

2. Geld vergeben oder entnehmen.

<!-- Geld erhöht um 5 Gulden, 3 Thaler und 6 Groschen -->

<set attribute="cash" inc="536"/>

<!-- Geld gesenkt um 13 Gulden, 1 Thaler und 3 Groschen -->

<set attribute="cash" dec="1313"/>

Entsprechende Varianten kommen häufig bei Belohnungen oder kleinen Diebstählen vor. In jedem Fall sind sie dazu da, Geld um feste Werte zu verändern.

Stolperfalle: Wenn ihr Helden für etwas bezahlen lassen wollt, solltet ihr erst mit Switch oder Has prüfen, ob das Geld auch wirklich vorhanden ist, ansonsten wird so viel abgezogen, wie da ist, und es geht trotzdem weiter.

3. Prozentualer Geldverlust.

Manchmal muss es jedoch etwas mehr sein ... Wenn man einem Helden eine größere Menge Geld in Relation zum vorhandenen abknöpfen möchte, ohne ihn gleich völlig auszunehmen, gibt es noch die Möglichkeit, einen Prozentwert festzulegen, der abgezogen werden soll:

<!-- 50% des Geldes entfernt -->

<set attribute="cash" dec="*50%"/>

Hierbei ist zu beachten, dass die prozentuale Veränderung des Geldes ausschließlich mit dec funktioniert, um missbräuchliche Geldvermehrung von vornherein auszuschließen!

Beispiele für einen Gegenstand (object="selected-item")

Wurde zuvor ein Gegenstand via item-select ausgewählt, kann das Warenattribut quality (der Zustand des Gegenstandes) verändert werden:

<!-- die Qualität um 10 erhöhen (Obergrenze ist automatisch 100, das prüft die Engine von alleine) -->
<set object="selected-item" attribute="quality" inc="10" />

<!-- die Qualität um 7 verringern (Untergrenze ist automatisch 0, das prüft die Engine von alleine) -->
<set object="selected-item" attribute="quality" dec="7" />

<!-- die Qualität auf 100 setzen (Bestwert) -->
<set object="selected-item" attribute="quality" val="100" />

Beispiele für das Ordenshaus (object="ordenshaus")

Beim Ordenshaus kann bisher das Attribut schatz verändert werden, mittels inc oder dec, jedoch nicht mittels val/value, weil dies bei parallelen Ein-/Auszahlungen zu Problemen führen könnte.

<!-- Diebe klauen 15 Gulden aus der Schatzkammer -->
<store name="gold_aktuell"><get object="ordenshaus" attribute="schatz"/></store>
<has name="gold_aktuell" min="15000">
  <success>
    <!-- Diebe erhalten 15 Gulden -->
    <select role="Anführer"/>
    <set attribute="cash" inc="15000" />

    <!-- Ordens-Gold anpassen -->
    <set object="ordenshaus" attribute="schatz" dec="15000" />
  </success>
  <failure>
    <p>Es sind keine 15 Gulden in der Schatzkammer.</p>
  </failure>
</has>