How is the array built?
Custom means it has to be customized depending on how you want to sort it. The text over the function on the inc really explains it all.
Here's an example of 1D-array I did recently. It sorts players by score, if score is equal it compares who has the least amount of deaths instead.
Code:
#include <amxmodx>
#include <cstrike>
#define g_MaxPlayers 32
public plugin_init() {
register_plugin("Test Plugin 8", "", "");
register_clcmd("say /sb", "score")
}
public score(id) {
new iPlayers[32], iPlayersnum, text[64], name[32];
get_players(iPlayers, iPlayersnum, "c");
SortCustom1D(iPlayers, iPlayersnum, "SortFunc");
for ( new i = 0 ; i < iPlayersnum ; i++ ) {
get_user_name(iPlayers[i], name, 31);
formatex(text, 63, "%s %i %i", name, get_user_frags(iPlayers[i]), get_user_deaths(iPlayers[i]));
server_print("%d: %s", i, iPlayers[i]);
}
}
public SortFunc(elem1, elem2) {
if ( get_user_frags(elem1) > get_user_frags(elem2) )
return -1;
else if ( get_user_frags(elem1) < get_user_frags(elem2) )
return 1;
else if ( get_user_deaths(elem1) < get_user_deaths(elem2) )
return -1;
else if ( get_user_deaths(elem1) > get_user_deaths(elem2) )
return 1;
return 0;
}
Return values:
-1: elem1 before elem2
1: elem2 before elem1
0: they are equal.
__________________