Thema gesperrt

Re: Schleifen in AOQML

Mo 22 Apr, 2013 21:46

Pergor hat geschrieben:Ansonsten weiß ich nicht, ob der "for"-Tag noch für andere von mir angesprochene Punkte benutzt werden kann.


Na ich denke, dass man zumindest nicht mehr auf retain+replay zurückgreifen muss und somit den Code kürzer + übersichtlicher halten kann. Auch die Selektierungssachen sollten nicht mehr ganz so umständlich sein (hier sehe ich noch den größten Verbesserungsbedarf für die Engine).

Eine Erweiterung für <has> ist jetzt nicht mehr angedacht.

Um das Gesamtvermögen der Gruppe zu bekommen, ist dann sowas möglich:
Code:
<store name="gold_gesamt">0</store>
<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
  <store name="gold_held"><get attribute="cash"/></store>
  <set name="gold_gesamt" inc="${gold_held}" show="none"/>
</for>


Pergor hat geschrieben:Zu der Sache mit <for all="Singen|Schleichen|Schwimmen" name="talent"> kann ich so nicht viel sagen. Soweit ich das sehe, muss man hier ja einen einzigen Failure-Pfad anlegen und der liefert dann immer das gleiche, egal welche der drei Proben man nun verhauen hat, oder? Und kann ich die Proben mit verschiedenen Erschwernissen versehen? Wenn, dann sehe ich nicht, wie.

Absolut richtig. Ist halt immer die Frage, was machen will. Wenn man nur mehrere Proben durchführen will und am Ende schauen will, wie viele davon bestanden wurden - die Zweige sonst nicht ausgestalten will - kann es mit einer for-Schleife "einfacher" sein. Aber ich stimme dir zu, häufig wird man es nicht brauchen.

Re: Schleifen in AOQML

Mo 22 Apr, 2013 21:50

Also für die Schleife mit den Talenten habe ich bereits eine Anwendung im Waisenhaus.

Die andere Schleife bastel ich bei Gelegenheit in die Stadterkundung ein anstelle des retain-replay-Monsters, habe ich gerade vorm Hochladen nicht mehr dran gedacht. Zudem benutze ich sie gerade bei der Gruppenanpassung einer ZB, also ... Wird benutzt.

Das Monster versteckt sich übrigens hier: Select

Falls du es rausnehmen willst.

Re: Schleifen in AOQML

Mo 22 Apr, 2013 22:05

Gaddezwerch hat geschrieben:Auch die Selektierungssachen sollten nicht mehr ganz so umständlich sein [...]

Okay, dann muss ich wohl nochmal genauer hinschauen. Für mich ist das leider auch nicht immer so intuitiv, deswegen freue ich mich immer über Beispiele im Wiki, die haben für mich immer den größten Lerneffekt. So lange beschäftige ich mich noch mit AOQML. Für die Beispiele im letzten Post von mir weiß ich so nicht, wie ich das lösen soll...

Gaddezwerch hat geschrieben:Um das Gesamtvermögen der Gruppe zu bekommen, ist dann sowas möglich [...]

Ja, so hatte ich mir das auch schon zurechtgebastelt (nur mit "eval+" statt mit "inc"). Ist auf jeden Fall einfacher als mit retain. Bei "has" muss man dann wohl wirklich nichts mehr aufrüsten, zumal es ja für Items das "function" gibt.

@cvk: Monster? Rausnehmen?

Re: Schleifen in AOQML

Mo 22 Apr, 2013 22:11

Pergor hat geschrieben:@cvk: Monster? Rausnehmen?


So selektiert man jetzt alle Helden nacheinander durch und lässt sie was machen:

Code:
<for all="${sys:heroes}" name="heldid">
  <select hero="${heldid}"/>
  <p>HeldID: <fetch name="heldid"/>, Name: <get attribute="name"/></p>
</for>


So ging es vorher:
Code:
    <retain name="helden-durchgehen" id="helden-durchgehen-1">
    <set name="aktuelle_nr" inc="1" show="none"/><!-- zum Debuggen show="result" verwenden -->
     
    <!-- Held selektieren -->
    <store name="heroAttr">nr_<fetch name="aktuelle_nr"/></store><!-- z.B. nr_1 -->
    <select hero="${heroAttr}"/>
    <p><q>Hallo, ich heiße <get attribute="name"/> und ich bin <get attribute="race"/></q>.</p>
     
    <!-- gibt es noch weitere Gruppenmitglieder? -->
    <switch attribute="anzahl_gruppenmitglieder">
    <case name="aktuelle_nr">
    <!-- Unsere Variable 'aktuelle_nr' entspricht jetzt dem Attribut 'anzahl_gruppenmitglieder'.
      Daher wurden alle Gruppenmitglieder einmal aufgerufen.
      Daher nichts weiter machen. -->
    </case>
    <else>
    <p>Der nächste:</p>
    <!-- sich erneut aufrufen -->
    <replay name="helden-durchgehen" />
    </else>
    </switch>
    </retain>
     
    <p>In diesem kleinen Beispiel stellen sich alle Helden der Gruppe kurz vor:</p>
    <store name="aktuelle_nr">0</store>
    <replay name="helden-durchgehen"/>


Das habe ich mal plakativ als retain-replay-Monster bezeichnet. Und es war als Hinweis an Gaddezwerch gedacht, dass man das eventuell aus dem Wiki rausnehmen könnte, geht ja jetzt erheblich leichter.

Re: Schleifen in AOQML

Mo 22 Apr, 2013 23:16

Auch wenn ihr mit der retain-replay-Schleife ein umfangreiches Konstrukt geschaffen habt, das nun durch die neue for-Schleife in vielen Situationen zum Glück überflüssig wird, Respekt für diese und andere kreative Verwendungen von AOQML!

Re: Schleifen in AOQML

Di 23 Apr, 2013 08:34

Gaddezwerch hat geschrieben:Jo, ist jetzt implementiert und nutzbar.

Code:
<for all="${sys:heroes}" name="heldid">...


Code:
<for all="Singen|Schleichen|Schwimmen" name="talent">...



Cool, :danke:
Thema gesperrt