stock GetHighScorePlayer() { new highScore =-1; new playerid = INVALID_PLAYER_ID; foreach(new i : Player) { if(PlayerInfo[i][pScore] > highScore) { playerid = i; highScore = PlayerInfo[i][pScore]; } } return playerid; }
GetHighScorePlayers(array[MAX_PLAYERS][2]) {
// and we store the playerid and the score in the array
foreach(new i : Player) {
array[i][0] = i;
array[i][1] = PlayerInfo[i][pScore];
}
// now we just sort the whole array descending by the value stored in [1] (the score)
SortDeepArray(array, 1, .order = SORT_DESC);
}
// example
new
tPlayer[MAX_PLAYERS][2]
;
GetHighScorePlayers(tPlayer);
printf("1. %d Score: %d", tPlayer[0][0], tPlayer[0][1]);
printf("2. %d Score: %d", tPlayer[1][0], tPlayer[1][1]);
printf("3. %d Score: %d", tPlayer[2][0], tPlayer[2][1]);
printf("4. %d Score: %d", tPlayer[3][0], tPlayer[3][1]);
printf("5. %d Score: %d", tPlayer[4][0], tPlayer[4][1]);
// and so on
Use md-sort = Sort multi-dimensional arrays (enums supported)
You need to sort your array descending by score and than you can extract the first three |
GetPlayerName(WinningPlayers[0][0],PlayerInfo[WinningPlayers[0][0]][pName],MAX_PLAYER_NAME); format(string, sizeof(string), "%s(%d)", PlayerInfo[WinningPlayers[0][0]][pName],PlayerInfo[WinningPlayers[0][1]]); TextDrawSetString(FirstPlace,string); TextDrawShowForAll(FirstPlace);
GetHighScorePlayers(array[MAX_PLAYERS][2]) { // and we store the playerid and the score in the array foreach(new i : Player) { array[i][0] = i; array[i][1] = PlayerInfo[i][pScore]; } // now we just sort the whole array descending by the value stored in [1] (the score) SortDeepArray(array, 1, .order = SORT_DESC); }
new tPlayer[MAX_PLAYERS][2] ; GetHighScorePlayers(tPlayer); printf("1. %d Score: %d", tPlayer[0][0], tPlayer[0][1]); printf("2. %d Score: %d", tPlayer[1][0], tPlayer[1][1]); printf("3. %d Score: %d", tPlayer[2][0], tPlayer[2][1]);
//
new
wPlayers[MAX_PLAYERS][2]
;
GetHighScorePlayers(wPlayers);
// wPlayers[x][0] stores the playerid
// wPlayers[x][1] stores the score
new
first[MAX_PLAYER_NAME],
second[MAX_PLAYER_NAME],
third[MAX_PLAYER_NAME],
string[128]
;
GetPlayerName(wPlayers[0][0], first, sizeof first);
GetPlayerName(wPlayers[1][0], second, sizeof second);
GetPlayerName(wPlayers[2][0], third, sizeof third);
format(string, sizeof string,
"\
%s(%d)\n\
%s(%d)\n\
%s(%d)\
"
, first, wPlayers[0][1]
, second, wPlayers[1][1]
, third, wPlayers[2][1]
);
TextDrawSetString(FirstPlace, string);
TextDrawShowForAll(FirstPlace);