Neue Liste

XML-Variante AOQML, ihre Möglichkeiten, Ergänzungen und Entwicklung...

Moderatoren: Kekse, A-Team

Neue Liste

Beitragvon lordhelix » Sa 05 Feb, 2022 23:51

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
...
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Tommek » So 06 Feb, 2022 11:24

Woher soll der Inhalt der Liste kommen?
Benutzeravatar
Tommek
Site Admin
Site Admin
 
Beiträge: 8679
Registriert: Mi 17 Mai, 2006 22:40
Wohnort: Eodatia
Heldenname: Alrik Dormwald
Mitglied bei: Orkwacht

Re: Neue Liste

Beitragvon Lowlander » So 06 Feb, 2022 11:29

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?
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » So 06 Feb, 2022 12:10

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.
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Lowlander » So 06 Feb, 2022 13:08

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).
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon Lowlander » So 06 Feb, 2022 13:24

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.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » So 06 Feb, 2022 13:35

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?
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Lowlander » So 06 Feb, 2022 14:16

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" />
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » So 06 Feb, 2022 15:10

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.
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Lowlander » So 06 Feb, 2022 19:41

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?
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » So 06 Feb, 2022 21:54

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.
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Lowlander » Mi 09 Feb, 2022 09:54

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.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » Mi 09 Feb, 2022 19:17

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
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Re: Neue Liste

Beitragvon Lowlander » Sa 12 Feb, 2022 17:02

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.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Neue Liste

Beitragvon lordhelix » Sa 12 Feb, 2022 18:30

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.
Benutzeravatar
lordhelix
Game Designer
Game Designer
 
Beiträge: 712
Registriert: So 07 Apr, 2019 22:00
Heldenname: Helix

Nächste

Zurück zu Questen, Abenteuer und Zufallsbegegnungen (inkl. AOQML)



Wer ist online?

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

cron