1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  3. 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

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.153
    Zustimmungen:
    736
    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.219
    Zustimmungen:
    150
    Punkte für Erfolge:
    63
    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