AOQML Library: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
(Neuer Eintrag ergänzt: == Über verschiedene Proben (und Szenen) hinweg die *FeP (oder andere Werte) sammeln für anschließende Verwendung / Auswertung ==)
 
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Die Bibliothek (library) stellt einige spezielle Funktionen für alle Questautoren und ZB-Schreiber zur Verfügung.
 
Die Bibliothek (library) stellt einige spezielle Funktionen für alle Questautoren und ZB-Schreiber zur Verfügung.
Jeder Autor kann sich bei Bedarf aus der Bibliothek bedienen.
 
  
== Prüfungen auf Vorhandensein bestimmer Elemente ==
+
Kleinere / Simplere Elemente werden als "[[CodeSnippets]]" bezeichnet und verfügen über eine eigene Sammlung.
  
=== Prüfung auf Lichtquelle ===
+
Jeder Autor kann sich bei Bedarf aus der Bibliothek bedienen.
Wenn du abfragen möchtest, ob ein Held eine Lichtquelle dabei hat, kannst du dies wie folgt tun:
 
<code xml n>
 
<include target="/lib/_lichtquelle"/> <!-- prüft, ob der Held Licht dabei hat oder Licht entfachen kann -->
 
<has name="Lichtquelle">
 
  <success>
 
    <!-- Held hat nun Licht --> 
 
  </success>
 
  <failure>
 
    <!-- Held tappt im Dunkeln. Entweder keine Lichtquelle dabei oder Probe zum Entfachen ist misslungen. -->
 
  </failure>
 
</has>
 
</code>
 
 
 
Ergebnis-Variablen:
 
 
 
*Lichtquelle    (scope="hero")
 
(NULL)              - Variable ist nicht gesetzt, wenn kein Licht verfügbar
 
Disareg            - wenn Disaregstein genutzt
 
Fackel              - wenn Pechfackel genutzt
 
Sturmlaterne        - wenn Öl-Sturmlaterne genutzt
 
Lampe              - wenn Kerzenlaterne oder Öllampe genutzt
 
Kerze              - wenn Stundenkerze oder Spannenlange Kerze
 
*AOQML_Bibliothek_Lichtquelle_feuer_entfacht    (scope="scene")
 
(NULL)              - Variable ist nicht gesetzt, wenn kein Feuer entfacht werden musste.
 
ja                  - Falls Lichtquelle entzündet werden musste und der Held dies erfolgreich getan hat
 
nein                - Falls Held nicht die nötigen Materialien hat und nicht per Improvisation (Probe Wildnisleben) eine Lichtquelle entzünden konnte.
 
 
 
=== Prüfung auf Lichtquelle (Gruppen-Variante) ===
 
Wenn du eine Gruppen-Quest/-ZB schreibst, kannst du wie folgt abfragen, ob die Gruppe Licht hat.
 
<code xml n>
 
<include target="/lib/_lichtquelle"/> <!-- prüft, ob die Gruppe Licht dabei hat oder Licht entfachen kann -->
 
<has name="Lichtquelle">
 
  <success>
 
    <!-- Gruppe hat nun Licht --> 
 
  </success>
 
  <failure>
 
    <!-- Gruppe tappt im Dunkeln. Entweder keine Lichtquelle dabei oder Probe zum Entfachen ist misslungen. -->
 
  </failure>
 
</has>
 
</code>
 
 
 
Ergebnis-Variablen:
 
 
 
*Lichtquelle    (scope="hero")  Nicht bei allen Gruppenmitgliedern, sondern nur bei demjenigen, der die Lichtquelle hat.
 
(NULL)              - Variable ist nicht gesetzt, wenn kein Licht verfügbar
 
Disareg            - wenn Disaregstein genutzt
 
Fackel              - wenn Pechfackel genutzt
 
Sturmlaterne        - wenn Öl-Sturmlaterne genutzt
 
Lampe              - wenn Kerzenlaterne oder Öllampe genutzt
 
Kerze              - wenn Stundenkerze oder Spannenlange Kerze
 
*AOQML_Bibliothek_Lichtquelle_Gruppe_id_held          (scope="quest")
 
(NULL)              - Variable ist nicht gesetzt, wenn kein Licht verfügbar
 
<HeldID>            - HeldID desjenigen, der die Lichtquelle trägt
 
*AOQML_Bibliothek_Lichtquelle_Gruppe_feuer_entfacht    (scope="scene")
 
(NULL)              - Variable ist nicht gesetzt, wenn kein Feuer entfacht werden musste.
 
ja                  - Falls Lichtquelle entzündet werden musste und der Held dies erfolgreich getan hat
 
nein                - Falls Helden nicht die nötigen Materialien haben und nicht per Improvisation (Probe Wildnisleben) eine Lichtquelle entzünden konnten.
 
 
 
=== Prüfung auf Schreibzeug ===
 
Wenn du prüfen möchtest, ob der Held entsprechendes Material dabei hat um sich Sachen zu notieren, kannst du dies wie folgt tun:
 
<code xml n>
 
<include target="/lib/_hatSchreibzeug"/> <!-- prüft, ob der Held Schreibzeug dabei hat -->
 
<switch name="hatSchreibzeug">
 
  <case val="true">
 
    <!-- Held hat Schreibzeug -->
 
  </case>
 
  <else>
 
    <!-- Held hat kein Schreibzeug -->
 
  </else>
 
</switch>
 
</code>
 
 
 
 
 
Ergebnis-Variablen:
 
<code>
 
- hatSchreibzeug    (scope="quest")    'true' oder 'false'
 
</code>
 
 
 
===Prüfung auf Landessprache===
 
Wenn du prüfen möchtest, ob der Held die hiesige Landessprache beherrscht, kannst du dies wie folgt tun:
 
<code xml n>
 
<include target="/lib/_landessprache" />
 
 
 
<switch name="KannSprache">
 
  <case val="ja">
 
    <p>Du verstehst alles, was hier in <fetch name="Landessprache" /> gesprochen wird.</p>
 
  </case>
 
  <else>
 
    <p>Du kannst den Einwohnern nicht folgen.</p>
 
  </else>
 
</switch>
 
</code>
 
 
 
Optionale Input-Variablen:
 
<code xml>
 
- LandesspracheFeW
 
      Falls diese Variable gesetzt ist, wird der Wert als Mindestanforderung genutzt.
 
      Andernfalls wird FeW 8 als Voraussetzung benutzt.
 
</code>
 
 
 
Ergebnis-Variablen:
 
<code xml>
 
- KannSprache        (scope="quest")
 
    ja                Wenn Held die hiesige Landessprache beherrscht
 
    nein              Wenn Held die hiesige Landessprache nicht beherrscht
 
- Landessprache      (scope="quest")
 
    Enthält die Fertigkeit (=Sprache), welche vorort die Landessprache ist
 
</code>
 
 
 
==Zählung der selektierten Helden und Aufzählung der selektierten Helden==
 
 
 
Die hier vorgestellten Routinen werden ausschließlich für Gruppen eingesetzt.
 
 
 
Wenn du die Anzahl der gerade selektierten Helden zählen willst oder eine hübsche Aufzählung der selektierten Helden - mit Komma und 'und' am Ende - haben willst, dann schreibst du '''einmalig''' zu Beginn deiner Quest oder ZB:
 
<code xml n>
 
<include target="/lib/_heldenaufzaehlung"/>
 
</code>
 
 
 
Um die selektierten Helden zu zählen:
 
<code xml n>
 
<replay name="AOQML_Bibliothek_zsh"/>
 
</code>
 
 
 
Ergebnis-Variablen:
 
<code>
 
- AOQML_Bibliothek_ash    (scope="quest")    Anzahl der selektierten Helden
 
</code>
 
 
 
Um eine schöne Heldenaufzählung der '''echten Namen''' zu bekommen:
 
<code xml n>
 
<replay name="AOQML_Bibliothek_heldenaufzaehlung"/>
 
</code>
 
 
 
Sind Alrik, Kirla und Rikal selektiert liefert die Methode ''Alrik, Kirla und Rikal'', sind nur Alrik und Kirla selektiert, liefert sie ''Alrik und Kirla'', ist nur Alrik selektiert liefert sie nur ''Alrik''.
 
 
 
Um eine schöne Heldenaufzählung der '''falschen Namen''' zu bekommen:
 
<code xml n>
 
<replay name="AOQML_Bibliothek_heldenaufzaehlung_nick"/>
 
</code>
 
 
 
Die Ausgabe entspricht schematisch derjenigen der Aufzählung der echten Namen.
 
 
 
===Beispiel===
 
Ein einfaches Beispiel. Die Helden laufen vor einem Wiesel davon.
 
<code xml n>
 
<include target="/lib/_heldenaufzaehlung"/>
 
<challenge talent="Athletik" hero-quantity="all">
 
  <success>
 
    <p>Das Wiesel zerrt euch nicht in seinen Bau.</p>
 
  </success>
 
  <failure select-heroes="true">
 
    <replay name="AOQML_Bibliothek_zsh"/>
 
    <p><replay name="AOQML_Bibliothek_heldenaufzaehlung"/> <if name="AOQML_Bibliothek_ash" equals="1" then="wurde" else="wurden"/> von dem Wiesel in seinen Bau gezerrt.</p>
 
  </failure>
 
</has>
 
</code>
 
 
 
==Geldbetrag von Held/Heldengruppe einziehen==
 
Wenn du von einer Heldengruppe einen Geldbetrag einziehen willst, der von soweit möglich von allen zu gleichen Teilen getragen werden soll, ist das wie folgt möglich. Das funktioniert auch mit einem Solo-Helden.
 
 
 
<code xml n>
 
<set name="lib-geldausgabeteilen-sollbetrag" scope="scene" value="200"/>
 
<include target="/lib/geldausgabeteilen"/>
 
<switch name="lib-geldausgabeteilen-restbetrag">
 
    <case min="1">
 
        <p>Zwar habt ihr nur <get name="lib-geldausgabeteilen-zahlbetrag"/> zahlen können,
 
            aber zum Glück bleibt es unbemerkt, dass ihr statt der fehlenden
 
            <get name="lib-geldausgabeteilen-restbetrag"/>
 
            ein paar Knöpfe anstatt klingender Münzen übergeben habt.
 
            </p>
 
    </case>
 
  </switch>
 
</code>
 
 
 
Dem Helden bzw. all Helden einer Gruppe wird ein Gesamtbetrag abgezogen.
 
Der tatsächliche Zahlbetrag und der Restbetrag wird in je einer Variable zurückgegeben.
 
 
 
Bei einer Gruppe wird der Betrag möglichst gleichmäßig auf die Helden verteilt wird.
 
Können einzelne Helden ihren Anteil nicht tragen, muss dieser von anderen Helden übernommen werden.
 
 
 
Bei einem Einzelhelden zahlt dieser soviel wie er hat.
 
 
 
Input-Variable:
 
<code xml>
 
- lib-geldausgabeteilen-sollbetrag
 
      Die zu zahlende Gesamtsumme.
 
</code>
 
 
 
Ergebnis-Variablen:
 
<code xml>
 
- lib-geldausgabeteilen-zahlbetrag (scope="scene")
 
    der tatsächlich bezahlte Betrag als positive Zahl
 
- lib-geldausgabeteilen-restbetrag (scope="scene")
 
    die Differenz zum Sollbetrag als positive Zahl
 
</code>
 
 
 
== Über verschiedene Proben (und Szenen) hinweg die *FeP (oder andere Werte) sammeln für anschließende Verwendung / Auswertung ==
 
'''Wichtig:''' Das Speichern von Werten sollte von "hoch" nach "klein" (also absteigend) angeordnet werden! Sonst nutzt AOQML immer den ersten (kleinsten) Speicherbefehl.
 
 
 
<code xml><?xml version="1.0" encoding="UTF-8"?>
 
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://eisentrutz.antamar.eu/aoqml.xsd">
 
 
 
<!-- Hier bitte grundlegende Informationen zur Quest/ZB notieren. -->
 
 
 
<!-- Wenn du lediglich eine Zufallsbegegnung schreiben möchtest, kannst du den Quest-tag entfernen. Dieser wird dann nicht benötigt. -->
 
 
 
<quest status="running"/>
 
 
 
<store name="Speicher" scope="quest">0</store>
 
 
 
<p>Diese Quest dienst als Test für einen Punktepool, bestehend aus den Erfolgen (*FeP) unterschiedlicher Fertigkeitsproben.</p>
 
 
 
<choice target="Probe_1">Weiter zu Probe 1 (Sinnenschärfe).</choice>
 
 
 
</scene></code>
 
<code xml><?xml version="1.0" encoding="UTF-8"?>
 
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://eisentrutz.antamar.eu/aoqml.xsd">
 
 
 
<p>Probe 1. Sinnenschärfe ohne Modifikator.</p>
 
 
 
<challenge talent="Sinnenschärfe" mod="0" >
 
 
 
<success min="5"><set name="Speicher" inc="5" show="none"/></success>
 
<success min="4"><set name="Speicher" inc="4" show="none"/></success>
 
<success min="3"><set name="Speicher" inc="3" show="none"/></success>
 
<success min="2"><set name="Speicher" inc="2" show="none"/></success>
 
<success min="1"><set name="Speicher" inc="1" show="none"/></success>
 
 
 
<success>
 
<p>Sinnenschärfe-Probe gelungen.</p>
 
</success>
 
 
 
<failure>
 
<p>Sinnenschärfe-Probe nicht gelungen.</p>
 
</failure>
 
 
 
</challenge>
 
 
 
<choice target="Probe_2">Weiter zu Probe 2 (Athletik).</choice>
 
 
 
</scene></code>
 
<code xml><?xml version="1.0" encoding="UTF-8"?>
 
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://eisentrutz.antamar.eu/aoqml.xsd">
 
 
 
<p>Probe 2. Athletik ohne Modifikator.</p>
 
 
 
<challenge talent="Athletik" mod="0" >
 
 
 
<success min="5"><set name="Speicher" inc="5" show="none"/></success>
 
<success min="4"><set name="Speicher" inc="4" show="none"/></success>
 
<success min="3"><set name="Speicher" inc="3" show="none"/></success>
 
<success min="2"><set name="Speicher" inc="2" show="none"/></success>
 
<success min="1"><set name="Speicher" inc="1" show="none"/></success>
 
 
 
<success>
 
<p>Athletik-Probe gelungen.</p>
 
</success>
 
 
 
<failure>
 
<p>Athletik-Probe nicht gelungen.</p>
 
</failure>
 
 
 
</challenge>
 
 
 
<choice target="Auswertung">Gut! Weiter zur Auswertung.</choice>
 
  
</scene></code>
+
@Programmierer: Die teilweise sehr trivialen Ausführungen sind als Abholmöglichkeit für blutige Anfänger und Nicht-Programmierer zu verstehen. :)
<code xml><?xml version="1.0" encoding="UTF-8"?>
 
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://eisentrutz.antamar.eu/aoqml.xsd">
 
  
<p>Dir sind <fetch name="Speicher"/> Punkte übrig geblieben!</p>
+
== AOQML Library - Sammlung von Instrumenten ==
  
</scene></code>
+
*[[AOQML Library / 024 - Den Helden temporär aus einer Quest entlassen, damit er frei umherreisen und Waren beschaffen kann]]
 +
*[[AOQML Library / 025 - Eine Mehrfachauswahl, die Marker setzt und dann später unterschiedliche Effekte / Boni entfalten kann]]
 +
*[[AOQML Library / 026 - Einen Punktepool definieren, der abhängig von Heldenhandlungen sinken oder steigen kann (Belagerung z.B.)]]
 +
*[[AOQML Library / 027 - Kopierfertiger Bausatz für auf erfolgreiche Probe nachfolgende, zweite Probe (z.B. für ZB-Einsatz)]]
 +
*[[AOQML Library / 028 - Prüfung auf Vorhandensein bestimmter Elemente (Lichtquelle, Schreibzeug usw...)]]
 +
*[[AOQML Library / 029 - Ein Proben-Auswahlmenü und anschließende Eintragslöschung abgelegter Probeneinträge bei Rückkehr]]
 +
*[[AOQML Library / 030 - Über verschiedene Proben (und Szenen) hinweg die *FeP (oder andere Werte) sammeln für anschließende Verwendung / Auswertung]]
 +
*[[AOQML Library / 031 - Einen Geldbetrag von einem oder mehreren Helden einziehen]]
 +
*[[AOQML Library / 032 - Zählung der selektierten Helden und Aufzählung der selektierten Helden (für Gruppen)]]
  
 
[[Kategorie:AOQML]]
 
[[Kategorie:AOQML]]

Aktuelle Version vom 12. Oktober 2024, 08:17 Uhr

Die Bibliothek (library) stellt einige spezielle Funktionen für alle Questautoren und ZB-Schreiber zur Verfügung.

Kleinere / Simplere Elemente werden als "CodeSnippets" bezeichnet und verfügen über eine eigene Sammlung.

Jeder Autor kann sich bei Bedarf aus der Bibliothek bedienen.

@Programmierer: Die teilweise sehr trivialen Ausführungen sind als Abholmöglichkeit für blutige Anfänger und Nicht-Programmierer zu verstehen. :)

AOQML Library - Sammlung von Instrumenten