Функции сортировки работают с одномерными массивами, а у нас двумерный. Потому компилятор и ругается. Вот, попробуйте такой велосипед
PHP код:
if(strcmp(cmd, "/top", true) == 0)
{
Result = db_query(Database, "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
new string[20+MAX_PLAYER_NAME+11],
buff_name[10][MAX_PLAYER_NAME],
buff_kills[10][11],
player_kills[10],
i;
while(db_next_row(Result))
{
db_get_field_assoc(Result, "Name", buff_name[i], MAX_PLAYER_NAME);
db_get_field_assoc(Result, "Kills", buff_kills[i], 11);
player_kills[i] = strval(buff_kills[i]);
i++;
}
db_free_result(Result);
SelectionSort(player_kills);
for(i = 0; i != 10; i++)
{
for(new _i = 0; _i != 10; _i++)
{
if(strval(buff_kills[_i]) == player_kills[_i])
{
format(string, sizeof(string), "Ник: %s || Kills: %d", buff_name[_i], player_kills[i]);
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
}
}
return 1;
}
stock SelectionSort(_array[], size = sizeof _array)
{
for(new i = 0, value = 0, j = 0, swap = 0; i != size - 1; i++)
{
value = i;
for(j = i + 1; j != size; j++)
{
if(_array[ j ] > _array[ value ]) value = j;
}
if(value != i)
{
swap = _array[ i ];
_array[ i ] = _array[ value ];
_array[ value ] = swap;
}
}
}ф
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Тут такая проблема...
Все работает, Kills распределяет правильно, но когда я вставляю команду вашу
Вот что происходит
А когда делаю команду вот так
То вот так
Но, что интересно, Ники игроков не правильно ставятся
Вот как было раньше, когда не правильно распределялись килы
А вот как сейчас, килы правильно распределяются, а ники так и остались
В чем проблема?
Ах да, мой косяк.
Правда возможен ещё один баг, когда система будет находить неверный ник при одинаковых кол-вах фрагов. Если такое будет, используйте этот кодPHP код:
if(strcmp(cmd, "/top", true) == 0)
{
Result = db_query(Database, "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
new string[20+MAX_PLAYER_NAME+11],
buff_name[10][MAX_PLAYER_NAME],
buff_kills[10][11],
player_kills[10],
i;
while(db_next_row(Result))
{
db_get_field_assoc(Result, "Name", buff_name[i], MAX_PLAYER_NAME);
db_get_field_assoc(Result, "Kills", buff_kills[i], 11);
player_kills[i] = strval(buff_kills[i]);
i++;
}
db_free_result(Result);
SelectionSort(player_kills);
for(i = 0; i != 10; i++)
{
for(new _i = 0; _i != 10; _i++)
{
if(strval(buff_kills[_i]) == player_kills[_i])
{
format(string, sizeof(string), "Ник: %s || Kills: %d", buff_name[_i], player_kills[i]);
SendClientMessage(playerid, 0xFFFFFFAA, string);
break;
}
}
}
return 1;
}
НО ТОЛЬКО ЕСЛИ БУДЕТ БАГ.
И да, я уверен, что сейчас создаю жуткие велосипеды. Но такой уж я
P.S. Всё пишется в браузере и если будут ошибки - сообщите, исправлю
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)