09.03.2016, 15:15
(
Последний раз редактировалось Slice; 09.03.2016 в 19:54.
)
Hey guys, it's been a while.
This include allows you to sort a plain array using your own, custom comparison. The comparison happens in the same place you run the sort!
I have previously done a similar thing in md-sort with the "comparators", but those sorts require external function calls and thus the code for the sorting is in 2 places.
The include has special helpers to make it easy to sort players. Here's an example:
Another example, not using helper macros/functions:
This include only sorts one-dimensional arrays; instead of sorting a multi-dimensional array, you can simply sort an array of indexes.
Tell me what you wish to sort and I will show you how!
GitHub: https://github.com/oscar-broman/samp-inline-sort
This include allows you to sort a plain array using your own, custom comparison. The comparison happens in the same place you run the sort!
I have previously done a similar thing in md-sort with the "comparators", but those sorts require external function calls and thus the code for the sorting is in 2 places.
The include has special helpers to make it easy to sort players. Here's an example:
pawn Код:
new g_Money[MAX_PLAYERS];
public OnSomething()
{
// Sort all players based on the value in g_Money
new PlayerArray<top_money>;
sortPlayersInline top_money => (R = l > r) {
R = g_Money[l] > g_Money[r];
}
forPlayerArray (top_money => playerid) {
printf("%d has $%d", playerid, g_Money[playerid]);
}
}
pawn Код:
public OnSomething()
{
new players_sorted[MAX_PLAYERS] = {0, 1, ...};
sortInline players_sorted => (R = left > right) {
new lc = IsPlayerConnected(left);
new rc = IsPlayerConnected(right);
// Is one of the players disconnected? Put the disconnected player below the connected.
if (lc != rc) {
R = lc > rc;
} else {
R = GetPlayerScore(left) > GetPlayerScore(right);
}
}
for (new i = 0; i < sizeof(players_sorted); i++) {
new playerid = players_sorted[i];
if (!IsPlayerConnected(playerid)) break;
printf("score of %d = %d", playerid, GetPlayerScore(playerid));
}
}
Tell me what you wish to sort and I will show you how!
GitHub: https://github.com/oscar-broman/samp-inline-sort