Sammlung: Fehler auf dem Testserver

Für alle Käferchen... Manchmal schaut hier auch ein Irrwisch vorbei.

Moderatoren: Ratsgruppe Programmierer, A-Team

Sammlung: Fehler auf dem Testserver

Beitragvon Benor Eglor » Sa 12 Aug, 2017 02:19

Da ich das nicht zwischen die Meldungen zum aktiven Spiel schreiben möchte mache ich mal den neuen Sammler auf.

Es geht um folgende Szene:
Spoiler:
Code: Alles auswählen
<?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">

<debug>
<take item="Kletterseil" max="1"/>
<take item="Kletterhaken" max="1"/>

</debug>

<!-- Normale Probenhöhe -->
<store name="kletterprobe" scope="scene">15...55</store>

<!-- Die Variable legt durch ihren Endwert fest welches Resultat die Gruppe erreicht hat -->
<store name="fallentscheid" scope="scene">0</store>

<!-- Im Folgenden wird der gestürzte Held nicht beachtet. -->
<select inverted="true"/>

<has item="*Seil" companions-affected="false" show="none" > <!-- show="none" bitte bei Implementierung einfügen - Testserver zeigte hier fehlerhaftes Verhalen -->
  <success>
    <set name="kletterprobe" dec="1" show="none" />
    <set name="fallentscheid" inc="1" show="none" /> <!-- Kontrollvariable -->
    <has item="Kletterhaken+%ammer" companions-affected="false" > <!-- show="none" bitte bei Implementierung einfügen - Testserver zeigte hier fehlerhaftes Verhalen -->
      <success> <!-- Kletterhaken und ein Hammer irgendeiner Art zum Eintreiben vorhanden -->
        <set name="kletterprobe" dec="3"/>
        <set name="fallentscheid" inc="10" show="none" /> <!-- Kontrollvariable -->
      </success>
      <failure>
        <has item="Kletterhaken" companions-affected="false" > <!-- show="none" bitte bei Implementierung einfügen - Testserver zeigte hier fehlerhaftes Verhalen -->
          <success>
            <challenge quality="ST" show="challenge" result="-1">
              <success>
                <set name="kletterprobe" dec="3" show="none" />
                <set name="fallentscheid" inc="5" show="none" /> <!-- Kontrollvariable -->
              </success>
              <failure> <!-- Kletterhaken zwar vorhanden, aber keine Kraft ihn einzutreiben. In der Konsequenz wird bei Vorhandensein eines Seiles die Gruppe erneut Stärke proben, um den Aufsteigenden zu sichern. -->
              <challenge quality="ST" show="challenge" result="-10">
                <success min="1...7" > <!-- Einer aus der Gruppe schafft die Probe und hält das Seil für den Abgestürtzten. Achtung alle Helden die die Probe schaffen werden selektiert. <get attribute="name" />-Verwendung ;-)-->
                 
                </success>
                <failure> <!-- Die Gruppe  -->
                  <set name="fallentscheid" inc="50" show="none" />
                </failure>
                </challenge>
              </failure>
            </challenge>
          </success>
        </has>
      </failure>
    </has>
  </success>
</has>

<!-- Diese Kaskade wertet aus in welchem "Fall" die Gruppe schlußendlich landet -->
<switch name="fallentscheid">
  <case val="0">
    <store name="replay-id">Nichts1</store>
   
  </case>
  <case val="1">
    <store name="replay-id">Nichts2</store>
  </case>
  <case val="11">
    <store name="replay-id">Nichts3</store>
  </case>
  <case val="6">
    <store name="replay-id">Nichts4</store>
  </case>
  <case val="51">
    <store name="replay-id">Nichts5</store>
  </case>
</switch>
<!--  Ende der Kaskade -->

<!-- Hier werden alle retain-Blöcke für die verschiedenen Möglichkeiten angelegt -->

<!-- Ende der retain-Möglichkeiten -->

<retain name="Nichts1" id="1">
  <p>Text 1</p>
</retain>
<retain name="Nichts2" id="2">
  <p>Text 2</p>
</retain>
<retain name="Nichts3" id="3">
  <p>Text 3</p>
</retain>
<retain name="Nichts4" id="4">
  <p>Text 4</p>
</retain>
<retain name="Nichts5" id="5">
  <p>Text 5</p>
</retain>

<replay name="${replay-id}" /> <!-- Hier nun ENDLICH die eigentliche Szenenausgabe -->


<!-- Und das Ergebnis dann auswerten. -->
<challenge talent="Klettern" mod="${klettermodi}">
  <success>
   
  </success>
  <failure>
   
  </failure>
</challenge>

</scene>


Der Testserver liefert hier als Ausgabe:
Spoiler:
[hat Kletterhaken+%ammer: 1] [hat Kletterhaken: 1]

Text 5
"Klettern"-Probe gelungen


Was bedeutet, dass er sowohl im Erfolgs-, als auch im Misserfolgspfad landet der Abfrage.
Benutzeravatar
Benor Eglor
Ritter
Ritter
 
Beiträge: 686
Registriert: So 29 Mär, 2009 16:14
Heldenname: u.A.: Benor Eglor
Mitglied bei: CFC

Re: Sammlung: Fehler auf dem Testserver

Beitragvon Trokhanor » Sa 12 Aug, 2017 11:29

Es wäre ganz gut gewesen, wenn du das Beispiel auf das Wesentliche zusammengestutzt hättest, also z.B. statt des switch-retain-zeugs einfach ein

Code: Alles auswählen
<fetch name="fallentscheid"/>


genommen hättest - und weiter oben in den ganzen has-Abfragen hätte man sicher auch einsparen können.

Was dein Problem angeht: M.E. liest du die Ausgabe von "has" falsch. Has liefert zurück, wie viele Gegenstände gefunden wurden. Das ergibt bei der Forderung, verschiedene Gegenstände zu besitzen, nicht unbedingt Sinn, aber ist durchaus logisch.

[hat Kletterhaken+%ammer: 1]


bedeutet schleichtweg: Es wurde genau ein Gegenstand gefunden. Notwendigerweise braucht man aber mindestens zwei Gegenstände, den Haken und irgendeinen Hammer.

Von der "+"-Konstruktion würde ich bei Gruppen auch absehen. Wenn ich das richtig erinnere hieße das, daß ein Held ein Kletterseil und einen Hammer haben muss. Wären sie auf verschiedene Helden verteilt, würde die Abfrage in den failure-Zweig gehen.
Trokhanor
Ritter
Ritter
 
Beiträge: 657
Registriert: Mo 02 Mär, 2009 20:07
Heldenname: Lorenzo di Avarra

Re: Sammlung: Fehler auf dem Testserver

Beitragvon Benor Eglor » So 13 Aug, 2017 01:52

Ich wollte im Code nun nicht kürzen, um nicht eventuelle Fehler zu kürzen; hätte ich das Resultat verstanden hätte ich mich hier wohl kaum gemeldet ;-)
Bei genauerem Hinschauen in den Code sehe ich jedoch die Egalität zwischen dem retain-replay-Block und dem einfachen <fetch> und werde versuchen zukünftig darauf zu achten.

Wenn has so gemeint ist müsste man das auch in der Wiki erwähnen, ich denke dabei nämlich an: Hat der Held, in diesem Fall die Gruppe, folgende Gegenstände bei sich ohne dabei eventuell vorhandene Begleiter zu berücksichten.
Wenn ich das so nicht mit has herausbekommen kann wäre ich über Hilfe wie dann dankbar.

Was das "+" angeht so lese ich darüber das erste Mal. Aus meiner Sicht ein Umstand den man ändern sollte, um die Abfrage gruppentauglich(er) zu gestalten, sprich das System prüft insgesamt das Vorhandensein der Einzelkomponenten bei allen selektierten Helden bis zum ersten Match, prüft dann ob es zu jedem gesuchten Element einen Fund gab und leitet entsprechend dann in success oder failure weiter.
Bevor ich das als Anregung zur AOQML schreibe wäre es nett, würde ich hier Rückmeldung zu dem Vorschlag erhalten.
Benutzeravatar
Benor Eglor
Ritter
Ritter
 
Beiträge: 686
Registriert: So 29 Mär, 2009 16:14
Heldenname: u.A.: Benor Eglor
Mitglied bei: CFC

Re: Sammlung: Fehler auf dem Testserver

Beitragvon Trokhanor » So 13 Aug, 2017 10:06

Die Ausgabe wie sie jetzt ist, finde ich schon in Ordnung. Has arbeitet immer per Held, da würde ich keine Ausnahme machen. Richtig ist, dass die Ausgabe nicht dokumentiert ist. Könnte man mal machen...

Das "+" kannst du aber durch zwei has-Abfragen ersetzen. Entweder schachteln oder nacheinander und eine Variable setzen. Hat nebenbei auch den Vorteil, dass du Rückmeldung geben kannst, welcher Gegenstand fehlt.
Trokhanor
Ritter
Ritter
 
Beiträge: 657
Registriert: Mo 02 Mär, 2009 20:07
Heldenname: Lorenzo di Avarra


Zurück zu Fehlermeldungen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron