Seite 1 von 2

Neue Liste

BeitragVerfasst: Sa 05 Feb, 2022 23:51
von lordhelix
Hallo,

ich brauche eine Liste, analog denen in der Statistik, für meine Queste, die ich dann auslesen kann.
Die Liste soll nicht unter Statistik erscheinen.

Code: Alles auswählen
<function name="lies-held-von-rangliste" param1="XXX" param2="XXX" />
gibt es ja schon. Ich habe leider sonst keine Möglichkeit eine Liste der Besten 10 Helden in der Quest anzeigen zu lassen.

Ist das machbar?

Es geht darum, die überstandenen, aufeinanderfolgenden Kämpfe zu speichern und als Liste auszugeben. AOQML kann das leider nicht ohne weiteres ohne die Nutzung der entsprechenden Funktion, wofür eine Statistik wohl wichtig ist.

Bestenliste:

Alrik - 31 Kämpfe
Sauron - 29 Kämpfe
Frodo - 23 Kämpfe
Alrik2 - 17 Kämpfe
...

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 11:24
von Tommek
Woher soll der Inhalt der Liste kommen?

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 11:29
von Lowlander
Hi Helix. also du brauchst eine eigene Liste für deine Quest, unabhängig von "festverdrahteten" Listen in Antamar, die aber so ähnlich aufgebaut ist und nur in deiner Quest befüllt und angezeigt wird?

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 12:10
von lordhelix
Tommek hat geschrieben:Woher soll der Inhalt der Liste kommen?


Aus der Quest. Ist ja ähnlich fame bzw der Schurkenliste

Lowlander hat geschrieben:Hi Helix. also du brauchst eine eigene Liste für deine Quest, unabhängig von "festverdrahteten" Listen in Antamar, die aber so ähnlich aufgebaut ist und nur in deiner Quest befüllt und angezeigt wird?


Ja genau.

Die Spieler bekommen letztendlich eine Variable mit positiven Ganzzahlen und sollen dann in der Reihenfolge absteigend innerhalb der Quest aufgelistet werden.
Es gab den Wunsch einer Art Wellenkampf-Queste. Der Held soll nacheinander gegen verschiedene "Wellen" an Gegnern kämpfen die immer stärker werden.
Die besten 10 Namen würde ich gerne in einer Liste mit überstandener Kampfanzahl anzeigen lassen.

Ich habe bisher keine reine AOQML-Lösung finden können.

Der Wunsch wäre nur optional um einen Anreiz zu schaffen, eine Art Wettbewerb zwischen den Helden.

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 13:08
von Lowlander
Ja, da sehe ich mit vorhandenen Mitteln auch keine Lösung in AOQML. Eine solche RangListe fände ich auch für eigene Quest-Ideen nützlich.

Die Kernfrage wäre nun, ob wir eine spezielle Lösung anstreben, also gezielt für eine Rangliste (sicherlich einfacher) oder allgemeiner Listen-Funktionen in AOQML anbieten (würde auch andere Problemstellungen lösen, die ich vage in Erinnerung habe).

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 13:24
von Lowlander
Was wäre mit gelöschten Helden? Was bei Namens-Änderungen? In der Rogue-Liste erscheinen ja die ursprünglichen Namen, dafür aber auch gelöschte Helden. Eine Liste wie bei Rogue ließe sich auch mit allgemeinen Listen-Funktioonen realisieren, eine Liste mit dynamischem Namen und nur mit lebenden Helden aber wohl nur mit einer speziellen Implementierung.

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 13:35
von lordhelix
Für mein Vorhaben wären auch gelöschte Helden völlig in Ordnung, Namensänderung natürlich doof, aber realistischerweise muss im HKR niemand etwas merken, wenn Held Anton nun Held Alrik heißt und diese Umbenennung in Emreia stattfand ^^

Beide Probleme könnte man mit einer Listenfunktion analog der Schurkenliste wohl umgehen?

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 14:16
von Lowlander
lordhelix hat geschrieben:Beide Probleme könnte man mit einer Listenfunktion analog der Schurkenliste wohl umgehen?


ja, dort sind es zwei Datenbank-Tabellen, die angefragt werden und mit der aktuellen Helden-Tabelle verbunden werden. D.h. geänderte Namen kommen mit rein, gelöschte Helden sind raus.

Ich tendiere auch derzeit dazu, eher die vorhanden Funktion auf beliebige Listen zu erweitern, eine neue Tabelle einzuführen, die beliebige Listen speichern kann. Ich würde den Namen der Liste auch gar nicht an die Quest binden, es könnte ja auch eine andere Quest desselben Epos auf dieselbe Liste zugreifen wollen. Also so in etwa:
Code: Alles auswählen
<for start="1" end="10" name="rangNr">
    <function name="lies-held-von-rangliste" param1="helix-helden-liste" param2="${rangNr}" />
</for>


Dazu braucht man dann noch eine neue Funktion zum Setzen der Bewertung, also so etwas wie
Code: Alles auswählen
    <function name="setze-held-auf-rangliste" param1="helix-helden-liste" param2="45" />


Ggf. noch name|id durch 'points' oder so ergänzen, um diese "45" von oben auch wieder abfragen zu können:
Code: Alles auswählen
<function name="lies-held-von-rangliste" param1="helix-helden-liste" param2="1" param3="points" />

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 15:10
von lordhelix
Ich bin bei dir, bis auf:

Lowlander hat geschrieben:Dazu braucht man dann noch eine neue Funktion zum Setzen der Bewertung, also so etwas wie
Code: Alles auswählen
    <function name="setze-held-auf-rangliste" param1="helix-helden-liste" param2="45" />



Kann das nicht genauso wie bei fame funktionieren? D. h. ich verändere den Wert via <set name="Helix-QUEST-Variablen" inc="5"/> und der Rest wird automatisch gemacht. Der Wert kommt in die DB und wenn jemand die Szene mit der Liste aufruft wird automatisch angezeigt. Die Anzeige mache ich dann mit

Code: Alles auswählen
<for start="1" end="10" name="rangNr">
    <function name="lies-held-von-rangliste" param1="helix-helden-liste" param2="${rangNr}" />
</for>


Würde das nicht noch einfacher sein und kein zusätzlicher Befehl benötigt? Listen werden in der Regel ja über Punkte generiert, selten das jemand einfach gesetzt wird. Und wenn, dann kann man zumindest das über Dungeonvariablen jetzt bereits lösen.

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 19:41
von Lowlander
lordhelix hat geschrieben:Ich bin bei dir, bis auf:

Lowlander hat geschrieben:Dazu braucht man dann noch eine neue Funktion zum Setzen der Bewertung, also so etwas wie
Code: Alles auswählen
    <function name="setze-held-auf-rangliste" param1="helix-helden-liste" param2="45" />



Kann das nicht genauso wie bei fame funktionieren? D. h. ich verändere den Wert via <set name="Helix-QUEST-Variablen" inc="5"/> und der Rest wird automatisch gemacht. Der Wert kommt in die DB und wenn jemand die Szene mit der Liste aufruft wird automatisch angezeigt.


Stimmt, wenn wir Hero-Variablen dazu verwerwendet, bräuchte man nicht einmal eine neue Datenbank-Tabelle. Beim Setzen müsste man das aber klarstellen:
Code: Alles auswählen
<set name="Helix-QUEST-Variablen" inc="5" [b]scope="hero"[/b]/>


lordhelix hat geschrieben:Die Anzeige mache ich dann mit

Code: Alles auswählen
<for start="1" end="10" name="rangNr">
    <function name="lies-held-von-rangliste" param1="helix-helden-liste" param2="${rangNr}" />
</for>


Würde das nicht noch einfacher sein und kein zusätzlicher Befehl benötigt? Listen werden in der Regel ja über Punkte generiert, selten das jemand einfach gesetzt wird. Und wenn, dann kann man zumindest das über Dungeonvariablen jetzt bereits lösen.


Man würde die neue Tabelle sparen, der Rest wäre genauso aufwändig. Aber deine Idee gefällt mir. Bei der SChleife war nun kein Unterschied zu meiner Variante, oder sehe ich nur keinen?

Re: Neue Liste

BeitragVerfasst: So 06 Feb, 2022 21:54
von lordhelix
Korrekt, scope="hero" ist natürlich ein Muss.

Die Schleife war identisch, ja. War nur zur Bestätigung gedacht, dass ich es so auch übernehmen würde und du zumindest dort keinen Aufwand hast.

Re: Neue Liste

BeitragVerfasst: Mi 09 Feb, 2022 09:54
von Lowlander
Ich baue das so am Wochenende.

Theoretisch ginge es außerdem jetzt doch schon mit SQL in ${...}, aber das wollen wir eigentlich vermeiden und wenn, dann allenfalls in einer AOQML-Library Funktion verwenden.

Re: Neue Liste

BeitragVerfasst: Mi 09 Feb, 2022 19:17
von lordhelix
Lowlander hat geschrieben:Ich baue das so am Wochenende.

Theoretisch ginge es außerdem jetzt doch schon mit SQL in ${...}, aber das wollen wir eigentlich vermeiden und wenn, dann allenfalls in einer AOQML-Library Funktion verwenden.


Das ist ja klasse. Dann baue ich gerade schon weiter an meiner Queste :D

Re: Neue Liste

BeitragVerfasst: Sa 12 Feb, 2022 17:02
von Lowlander
Die SQL-Query wird ziemlich komplex, weil ja zunächst die Rangfolge ermittelt werden muss. Wenn also die ersten z.B. 10 Plätze angezeigt werden sollen, dann müsste sie ja zudem 10 mal ausgeführt werden, das ist besonders blöd, weil sie ja jedes mal eh alle Plätzierungen ermitteln muss und dann nur immer alle außer der n. wegwirft.

Vielleicht könnte Tommek mal den ersten Entwurf auf dem Produktivserver ausprobieren, ob das bei den Daten dort zu langsam oder zu Server-belastend ist. Ich schicke ihm die mal.

Ansonsten müssten wir vielleicht gleich die ganze Rangliste am Stück ausgeben.

Re: Neue Liste

BeitragVerfasst: Sa 12 Feb, 2022 18:30
von lordhelix
Lowlander hat geschrieben:Die SQL-Query wird ziemlich komplex, weil ja zunächst die Rangfolge ermittelt werden muss. Wenn also die ersten z.B. 10 Plätze angezeigt werden sollen, dann müsste sie ja zudem 10 mal ausgeführt werden, das ist besonders blöd, weil sie ja jedes mal eh alle Plätzierungen ermitteln muss und dann nur immer alle außer der n. wegwirft.


Wie macht es die aktuelle Statistik denn? Die fragt doch keine 3900 mal ab. Können wir nicht mit ORDER BY aus dem sql heraus arbeiten?
Leider kann ich außer dummen Fragen nichts beitragen.

Ich war der (einfachen) Meinung, wir nehmen die Fame-Abfrage, die ja bereits existiert und modifizieren entsprechend. Ist wohl doch mehr als ich anfangs dachte.