Участник
Пользователь
- Сообщения
- 893
- Реакции
- 149
- Помог
- 25 раз(а)
Всем привет ребят, пытаюсь получить топ игрока по значению массива (массив сделал чисто для теста). Выставляю значения массива ботам 4, а людям 3. Но дело в том, что оно не корректно работает, сделал в чат сообщение debug_top (если человек в топе), иначе, выводим сообщение debug_not_top. По сути, мне должно вывести debug_not_top, так как значение массива у меня меньше, чем у бота, но мне всё-равно, почему-то выводит debug_top.
Помогите, пожалуйста, понять, что я не так делаю?
Код:
#include <AmxModX>
#include <AmxMisc>
#include <ReApi>
//#include <GameCms5>
new const szInfo[][] = {
"[GameCMS] Addon: Bonus For Top10 Time",
"0.1",
"Immortal-"
};
const TASKID_BONUS = 123456;
enum _:ePlayerData {
PLAYER_ID,
TIME
};
new g_ArrayData[MAX_PLAYERS + 1][ePlayerData];
new g_iPlayerTime[MAX_PLAYERS + 1];
#define IsPlayer(%1) (1 <= %1 <= get_member_game(m_nMaxPlayers))
public client_putinserver(iPlayer) {
//g_iPlayerTime[iPlayer] = cmsapi_get_user_gametime(iPlayer);
if(is_user_bot(iPlayer)) {
g_iPlayerTime[iPlayer] = 4;
}
else {
g_iPlayerTime[iPlayer] = 3;
}
set_task(15.0, "Task_Give_Bonuse", iPlayer + TASKID_BONUS);
}
public plugin_init() {
register_plugin(szInfo[0], szInfo[1], szInfo[2]);
}
public Task_Give_Bonuse(iPlayer) {
iPlayer -= TASKID_BONUS;
if(!is_user_connected(iPlayer))
return;
new iBestPlayerId, iBestPlayerTime;
for(new i = 1; i <= MaxClients; i++) {
g_ArrayData[i][PLAYER_ID] = iPlayer;
g_ArrayData[i][TIME] = _:g_iPlayerTime[iPlayer];
}
SortCustom2D(g_ArrayData, sizeof(g_ArrayData), "SortPlayerTime");
iBestPlayerId = g_ArrayData[0][PLAYER_ID];
iBestPlayerTime = g_ArrayData[0][TIME];
if(IsPlayer(iBestPlayerId) && iBestPlayerTime >= 1) {
client_print(0, print_chat, "debug_top");
}
else {
client_print(0, print_chat, "debug_not_top");
}
}
public SortPlayerTime(const elem1[], const elem2[])
return(elem1[TIME] < elem2[TIME]) ? 1 : (elem1[TIME] > elem2[TIME]) ? -1 : 0;