Switch to full style
Das aktuelle Projekt, meist kleinen Umfangs, wird hier besprochen und bearbeitet. Jeder ist willkommen, seinen Beitrag zu leisten.
Thema gesperrt

Randprojekt: Abnahme

Mo 26 Jan, 2015 18:44

Inzwischen liegen 13 GZB zur Abnahme im Wiki, da wäre es wünschenswert, wenn wir die Anzahl etwas verringern könnten, damit auch Gruppenreisen noch ein wenig abwechslungsreicher werden. :)

Kategorie:Gruppen-ZB_zur_Abnahme

Zum Prozedere, falls jemand einfach nicht weiß, wie, aber trotzdem gerne möchte:

Kopiert euch die ZB in den AOQML-Editor, lasst dort die Syntax prüfen (automatisch beim speichern), lest sie euch durch, korrigiert gegebenenfalls Rechtschreibfehler, fügt sie im Wiki wieder ein. "Unterschreibt" unten, wenn ihr für eine Implementierung seid. Zack, fertig. :)

Wer es richtig schön machen will, erstellt sich auf dem Testserver eine Heldengruppe, packt die start.xml aus dem Editor in ein Zip, lädt es wie eine Quest hoch und testet es auf diese Weise. Man kann auch den Inhalt der ZB mehrfach in die start.xml schreiben, um direkt eine Reihe von Durchläufen zu erzwingen.

Re: Randprojekt: Abnahme

Di 10 Feb, 2015 00:51

Hm, joa ... also ... erfolgreich ist anders. Aber immerhin, ein bisschen was kann ich dann am Mittwoch wieder implementieren. ;)

Mal eine grundsätzliche Frage. Es sind ja augenscheinlich nur wenige Korrektoren im Wiki unterwegs. Ich versuche mich dabei gepflegt zurückzuhalten, weil ich die Endabnahme vor der Implementierung mache, aber es fällt zudem auf, dass Gruppeninhalte sehr viel länger rumliegen, als Soloinhalte.

Gibt es da Probleme oder Schüchternheiten, bei denen man helfen könnte?

Re: Randprojekt: Abnahme

Di 10 Feb, 2015 09:23

Bei mir nicht. Ich versuche es einfach. Klar kann ich nicht alles verstehen, was da programmiert wird, aber mit der Zeit versteht man es ja immer besser. Und außerdem hat man ja noch den Testserver. Eine Gruppenquest schreiben, ist da ja noch mal etwas anderes, das würde ich mir im Moment noch nicht zutrauen. Bei mir liegt es einfach an der Zeit, die mir zur Verfügung steht.

Re: Randprojekt: Abnahme

Di 10 Feb, 2015 11:07

Ich kann mir vorstellen, dass es vielen auch so geht wie mir: einfach noch nicht mit der Gruppenmechanik von AOQML beschäftigt.

Ich schreibe und code mittlerweile Solo-ZB und Solo-Quests und habe auch damit angefangen Solo-ZBs zu korrigieren. Über kurz oder lang werde ich vielleicht auch mal die eine oder andere kleinere Solo-Quest Korrektur lesen. Aber von Gruppeninhalten werde ich mich so lange fernhalten, bis ich selbst in der Lage bin Gruppen ZB/Quests zu schreiben. Ich unterschreibe nichts, das ich nicht, oder nur halb verstehe. Damit wäre keinem geholfen.

Und im Moment und absehbarer Zukunft bin ich auch mit Solo Inhalten (mein Edelstein-Craftingprojekt und schon diverse andere Ideen für danach) ausgelastet, so dass das Einarbeiten in Gruppeninhalte da sehr weit hinten auf meiner Prioritätsliste steht.

Ich denke mal, so ähnlich wird das bei noch mehr Leuten der Fall sein.

Re: Randprojekt: Abnahme

Di 10 Feb, 2015 13:42

Wraith hat geschrieben:Aber von Gruppeninhalten werde ich mich so lange fernhalten, bis ich selbst in der Lage bin Gruppen ZB/Quests zu schreiben. Ich unterschreibe nichts, das ich nicht, oder nur halb verstehe. Damit wäre keinem geholfen.


Das halte ich für übertrieben. Um Gruppen-AOQML zu korrigieren, brauchst du nicht in der Lage sein, selbiges zu produzieren. Solange du nachvollziehen kannst, was passiert, reicht es ja. Wenn du gleichzeitg nicht auf die Idee gekommen wärst, das so (oder ähnlich) zu machen, ist das doch egal, es ist ja schon gemacht. Gerade für Gruppen-AOQML gibt es variierende, wiederkehrende Muster, die sich nicht gut dokumentieren lassen. Wenn du also mehr oder weniger langfristig auch mal Gruppen-AOQML programmieren willst, ist es sogar vorteilhaft, vorher schon Gruppen-AOQML gesehen und nachvollzogen zu haben.

Einige ZB, die sehr AOQML haben:
Proser LdDZ 1 Gruppe
Proser LdDZ 2 Gruppe
Proser LdDZ 3 Gruppe
Rast-ZB-iskatoksi-01-Gruppe
Talkmar Dunkelzwerge 05 Gruppe
TalkmarRast04-Gruppe
TalkmarRast05-Gruppe (sehr einfach!)
ZB TalkmarRast01-Gruppe (sehr einfach!)


Nützliche Befehle: Select und For#Gruppenmitglieder_durchgehen.
Zuletzt geändert von Trokhanor am Di 10 Feb, 2015 14:04, insgesamt 1-mal geändert.

Re: Randprojekt: Abnahme

Di 10 Feb, 2015 13:58

Muss ebenfalls sagen, ich schau gern mal ne quest an, aber gruppenquests sind mir etwas zu komplex^^

Aber mal sehen... vlt mach ich mal eine. Immerhin kann ich ja ne gruppe durchjagen und schauen ob es funktioniert^^

Re: Randprojekt: Abnahme

Mi 11 Feb, 2015 00:24

cvk hat geschrieben:Gibt es da Probleme oder Schüchternheiten, bei denen man helfen könnte?


Absolut! Ich korrigiere sonst gerne, aber ich bin nunmal echt kein Programmierer, auch wenn ich AOQML für meine bescheidenen Zwecke inzwischen ganz gut benutzen kann. Mir geht es da also ähnlich wie Wraith: ich hatte mnir immer vorgenommen, mich damit zu beschäftigen, wenn ich selbst mal ne GZB mache.

Hab es aber jetzt mal versucht, damit das Projekt weiter kommt. Konnte immerhin einen Fehler finden (?) und einmal unterschreiben! ;)

Wenn ihr mir erklären könntet, was der folgende Codebaustein macht, könnte ich schonmal mehr weiterkorrigieren. Der steht nämlich zum Beginn ganz vieler ZB's.

Code:
<retain name="heldenaufzahlung" id="heldenaufzahlung">
<store name="zahler_heldenaufzahlung">0</store>
<!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
<for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
</retain>

Re: Randprojekt: Abnahme

Mi 11 Feb, 2015 00:35

Die Methode brauchst du dir nicht angucken, sie funktioniert. Wa sie tut: CodeSnippets#Gruppenzeug.

Re: Randprojekt: Abnahme

Mi 11 Feb, 2015 22:53

Ja, ich gebe zu, Gruppeninhalte sehen meistens irgendwie "Boah, was soll denn der Unsinn?"-aus, sind aber eigentlich unproblematisch, wenn man ein paar Grundunterscheidungen versteht, die Trokhanor bereits angesprochen hat: Select und for-Schleifen.

Das gilt aber primär fürs Schreiben. Fürs korrigieren reicht ein Account auf dem Testserver, dort eine Gruppe erstellen und die ZB einfach mehrfach durchlaufen lassen. Das geht recht einfach, wenn man sie direkt mehrfach in eine start.xml schreibt:

Hagen_vH_ZB09-Rast-Charukin-Gruppe Testversion 5x (Ich mache auch gerne gleich 2o ;))

Code:
<?xml version="1.0" encoding="UTF-8"?>
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://eisentrutz.antamar.eu/aoqml.xsd">

<!-- Name: Hagen vH ZB09-Rast-Charukin-Gruppe
     Autor: Hagen vH
     AOQML: Trokhanor
     Auftreten: Charukim
     Häufigkeit: Selten, bei Rast.
     Humor: nein
     Gruppe: Ja
     Inhalt: Angeschlagene Helden treffen einen Charukin vom Stamm der Go Hiram in einer natürlichen Höhle. -->
     

<!-- Nur im Winter. -->
<switch attribute="monat">
  <case val="Herdfeuermond|Maskenmond|Lichtmond">
    <p><q>Wie kann es, kaum 50 Meilen entfernt von der Küste, bloß so eisig kalt sein?</q>, denkt ihr euch, als der Wind besonders schneidend eure Gesichter peitscht. In eurem insgesamt angeschlagenen Zustand findet ihr besser schnell einen Unterschlupf, bevor das Wetter noch mehr abkühlt.</p>
    <challenge talent="Wildnisleben" mod="3">
      <success>
        <select role="Anführer"/>
        <p>Ist das dort hinten nur ein Erdloch? Warum aber sind die Ränder frei von Schnee? Ihr kauert euch vor das Loch und seht, dass es sich in eine kleine Höhle öffnet, aus der ihr ganz klar Feuerschein ausmachen könnt. <if attribute="vorgehen" equals="offen" then="Ganz vorsichtig betretet ihr den Raum, jederzeit dazu bereit, euch schnell wieder in Sicherheit zu bringen." else="Ihr betretet den Raum, gespannt, wem oder was ihr hier begegnen werdet."/></p>
        <p>Ganz in der Ecke der kleinen Kaverne sitzt ein hagerer, in einen schweren Pelz gekleideter Mann an einem kleinen Feuerchen. Er blickt euch intensiv an, als ihr euch weiter nähert, sieht aber nicht feindselig aus.</p>
        <select all="true"/>
        <has talent="Charukom" min="8" show="none">
          <success>
            <p><q>Setzt euch und nehmt einen Bissen</q>, presst er leise aus seinen schmalen Lippen hervor und deutet auf einen kleinen Spieß über seinem Feuer. Während ihr gemeinsam auf einen Wetterumbruch wartet, erfahrt ihr nur wenig von dem schweigsamen Mann. Die einzige Reaktion erhaltet ihr auf die Frage hin, warum er es nicht den anderen Charukin gleich tut, die im Winter die höheren und kälteren Gefilde verlassen: <q>Weil ich nicht bin wie die anderen Charukin! Wir vom Stamm der Go Hiram harren da aus, wo andere aufgeben. Nur der harte Weg ist der rechte Weg!</q> Bis zu seinem Aufbruch, wenige Stunden später, sprecht ihr dann kein weiteres Wort mehr miteinander. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen. Ein besonders ungemütlicher Stamm, diese Go Hiram, so scheint es.</p>
          </success>
          <failure>
            <p>Seine schmalen Lippen formen Worte in einer Sprache, die ihr nicht versteht, aber immerhin könnt ihr seine Gestik lesen. Ihr nehmt neben dem dünnen Mann am Feuer Platz, doch scheitert mit dem Versuch, euch zu bedanken. Abgesehen davon, dass ihr keine gemeinsame Sprache findet, macht der Bergnomade auch wenig Anstalten, in irgendeiner Form mit euch zu kommunizieren. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen.</p>
          </failure>
        </has>
        <set attribute="EP" inc="4"/>
        <!-- ENDE -->
      </success>
      <failure>
         <!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. -->
        <retain name="heldenaufzahlung" id="heldenaufzahlung">
          <store name="zahler_heldenaufzahlung">0</store>
          <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
          <for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
        </retain>
        <p>Weit und breit ist nichts zu sehen.</p>
        <!-- Einzelheldbehandlung bzgl. Kälteschutz. -->
        <has attribute="KS" max="3" show="none">
          <success>
            <!-- Es gibt einen Helden mit zu wenig Kälteschutz. -->
            <select by-attribute="KS" max="3"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Und dann hat <get attribute="name"/> sich auch noch zu dünn angezogen. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="LEP" dec="2...4"/>
                <set attribute="AUP" dec="8"/>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <p>Und dann haben <replay name="heldenaufzahlung"/> sich auch noch zu dünn angezogen. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
                <select by-attribute="KS" max="3"/>
                <for all="${sys:selected-heroes}" name="held_id">
                  <select hero="${held_id}"/>
                  <set attribute="LEP" dec="2...4" show="none"/>
                  <set attribute="AUP" dec="8" show="none"/>
                  <set attribute="EP" inc="2" show="none"/>
                </for>
              </else>
            </switch>
          </success>
        </has>
        <select all="true"/>
        <has attribute="KS" min="4" show="none">
          <success>
            <!-- Es gibt einen Helden mit genug Kälteschutz. -->
            <select by-attribute="KS" min="4"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Gut, dass <get attribute="name"/> wenigstens ausreichend dicke Kleidung anhat. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <set attribute="EP" inc="2"/>
                <p>Gut, dass <replay name="heldenaufzahlung"/> wenigstens ausreichend dicke Kleidung anhaben. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
              </else>
            </switch>
          </success>
        </has>
      </failure>
    </challenge>
  </case>
  <else>
    <quest status="rejected"/>
  </else>
</switch>


<!-- Name: Hagen vH ZB09-Rast-Charukin-Gruppe
     Autor: Hagen vH
     AOQML: Trokhanor
     Auftreten: Charukim
     Häufigkeit: Selten, bei Rast.
     Humor: nein
     Gruppe: Ja
     Inhalt: Angeschlagene Helden treffen einen Charukin vom Stamm der Go Hiram in einer natürlichen Höhle. -->
     

<!-- Nur im Winter. -->
<switch attribute="monat">
  <case val="Herdfeuermond|Maskenmond|Lichtmond">
    <p><q>Wie kann es, kaum 50 Meilen entfernt von der Küste, bloß so eisig kalt sein?</q>, denkt ihr euch, als der Wind besonders schneidend eure Gesichter peitscht. In eurem insgesamt angeschlagenen Zustand findet ihr besser schnell einen Unterschlupf, bevor das Wetter noch mehr abkühlt.</p>
    <challenge talent="Wildnisleben" mod="3">
      <success>
        <select role="Anführer"/>
        <p>Ist das dort hinten nur ein Erdloch? Warum aber sind die Ränder frei von Schnee? Ihr kauert euch vor das Loch und seht, dass es sich in eine kleine Höhle öffnet, aus der ihr ganz klar Feuerschein ausmachen könnt. <if attribute="vorgehen" equals="offen" then="Ganz vorsichtig betretet ihr den Raum, jederzeit dazu bereit, euch schnell wieder in Sicherheit zu bringen." else="Ihr betretet den Raum, gespannt, wem oder was ihr hier begegnen werdet."/></p>
        <p>Ganz in der Ecke der kleinen Kaverne sitzt ein hagerer, in einen schweren Pelz gekleideter Mann an einem kleinen Feuerchen. Er blickt euch intensiv an, als ihr euch weiter nähert, sieht aber nicht feindselig aus.</p>
        <select all="true"/>
        <has talent="Charukom" min="8" show="none">
          <success>
            <p><q>Setzt euch und nehmt einen Bissen</q>, presst er leise aus seinen schmalen Lippen hervor und deutet auf einen kleinen Spieß über seinem Feuer. Während ihr gemeinsam auf einen Wetterumbruch wartet, erfahrt ihr nur wenig von dem schweigsamen Mann. Die einzige Reaktion erhaltet ihr auf die Frage hin, warum er es nicht den anderen Charukin gleich tut, die im Winter die höheren und kälteren Gefilde verlassen: <q>Weil ich nicht bin wie die anderen Charukin! Wir vom Stamm der Go Hiram harren da aus, wo andere aufgeben. Nur der harte Weg ist der rechte Weg!</q> Bis zu seinem Aufbruch, wenige Stunden später, sprecht ihr dann kein weiteres Wort mehr miteinander. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen. Ein besonders ungemütlicher Stamm, diese Go Hiram, so scheint es.</p>
          </success>
          <failure>
            <p>Seine schmalen Lippen formen Worte in einer Sprache, die ihr nicht versteht, aber immerhin könnt ihr seine Gestik lesen. Ihr nehmt neben dem dünnen Mann am Feuer Platz, doch scheitert mit dem Versuch, euch zu bedanken. Abgesehen davon, dass ihr keine gemeinsame Sprache findet, macht der Bergnomade auch wenig Anstalten, in irgendeiner Form mit euch zu kommunizieren. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen.</p>
          </failure>
        </has>
        <set attribute="EP" inc="4"/>
        <!-- ENDE -->
      </success>
      <failure>
         <!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. -->
        <retain name="heldenaufzahlung" id="heldenaufzahlung">
          <store name="zahler_heldenaufzahlung">0</store>
          <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
          <for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
        </retain>
        <p>Weit und breit ist nichts zu sehen.</p>
        <!-- Einzelheldbehandlung bzgl. Kälteschutz. -->
        <has attribute="KS" max="3" show="none">
          <success>
            <!-- Es gibt einen Helden mit zu wenig Kälteschutz. -->
            <select by-attribute="KS" max="3"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Und dann hat <get attribute="name"/> sich auch noch zu dünn angezogen. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="LEP" dec="2...4"/>
                <set attribute="AUP" dec="8"/>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <p>Und dann haben <replay name="heldenaufzahlung"/> sich auch noch zu dünn angezogen. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
                <select by-attribute="KS" max="3"/>
                <for all="${sys:selected-heroes}" name="held_id">
                  <select hero="${held_id}"/>
                  <set attribute="LEP" dec="2...4" show="none"/>
                  <set attribute="AUP" dec="8" show="none"/>
                  <set attribute="EP" inc="2" show="none"/>
                </for>
              </else>
            </switch>
          </success>
        </has>
        <select all="true"/>
        <has attribute="KS" min="4" show="none">
          <success>
            <!-- Es gibt einen Helden mit genug Kälteschutz. -->
            <select by-attribute="KS" min="4"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Gut, dass <get attribute="name"/> wenigstens ausreichend dicke Kleidung anhat. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <set attribute="EP" inc="2"/>
                <p>Gut, dass <replay name="heldenaufzahlung"/> wenigstens ausreichend dicke Kleidung anhaben. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
              </else>
            </switch>
          </success>
        </has>
      </failure>
    </challenge>
  </case>
  <else>
    <quest status="rejected"/>
  </else>
</switch>


<!-- Name: Hagen vH ZB09-Rast-Charukin-Gruppe
     Autor: Hagen vH
     AOQML: Trokhanor
     Auftreten: Charukim
     Häufigkeit: Selten, bei Rast.
     Humor: nein
     Gruppe: Ja
     Inhalt: Angeschlagene Helden treffen einen Charukin vom Stamm der Go Hiram in einer natürlichen Höhle. -->
     

<!-- Nur im Winter. -->
<switch attribute="monat">
  <case val="Herdfeuermond|Maskenmond|Lichtmond">
    <p><q>Wie kann es, kaum 50 Meilen entfernt von der Küste, bloß so eisig kalt sein?</q>, denkt ihr euch, als der Wind besonders schneidend eure Gesichter peitscht. In eurem insgesamt angeschlagenen Zustand findet ihr besser schnell einen Unterschlupf, bevor das Wetter noch mehr abkühlt.</p>
    <challenge talent="Wildnisleben" mod="3">
      <success>
        <select role="Anführer"/>
        <p>Ist das dort hinten nur ein Erdloch? Warum aber sind die Ränder frei von Schnee? Ihr kauert euch vor das Loch und seht, dass es sich in eine kleine Höhle öffnet, aus der ihr ganz klar Feuerschein ausmachen könnt. <if attribute="vorgehen" equals="offen" then="Ganz vorsichtig betretet ihr den Raum, jederzeit dazu bereit, euch schnell wieder in Sicherheit zu bringen." else="Ihr betretet den Raum, gespannt, wem oder was ihr hier begegnen werdet."/></p>
        <p>Ganz in der Ecke der kleinen Kaverne sitzt ein hagerer, in einen schweren Pelz gekleideter Mann an einem kleinen Feuerchen. Er blickt euch intensiv an, als ihr euch weiter nähert, sieht aber nicht feindselig aus.</p>
        <select all="true"/>
        <has talent="Charukom" min="8" show="none">
          <success>
            <p><q>Setzt euch und nehmt einen Bissen</q>, presst er leise aus seinen schmalen Lippen hervor und deutet auf einen kleinen Spieß über seinem Feuer. Während ihr gemeinsam auf einen Wetterumbruch wartet, erfahrt ihr nur wenig von dem schweigsamen Mann. Die einzige Reaktion erhaltet ihr auf die Frage hin, warum er es nicht den anderen Charukin gleich tut, die im Winter die höheren und kälteren Gefilde verlassen: <q>Weil ich nicht bin wie die anderen Charukin! Wir vom Stamm der Go Hiram harren da aus, wo andere aufgeben. Nur der harte Weg ist der rechte Weg!</q> Bis zu seinem Aufbruch, wenige Stunden später, sprecht ihr dann kein weiteres Wort mehr miteinander. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen. Ein besonders ungemütlicher Stamm, diese Go Hiram, so scheint es.</p>
          </success>
          <failure>
            <p>Seine schmalen Lippen formen Worte in einer Sprache, die ihr nicht versteht, aber immerhin könnt ihr seine Gestik lesen. Ihr nehmt neben dem dünnen Mann am Feuer Platz, doch scheitert mit dem Versuch, euch zu bedanken. Abgesehen davon, dass ihr keine gemeinsame Sprache findet, macht der Bergnomade auch wenig Anstalten, in irgendeiner Form mit euch zu kommunizieren. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen.</p>
          </failure>
        </has>
        <set attribute="EP" inc="4"/>
        <!-- ENDE -->
      </success>
      <failure>
         <!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. -->
        <retain name="heldenaufzahlung" id="heldenaufzahlung">
          <store name="zahler_heldenaufzahlung">0</store>
          <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
          <for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
        </retain>
        <p>Weit und breit ist nichts zu sehen.</p>
        <!-- Einzelheldbehandlung bzgl. Kälteschutz. -->
        <has attribute="KS" max="3" show="none">
          <success>
            <!-- Es gibt einen Helden mit zu wenig Kälteschutz. -->
            <select by-attribute="KS" max="3"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Und dann hat <get attribute="name"/> sich auch noch zu dünn angezogen. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="LEP" dec="2...4"/>
                <set attribute="AUP" dec="8"/>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <p>Und dann haben <replay name="heldenaufzahlung"/> sich auch noch zu dünn angezogen. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
                <select by-attribute="KS" max="3"/>
                <for all="${sys:selected-heroes}" name="held_id">
                  <select hero="${held_id}"/>
                  <set attribute="LEP" dec="2...4" show="none"/>
                  <set attribute="AUP" dec="8" show="none"/>
                  <set attribute="EP" inc="2" show="none"/>
                </for>
              </else>
            </switch>
          </success>
        </has>
        <select all="true"/>
        <has attribute="KS" min="4" show="none">
          <success>
            <!-- Es gibt einen Helden mit genug Kälteschutz. -->
            <select by-attribute="KS" min="4"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Gut, dass <get attribute="name"/> wenigstens ausreichend dicke Kleidung anhat. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <set attribute="EP" inc="2"/>
                <p>Gut, dass <replay name="heldenaufzahlung"/> wenigstens ausreichend dicke Kleidung anhaben. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
              </else>
            </switch>
          </success>
        </has>
      </failure>
    </challenge>
  </case>
  <else>
    <quest status="rejected"/>
  </else>
</switch>


<!-- Name: Hagen vH ZB09-Rast-Charukin-Gruppe
     Autor: Hagen vH
     AOQML: Trokhanor
     Auftreten: Charukim
     Häufigkeit: Selten, bei Rast.
     Humor: nein
     Gruppe: Ja
     Inhalt: Angeschlagene Helden treffen einen Charukin vom Stamm der Go Hiram in einer natürlichen Höhle. -->
     

<!-- Nur im Winter. -->
<switch attribute="monat">
  <case val="Herdfeuermond|Maskenmond|Lichtmond">
    <p><q>Wie kann es, kaum 50 Meilen entfernt von der Küste, bloß so eisig kalt sein?</q>, denkt ihr euch, als der Wind besonders schneidend eure Gesichter peitscht. In eurem insgesamt angeschlagenen Zustand findet ihr besser schnell einen Unterschlupf, bevor das Wetter noch mehr abkühlt.</p>
    <challenge talent="Wildnisleben" mod="3">
      <success>
        <select role="Anführer"/>
        <p>Ist das dort hinten nur ein Erdloch? Warum aber sind die Ränder frei von Schnee? Ihr kauert euch vor das Loch und seht, dass es sich in eine kleine Höhle öffnet, aus der ihr ganz klar Feuerschein ausmachen könnt. <if attribute="vorgehen" equals="offen" then="Ganz vorsichtig betretet ihr den Raum, jederzeit dazu bereit, euch schnell wieder in Sicherheit zu bringen." else="Ihr betretet den Raum, gespannt, wem oder was ihr hier begegnen werdet."/></p>
        <p>Ganz in der Ecke der kleinen Kaverne sitzt ein hagerer, in einen schweren Pelz gekleideter Mann an einem kleinen Feuerchen. Er blickt euch intensiv an, als ihr euch weiter nähert, sieht aber nicht feindselig aus.</p>
        <select all="true"/>
        <has talent="Charukom" min="8" show="none">
          <success>
            <p><q>Setzt euch und nehmt einen Bissen</q>, presst er leise aus seinen schmalen Lippen hervor und deutet auf einen kleinen Spieß über seinem Feuer. Während ihr gemeinsam auf einen Wetterumbruch wartet, erfahrt ihr nur wenig von dem schweigsamen Mann. Die einzige Reaktion erhaltet ihr auf die Frage hin, warum er es nicht den anderen Charukin gleich tut, die im Winter die höheren und kälteren Gefilde verlassen: <q>Weil ich nicht bin wie die anderen Charukin! Wir vom Stamm der Go Hiram harren da aus, wo andere aufgeben. Nur der harte Weg ist der rechte Weg!</q> Bis zu seinem Aufbruch, wenige Stunden später, sprecht ihr dann kein weiteres Wort mehr miteinander. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen. Ein besonders ungemütlicher Stamm, diese Go Hiram, so scheint es.</p>
          </success>
          <failure>
            <p>Seine schmalen Lippen formen Worte in einer Sprache, die ihr nicht versteht, aber immerhin könnt ihr seine Gestik lesen. Ihr nehmt neben dem dünnen Mann am Feuer Platz, doch scheitert mit dem Versuch, euch zu bedanken. Abgesehen davon, dass ihr keine gemeinsame Sprache findet, macht der Bergnomade auch wenig Anstalten, in irgendeiner Form mit euch zu kommunizieren. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen.</p>
          </failure>
        </has>
        <set attribute="EP" inc="4"/>
        <!-- ENDE -->
      </success>
      <failure>
         <!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. -->
        <retain name="heldenaufzahlung" id="heldenaufzahlung">
          <store name="zahler_heldenaufzahlung">0</store>
          <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
          <for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
        </retain>
        <p>Weit und breit ist nichts zu sehen.</p>
        <!-- Einzelheldbehandlung bzgl. Kälteschutz. -->
        <has attribute="KS" max="3" show="none">
          <success>
            <!-- Es gibt einen Helden mit zu wenig Kälteschutz. -->
            <select by-attribute="KS" max="3"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Und dann hat <get attribute="name"/> sich auch noch zu dünn angezogen. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="LEP" dec="2...4"/>
                <set attribute="AUP" dec="8"/>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <p>Und dann haben <replay name="heldenaufzahlung"/> sich auch noch zu dünn angezogen. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
                <select by-attribute="KS" max="3"/>
                <for all="${sys:selected-heroes}" name="held_id">
                  <select hero="${held_id}"/>
                  <set attribute="LEP" dec="2...4" show="none"/>
                  <set attribute="AUP" dec="8" show="none"/>
                  <set attribute="EP" inc="2" show="none"/>
                </for>
              </else>
            </switch>
          </success>
        </has>
        <select all="true"/>
        <has attribute="KS" min="4" show="none">
          <success>
            <!-- Es gibt einen Helden mit genug Kälteschutz. -->
            <select by-attribute="KS" min="4"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Gut, dass <get attribute="name"/> wenigstens ausreichend dicke Kleidung anhat. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <set attribute="EP" inc="2"/>
                <p>Gut, dass <replay name="heldenaufzahlung"/> wenigstens ausreichend dicke Kleidung anhaben. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
              </else>
            </switch>
          </success>
        </has>
      </failure>
    </challenge>
  </case>
  <else>
    <quest status="rejected"/>
  </else>
</switch>


<!-- Name: Hagen vH ZB09-Rast-Charukin-Gruppe
     Autor: Hagen vH
     AOQML: Trokhanor
     Auftreten: Charukim
     Häufigkeit: Selten, bei Rast.
     Humor: nein
     Gruppe: Ja
     Inhalt: Angeschlagene Helden treffen einen Charukin vom Stamm der Go Hiram in einer natürlichen Höhle. -->
     

<!-- Nur im Winter. -->
<switch attribute="monat">
  <case val="Herdfeuermond|Maskenmond|Lichtmond">
    <p><q>Wie kann es, kaum 50 Meilen entfernt von der Küste, bloß so eisig kalt sein?</q>, denkt ihr euch, als der Wind besonders schneidend eure Gesichter peitscht. In eurem insgesamt angeschlagenen Zustand findet ihr besser schnell einen Unterschlupf, bevor das Wetter noch mehr abkühlt.</p>
    <challenge talent="Wildnisleben" mod="3">
      <success>
        <select role="Anführer"/>
        <p>Ist das dort hinten nur ein Erdloch? Warum aber sind die Ränder frei von Schnee? Ihr kauert euch vor das Loch und seht, dass es sich in eine kleine Höhle öffnet, aus der ihr ganz klar Feuerschein ausmachen könnt. <if attribute="vorgehen" equals="offen" then="Ganz vorsichtig betretet ihr den Raum, jederzeit dazu bereit, euch schnell wieder in Sicherheit zu bringen." else="Ihr betretet den Raum, gespannt, wem oder was ihr hier begegnen werdet."/></p>
        <p>Ganz in der Ecke der kleinen Kaverne sitzt ein hagerer, in einen schweren Pelz gekleideter Mann an einem kleinen Feuerchen. Er blickt euch intensiv an, als ihr euch weiter nähert, sieht aber nicht feindselig aus.</p>
        <select all="true"/>
        <has talent="Charukom" min="8" show="none">
          <success>
            <p><q>Setzt euch und nehmt einen Bissen</q>, presst er leise aus seinen schmalen Lippen hervor und deutet auf einen kleinen Spieß über seinem Feuer. Während ihr gemeinsam auf einen Wetterumbruch wartet, erfahrt ihr nur wenig von dem schweigsamen Mann. Die einzige Reaktion erhaltet ihr auf die Frage hin, warum er es nicht den anderen Charukin gleich tut, die im Winter die höheren und kälteren Gefilde verlassen: <q>Weil ich nicht bin wie die anderen Charukin! Wir vom Stamm der Go Hiram harren da aus, wo andere aufgeben. Nur der harte Weg ist der rechte Weg!</q> Bis zu seinem Aufbruch, wenige Stunden später, sprecht ihr dann kein weiteres Wort mehr miteinander. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen. Ein besonders ungemütlicher Stamm, diese Go Hiram, so scheint es.</p>
          </success>
          <failure>
            <p>Seine schmalen Lippen formen Worte in einer Sprache, die ihr nicht versteht, aber immerhin könnt ihr seine Gestik lesen. Ihr nehmt neben dem dünnen Mann am Feuer Platz, doch scheitert mit dem Versuch, euch zu bedanken. Abgesehen davon, dass ihr keine gemeinsame Sprache findet, macht der Bergnomade auch wenig Anstalten, in irgendeiner Form mit euch zu kommunizieren. Als das Schneegestöber etwas abflaut, verlässt der zähe Charukin euer gemeinsames Lager. Eure Abschiedsworte scheint er nicht einmal zur Kenntnis zu nehmen.</p>
          </failure>
        </has>
        <set attribute="EP" inc="4"/>
        <!-- ENDE -->
      </success>
      <failure>
         <!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. -->
        <retain name="heldenaufzahlung" id="heldenaufzahlung">
          <store name="zahler_heldenaufzahlung">0</store>
          <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! -->
          <for all="${sys:selected-heroes}" name="heldid"><select hero="${heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for>
        </retain>
        <p>Weit und breit ist nichts zu sehen.</p>
        <!-- Einzelheldbehandlung bzgl. Kälteschutz. -->
        <has attribute="KS" max="3" show="none">
          <success>
            <!-- Es gibt einen Helden mit zu wenig Kälteschutz. -->
            <select by-attribute="KS" max="3"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Und dann hat <get attribute="name"/> sich auch noch zu dünn angezogen. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="LEP" dec="2...4"/>
                <set attribute="AUP" dec="8"/>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <p>Und dann haben <replay name="heldenaufzahlung"/> sich auch noch zu dünn angezogen. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
                <select by-attribute="KS" max="3"/>
                <for all="${sys:selected-heroes}" name="held_id">
                  <select hero="${held_id}"/>
                  <set attribute="LEP" dec="2...4" show="none"/>
                  <set attribute="AUP" dec="8" show="none"/>
                  <set attribute="EP" inc="2" show="none"/>
                </for>
              </else>
            </switch>
          </success>
        </has>
        <select all="true"/>
        <has attribute="KS" min="4" show="none">
          <success>
            <!-- Es gibt einen Helden mit genug Kälteschutz. -->
            <select by-attribute="KS" min="4"/>
            <store name="anzahl_selektierte_helden">0</store>
            <for all="${sys:selected-heroes}" name="heldid">
              <set name="anzahl_selektierte_helden" inc="1" show="none"/>
            </for>
            <switch name="anzahl_selektierte_helden">
              <case val="1">
                <p>Gut, dass <get attribute="name"/> wenigstens ausreichend dicke Kleidung anhat. <if attribute="gender" equals="male" then="Er" else="Sie"/> kauert sich gegen die nackte Felswand und hofft auf einen schnellen Wetterumbruch.</p>
                <set attribute="EP" inc="2"/>
              </case>
              <else>
                <set attribute="EP" inc="2"/>
                <p>Gut, dass <replay name="heldenaufzahlung"/> wenigstens ausreichend dicke Kleidung anhaben. Sie kauern sich gegen die nacke Felswand und hoffen auf einen schnellen Wetterumbruch.</p>
              </else>
            </switch>
          </success>
        </has>
      </failure>
    </challenge>
  </case>
  <else>
    <quest status="rejected"/>
  </else>
</switch>

</scene>


Wichtig ist dabei nur, dass man den xml-Hinweis oben und die Umrahmenden scene-Tags nicht mehrfach kopiert, sondern nur das dazwischen.

Wenn man dann noch weiß, dass manche Attribute nur auf Reisen funktionieren - und daher Fehlermeldungen in Städten produzieren, ist man eigentlich gerüstet, um auch ganz ohne nennenswerte Kenntnisse die Inhalte zu prüfen. Denn man muss nicht selber korrigieren. Man kann auch einfach den Autor auf der Diskussionsseite darauf hinweisen, dass etwas nicht stimmt und die ZB auf "Korrektur" setzen.

Hab übrigens grad alles fertige abgearbeitet, muss noch live gehen, dann ham wir mal wieder ein bisschen mehr Content. (So ca 24 ZB oder so) :)

PS.: Ich habe AOQML weitestgehend durch Korrekturlesen und das Stellen von dummen Fragen hier: viewtopic.php?f=77&t=7658 gelernt.

Re: Randprojekt: Abnahme

Fr 13 Feb, 2015 18:59

cvk hat geschrieben:PS.: Ich habe AOQML weitestgehend durch Korrekturlesen und das Stellen von dummen Fragen hier: viewtopic.php?f=77&t=7658 gelernt.

Dann musst du dich aber anstrengen, denn wenn es nur an den dummen Fragen liegt, dann hab ich dich im AOQML bald eingeholt :wink:
Thema gesperrt