Toplist-Platzierung

Login über das Spiel

Die Foren Zugänge sind mit den Spiel-Accounts verknüpft.
Bitte nutze daher die Anmeldung über das Menü im Spiel.

  • Guten Abend, guten Morgen, gute Nacht, guten Tag, grüß Gott, grüezi, Salut, salve!

    Mein letztes Script für heute ;-)

    Folgende Funktion: Am Anfang oder wenn ihr die Platzierung aktualisieren wollt, ruf den Link hier auf. Sollte sich dann automatisch aktualisieren.

    Zeigt euch in der Sidebar eure Platzierung auf der Topliste an.

    Das wärs!

    LennardTFD Danke für die Formel zum finden der Platzierung ;-)

  • Gerne :D
    Du hast uns ja einen Antrag für die API eingereicht, mit der sollte das Script noch nen wenig simpler umgesetzt werden können.

    Zwei kleine Sachen fallen mir ein, die das ganze "verschönern" könnten.


    Beispielsweise kann man hier das einsetzen des neuen Elements mit JQuery noch verkürzen. Zudem ist es ganz gut die Localstorage Keys nen wenig klarer zu definieren. Habe mal ne kleine Idee mit "NiZi112_ToplistPlatz" eingebracht.

    JavaScript
    1. (function() {
    2. 'use strict';
    3. var platz;
    4. if(window.location.href.includes("toplist")){
    5. platz = parseInt($("h3 a").html().replace("Dein Rang: ", ""));
    6. localStorage.setItem('NiZi112_ToplistPlatz', platz);
    7. };
    8. platz = localStorage.getItem("NiZi112_ToplistPlatz");
    9. $("#darkMode").after("<li>Toplist: " + platz + "</li>");
    10. })();


    Wenn das Script das erste mal ausgeführt wird ist der Platz noch nicht im Local Storage hinterlegt, was dazu führt, dass als Ausgabe "Toplist: null" heraus kommt. Hierfür könnte man ggf. (ganz simpel und grob) den Spieler zwingen einmal die Topliste aufzurufen um einen Initialwert zu haben

    JavaScript
    1. if(!localStorage.getItem("NiZi112_ToplistPlatz"))
    2. {
    3. window.location.href = "toplist";
    4. }


    LG Lennard

  • Danke für deine Tipps, werde ich mal umsetzen

    LennardTFD Vielen Dank, geht jetzt gut!

    Version 1.1:

    Es ist tatsächlich kürzer geworden ;-)

  • Guten Morgen,


    Anbei ein kleines Fedback zu deinem Script. Mir sind zwei kleinere Ding aufgefallen mit denen man sicher aber gut leben kann. Dachte aber vielleicht interessiert es dich. Evtl. ist sowas ja auch nicht anders umsetzbar. Ich gebe zu ich habe davon null Ahnung und ziehe den Hut vor dem was Ihr hier leistet.


    Die Werte werden nur nach neu laden des Tabs aktualisiert.


    Wenn man das Script aktiviert hat und nicht angemeldet ist hängt man auf der Loginseite in einer endlosschleife aus Fehlermeldung und neu laden.

    Erst nach Deaktivierung der Scripte : Toplistplazierung und Gesamtmünzanzeiger konnte ich mich anmelden. Danach funktionieren sie wieder einwandfrei.


    Gruß Michael

  • Jo, das mit dem anmelden ist normal, hängt damit zusammen, dass der API abfragt, geht nur, wenn man angemeldet ist.

    Bezüglich Aktualisierung: Auch hier fragt er die API ab, heißt, stellt eine Serveranfrage. Damit hier die Belastung gering bleibt, nur beim neu laden.

    Danke trotzdem für dein Feedback

  • Nun auf 1.1 mit API-Abfrage, es dürften nun keine Fehler mehr auftreten.

  • Nun auf 1.1 mit API-Abfrage, es dürften nun keine Fehler mehr auftreten.

    Das schreiben in den localStorage macht nicht soooo viel Sinn, da bei jedem Laden der Seite trotzdem ein AJAX ausgeführt wird. Zudem dürfte beim ersten mal Ausführen des Scripts der Platz "undefined" sein, da durch die Asynchronität des AJAX das localStorage Item ausgelesen wird, bevor es geschrieben wurde.

    Würde empfehlen den Toplist Rank in den sessionStorage zu schreiben/lesen und nur, wenn dieser noch nicht darin existiert, einen AJAX call an die API zu machen, um ein sinnvolles Caching zu ermöglichen. Was den Umgang mit der Asynchronität angeht, müsste entweder die Erstellung des Elements in die 'success' Funktion des AJAX oder mit einem await gearbeitet werden.

  • So....