Seite 1 von 1

Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Di 27 Okt, 2020 12:15
von Varthac
Gibt es in AOQML die Möglichkeit Variablen gebündelt abzufragen im Sinne des klassischen if(var1 && var2 && var3)?

Ich habe momentan eine Quest, wo ich auf 10 Fälle testen muss, für die jeweils 3 Variablen relevant sind. Wenn ich für jeden Fall bei jeder Variable ein eigenes switch erstellen müsste, wäre das schon sehr unübersichtlich.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Di 27 Okt, 2020 20:24
von Lowlander
Kannst du noch etwas ausführen, was genau du mit den drei Variablen machen willst?

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 11:38
von Varthac
Kannst du noch etwas ausführen, was genau du mit den drei Variablen machen willst?


Hallo Lowlander, die Variablen sollen schlicht auf ihren Wahrheitsgehalt geprüft werden, damit die jeweilige Szene eintreten kann. Hier mal ein Beispiel wie ich bislang eine Szene dafür umgesetzt habe:

Code: Alles auswählen
<switch name="SR1">
  <case val="false">
   
    <switch attribute="weg_nach">
     <case val="Augweide">
       
        <switch attribute="weg_von">
           <case val="Fürstenbrunn">
              <include target="SR1_start"/>
           </case>

           <else>
              <quest status="pending" target="uebersicht"/>
           </else>
        </switch>
     </case>
   
     <else>
       <quest status="pending" target="uebersicht"/>
     </else>
   </switch>
  </case>

  <else>
    <quest status="pending" target="uebersicht"/>
  </else>
</switch>


Theoretisch würde ich hier gerne auch noch eine Wahrscheinlichkeitsvariable einbauen, damit die Szene nicht zwingend sofort feuert, sondern man die Strecke eventuell mehrfach ablaufen muss. Außerdem soll die Szene hier erst am Ende der Wegstrecke von Fürstenbrunn nach Augweide eintreten, d.h. ich müssste auch nochmal auf das Attribut "weg_restzeit" prüfen. Damit hätte ich dann eine fünffach verschachtelte Kontrollstruktur nur für eine von zehn Teilquesten innerhalb der "uebersicht"-Szene.

Daher hatte ich gehofft es gibt irgendwie eine Möglichkeit in einem switch auf mehrere Konditionen zu prüfen in etwa nach dem Vorbild:

Code: Alles auswählen
<switch name="SR1" && attribute="weg_nach" && attribute="weg_von">
  <case val="false", val="Augweide", val ="Fürstenbrunn">
    <!-- Do something -->
  </case>

  <else>
    <!-- Do something else -->
  </else>
</switch>

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 11:40
von Tommek
Nur als Hinweis ohne den Hintergrund der Abfrage zu kennen:

Questen oder ZBs können auf spezifische Wege festgelegt werden beim Einbau.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 11:56
von Varthac
Nur als Hinweis ohne den Hintergrund der Abfrage zu kennen:

Questen oder ZBs können auf spezifische Wege festgelegt werden beim Einbau.


Die Quest in 10 Miniquests zu teilen war auch mein erster Ansatz, allerdings müsste dann vorher nochmal eine Bestätigungsquest stattfindet, die eine entsprechende Hero-Variable setzt und einige Hintergründe erläutert, ohne die die Miniquests nicht starten dürfen. Dachte mir, dass es vom Aufwand für Dritte her weniger ist, wenn ich das einfach alles in einer Quest bündle.

Wenn das natürlich mit den ganzen Abfragen von Serverseite her unnötig viel Aufwand erzeugt, setze ich es auch gern in mehreren Miniquests um.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 12:01
von Tommek
Kannst du den Aufbau einmal beschreiben? Vielleicht fällt uns noch etwas gutes ein:

Start:
Einstieg in die Quest der Held soll etwas erledigen in einem bestimmten Gebiet.

Mittelteil:
Der Held reist auf verschiedenen Wegen und soll dort irgendwas zufällig finden.

Ende:
Der Held reist irgendwo hin und gibt das erledigen bekannt.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 12:19
von Varthac
Start:
Eingangsquest, bei der der Held zwischen 30k und 190k exp als Voraussetzung haben soll. Hier bekommt er Hinweise, wo die 10 Teilquests (Schriftrollen sammeln) zu finden sind, kann aber auch ablehnen die Quest zu machen.

Mittelteil:
Held reist durch Grünbergen und kann an bestimmten Stellen die Quests triggern, um die Schriftrollen zu sammeln. Teilquests müssen in keiner bestimmten Reihenfolge abgelegt werden und können nach meinem Verständnis bei scheitern wiederholt werden. Darüber hinaus soll der Held die Möglichkeit haben die gesamte Quest abzubrechen.

Mittelteil2:
Held erhält den Hinweis, dass er alle 10 Schriftrollen besitzt und kann diese schließlich ortsgebunden zu einem Buch binden lassen. Hierbei kann er scheitern, aber hat beliebig viele Versuche.

Ende:
Held hat schlussendlich das gebundene Buch und erhält seine Questbelohnungen.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 17:08
von Lowlander
Varthac hat geschrieben:
Code: Alles auswählen
<switch name="SR1" && attribute="weg_nach" && attribute="weg_von">
  <case val="false", val="Augweide", val ="Fürstenbrunn">
    <!-- Do something -->
  </case>

  <else>
    <!-- Do something else -->
  </else>
</switch>


ja, das geht, aber nur mit Trick:
Code: Alles auswählen
    <!-- gegeben sei eine Variable -->
    <set name="SR1" scope="scene" val="false" show="none"/>

    <!-- nun fassen wir die alle zusammen - ACHTUNG: das darf dann nicht weiter umbrechen! -->
    <store name="alle-Bedingungen" scope="scene">
        SR1=${SR1}, von='<get attribute="weg_von"/>', nach='<get attribute="weg_nach"/>'
    </store>

    <switch name="alle-Bedingungen">
        <case val="SR1=false, von='Perničid', nach='Burg Birca'">
            alle Bedingungen erfüllt
        </case>
        <else>
            mindestens eine Bedingung nicht erfüllt
        </else>
    </switch>

    (${alle-Bedingungen})


Man könnte auch mit
Code: Alles auswählen
<eval>...</eval>
rumtricksen, wenn man nur 1 und 0 als Werte hätte, ggf. per store+iv umsetzen. Dann kann man mit Multiplikation ver-und-en und mit Addition ver-der-n. Aber das wird unübersichtlich.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 17:30
von Tommek
Sind das im Mittelteil wirklich Questen oder einfache ZBs?

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 18:24
von Varthac
Lowlander hat geschrieben:ja, das geht, aber nur mit Trick:
Code: Alles auswählen
    <!-- gegeben sei eine Variable -->
    <set name="SR1" scope="scene" val="false" show="none"/>

    <!-- nun fassen wir die alle zusammen - ACHTUNG: das darf dann nicht weiter umbrechen! -->
    <store name="alle-Bedingungen" scope="scene">
        SR1=${SR1}, von='<get attribute="weg_von"/>', nach='<get attribute="weg_nach"/>'
    </store>

    <switch name="alle-Bedingungen">
        <case val="SR1=false, von='Perničid', nach='Burg Birca'">
            alle Bedingungen erfüllt
        </case>
        <else>
            mindestens eine Bedingung nicht erfüllt
        </else>
    </switch>

    (${alle-Bedingungen})


Raffiniert! Danke für den Tipp. Das macht die Abfrage gleich viel übersichtlicher.

Tommek hat geschrieben:Sind das im Mittelteil wirklich Questen oder einfache ZBs?


Bestehen durchaus aus mehreren Szenen - auch wenns i.d.R. nur 3-4 sind. Also eher keine ZBs. Wie sieht denn dein abschließendes Urteil aus? Magst dus lieber als Bündel aus mehreren voneinander abhängigen Quests oder soll ich alles in eines packen und mit Lowlanders Abfragetrick abfertigen? Kann halt nicht einschätzen wie ressourcenzehrend so ne "pending"-Quest über nen längeren Zeitraum ist. Die Quest zieht sich ja durchaus und wenn ein Held aus Grünbergen abreist, schleppt er die Abfrage im Hintergrund weiter mit.

Re: Mehrere Konditionen gebündelt abfragen

BeitragVerfasst: Mi 28 Okt, 2020 19:34
von Tommek
Pending kostet nicht viel kannst du so machen. Wollte nur sicher gehen das der andere Ansatz nicht übersichtlicher wäre, aber deine Idee ist am besten da.