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);