• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • 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.
  • 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.

Scorelist umstellen auf kleinste Score=besser

Archon Short

Forumsgott/göttin
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
 
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
 

Users who are viewing this thread

Zurück
Oben Unten