1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
    Information ausblenden
  3. Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.
    Information ausblenden

Scorelist umstellen auf kleinste Score=besser

Dieses Thema im Forum "Fragen zu Scripting" wurde erstellt von Archon Short, 15. Mai 2015.

  1. Archon Short

    Archon Short Administrator Mitarbeiter

    Beiträge:
    5.236
    Zustimmungen:
    775
    Punkte für Erfolge:
    124
    Hi, bin grad durch ein paar externe Einflüsse(u.A. Tramal) arg beeinträchtigt und benötige mal Hilfe bei dieser einfachen Sache.

    Aktuell wird eine höhere Punktzahl zur Liste addiert und die Liste nach Höhe sortiert.
    Jetzt sollen aber niedrigere Punktzahlen besser sein und die Sortierung eben so stattfinden.

    Puh, ich hoffe das ist einigermaßen verständlich.

    Code:
    addScore(string cName, integer nScore, key kKey, integer bRefresh)
    {
        if (cName != "" && nScore > 0)
        {   
            if (llGetListLength(lPlayers) == 0)
            {
                lPlayers += cName;
                lScores += nScore;
                
            }
            else
            {
                integer nBestPos = llGetListLength(lScores);
                integer i;
                integer nLastTake = 0;    
                for (i = 0; i < llGetListLength(lScores); i++)
                {
    
                    integer nExtractScore = llList2Integer(lScores, i);
                    if (nScore >= nExtractScore && nExtractScore > nLastTake)
                    {
                        nBestPos = i;
                        nLastTake = nExtractScore;
                    }
                }
                if (nBestPos > -1 && nBestPos < 11)
                {
                    lPlayers += "";
                    lScores += 0;
                    if (nBestPos < llGetListLength(lPlayers))
                    {
                        for (i = llGetListLength(lPlayers) - 1; i > nBestPos - 1; i--)
                        {
                            lPlayers = llListReplaceList(lPlayers, [llList2String(lPlayers, i - 1)], i, i); 
                            lScores = llListReplaceList(lScores, [llList2String(lScores, i-1)], i, i); 
                        }
                    }
                    integer nLast = llGetListLength(lPlayers) - 1;
                    if (nLast > 9)
                    {
                        lPlayers = llDeleteSubList(lPlayers, nLast, nLast);
                        lScores = llDeleteSubList(lScores, nLast, nLast);
                    }
                    lPlayers = llListReplaceList(lPlayers, [cName], nBestPos, nBestPos); 
                    lScores = llListReplaceList(lScores, [nScore], nBestPos, nBestPos);
                }
            }
            if (bRefresh) setAll();
        }
    }
    LG Archon
     
  2. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    Autschn, ich glaube es waere einfacher beides in einer Liste zu sammeln, dann kannst du die Eintraege mit llListSort ziemlich leicht nach Score sortieren.
    So mache ich das auch in meinem Radar, die Namen sind nach Entfernung sortiert.
    Wenn du nicht mehr als 200 Spieler gleichzeitig erwartest, sollte die Laenge der Liste kein Memory-Problem darstellen.

    LG
    Dae
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deinem Erleben anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden