Im Dialog sortieren, nur wie?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • hey,


    hab mal wieder eine frage.


    Ich möchte gerne, dass man mit dem Befehl /wanted ein dialog angezeigt bekommt, welcher spieler, sich wo findet, und wie viele wanteds er hat. Bis dato weiß ich alles.


    Aber wie bekomm ich die spieler so sortiert, dass die mit den meisten wanteds ganz oben sind? Die mit den wenigsten sollen selbstverständlich dann unten eingeordnet werden...


    Gruß kevin

    Mit freundlichen Grüßen,


    Keslo

  • Aber wie bekomm ich die spieler so sortiert, dass die mit den meisten wanteds ganz oben sind?

    new wanted[MAX_PLAYERS][2], str[512], name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    wanted[i][0] = PlayerInfo[i][pWanted] * -1; //Negation, damit der höchste Wert am Anfang kommt (es wird von kleinstem zu größtem sortiert)
    wanted[i][1] = i;
    }
    SortDeepArray(wanted, 0);


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(wanted[i][0] >= 0) break; //>= 0 entspricht keinem Wanted, da wir es ja zuvor negiert haben
    GetPlayerName(wanted[i][1], name, MAX_PLAYER_NAME];
    format(str, sizeof(str), "%s%s (%d)\n", str, name, PlayerInfo[wanted[i][1]][pWanted]);
    }
    ShowPlayerDialog(playerid, DIALOG_WANTED, DIALOG_STYLE_LIST, "Wanteds", str, "Ok", "Abbrechen");


    SortDeepArray:
    http://forum.sa-mp.com/showthread.php?t=343172

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Wäre natürlich sinnvoll das auch im Start Post zu dokumentieren. Danke für die Info.
    Ohne Negation dann:
    new wanted[MAX_PLAYERS][2], str[512], name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    wanted[i][0] = PlayerInfo[i][pWanted];
    wanted[i][1] = i;
    }
    SortDeepArray(wanted, 0, .order = SORT_DESC);


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(wanted[i][0] <= 0) break;
    GetPlayerName(wanted[i][1], name, MAX_PLAYER_NAME];
    format(str, sizeof(str), "%s%s (%d)\n", str, name, wanted[i][0]);
    }
    ShowPlayerDialog(playerid, DIALOG_WANTED, DIALOG_STYLE_LIST, "Wanteds", str, "Ok", "Abbrechen");

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Ah...true Prototype ().

  • Hey,


    tut mir leid für die verspätete Antwort :(


    Möchte mich bei euch beiden bedanken, habt mir super geholfen & es klappt auch! :)

    Mit freundlichen Grüßen,


    Keslo