PDA

Просмотр полной версии : [Вопрос] Вопрос по /top



Дёня
13.07.2014, 19:48
Здравствуйте Ув.Форумчане.

Вот такая проблема, попытался сделать команду /top(показывает 10 тех у кого больше всех убийств) и столкнулся с такой проблемой.

Введя команду /top мне показывается 10 тех у кого первая цифра больше. Т.е. если у меня 800 килов, а у Вани 3000, я буту стоять первым.

Как исправить данную проблему? БД SQliteю

Вот команда и скрин.


if(strcmp(cmd, "/top", true) == 0)
{
new Query[100], DBResult: Result;
format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `KILLS` > 0 ORDER BY `KILLS` DESC LIMIT 10");
Result = db_query(Database, Query);
static const fmt_string[] = "Ник: %s || Kills: %d";
new string[sizeof(fmt_string)-4+11+MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME+1],kills[11];
while(db_next_row(Result))
{
db_get_field_assoc(Result,"Name", name, MAX_PLAYER_NAME);
db_get_field_assoc(Result,"Kills", kills,11);
format(string, sizeof(string), fmt_string, name, strval(kills));
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
db_free_result(Result);
return 1;
}

http://i024.radikal.ru/1407/94/28d2aef64d0c.jpg

У кого не грузить вот - http://i024.radikal.ru/1407/94/28d2aef64d0c.jpg

MR_BEN
13.07.2014, 21:38
Нужно что-то вроде сортировки, по убийствам. Если у i-1 игрока убийств больше, чем у i игрока, меняем их местами.

Дёня
13.07.2014, 21:49
Нужно что-то вроде сортировки, по убийствам. Если у i-1 игрока убийств больше, чем у i игрока, меняем их местами.

Ну это понятно, а как это сделать?

Spectrum
13.07.2014, 21:59
Ну это понятно, а как это сделать?

с помощью логических символов >, <, =
допустим if(Kills > 1000) return SendClientMessage(-1, Все бабы твои, у тебя больше тысячи киллов);

MR_BEN
13.07.2014, 22:12
с помощью логических символов >, <, =
допустим if(Kills > 1000) return SendClientMessage(-1, Все бабы твои, у тебя больше тысячи киллов);

нет, с помощью сортировки

Вот алгоритмы сортировок (http://pro-pawn.ru/showthread.php?6836-s-%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8), сделай по примерам

DeimoS
14.07.2014, 09:33
А если как-то так

if(strcmp(cmd, "/top", true) == 0)
{
new Query[100], DBResult: Result;
format(Query, sizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
Result = db_query(Database, Query);
static const fmt_string[] = "Ник: %s || Kills: %d";
new string[sizeof(fmt_string)-4+11+MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME],kills[11];
while(db_next_row(Result))
{

db_get_field_assoc(Result,"Name", name, MAX_PLAYER_NAME);
db_get_field_assoc(Result,"Kills", kills, 11);
format(string, sizeof(string), fmt_string, name, strval(kills));
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
db_free_result(Result);
return 1;
}
Если не получится - придётся результат запроса сохранять и вручную сортировать

Дёня
14.07.2014, 20:03
А если как-то так

if(strcmp(cmd, "/top", true) == 0)
{
new Query[100], DBResult: Result;
format(Query, sizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
Result = db_query(Database, Query);
static const fmt_string[] = "Ник: %s || Kills: %d";
new string[sizeof(fmt_string)-4+11+MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME],kills[11];
while(db_next_row(Result))
{

db_get_field_assoc(Result,"Name", name, MAX_PLAYER_NAME);
db_get_field_assoc(Result,"Kills", kills, 11);
format(string, sizeof(string), fmt_string, name, strval(kills));
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
db_free_result(Result);
return 1;
}
Если не получится - придётся результат запроса сохранять и вручную сортировать

Все по по прежнему, считывает только первые цифры.

А можно поподробнее, как это? Сохранять результат запроса и в ручную сортировать?

MR_BEN
14.07.2014, 20:17
Все по по прежнему, считывает только первые цифры.

А можно поподробнее, как это? Сохранять результат запроса и в ручную сортировать?

Это значит, записать все убийства, допустим в массив, и отсортировать его.

Дёня
16.07.2014, 14:29
Это значит, записать все убийства, допустим в массив, и отсортировать его.

Хм.... а можно пример или объяснить, как это сделать.

MR_BEN
16.07.2014, 15:00
Хм.... а можно пример или объяснить, как это сделать.

Посмотри, там наверху есть алгоритмы сортировок, запишешь всё в массив и по любому из этих отсортируешь.

Дёня
16.07.2014, 15:08
Посмотри, там наверху есть алгоритмы сортировок, запишешь всё в массив и по любому из этих отсортируешь.

Где "там на верху"???

MR_BEN
16.07.2014, 15:10
Вот алгоритмы сортировок (http://pro-pawn.ru/showthread.php?6836-s-%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8)

Дёня
16.07.2014, 15:14
Вот алгоритмы сортировок (http://pro-pawn.ru/showthread.php?6836-s-%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8)

Прошу прощения, сразу не заметил, спасибо, сейчас буду разбираться.

MR_BEN
16.07.2014, 15:15
Прошу прощения, сразу не заметил, спасибо, сейчас буду разбираться.

Удачи

Дёня
16.07.2014, 15:35
Вот алгоритмы сортировок (http://pro-pawn.ru/showthread.php?6836-s-%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8)

Я прошу прощения за мою глупость и если я сделал полную чушь, но... посмотрите, я верно сделал или нет? :)


if(strcmp(cmd, "/top", true) == 0)
{
new Query[100], DBResult: Result;
format(Query, sizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
Result = db_query(Database, Query);
static const fmt_string[] = "Ник: %s || Kills: %d";
new string[sizeof(fmt_string)-4+11+MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME],kills[11];
new size = sizeof kills;
for(new i = 0, j = 0, swap = 0; i != size; i++) {
for( j = 0 ; j < i ; j++ ) {
if(kills[i] > kills[j]){//max to min
swap = kills[i];
kills[i] = kills[j];
kills[j] = swap;
}
}
}
while(db_next_row(Result))
{

db_get_field_assoc(Result,"Name", name, MAX_PLAYER_NAME);
db_get_field_assoc(Result,"Kills", kills, 11);
format(string, sizeof(string), fmt_string, name, strval(kills));
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
db_free_result(Result);
return 1;
}

MR_BEN
16.07.2014, 15:38
Я прошу прощения за мою глупость и если я сделал полную чушь, но... посмотрите, я верно сделал или нет? :)


if(strcmp(cmd, "/top", true) == 0)
{
new Query[100], DBResult: Result;
format(Query, sizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
Result = db_query(Database, Query);
static const fmt_string[] = "Ник: %s || Kills: %d";
new string[sizeof(fmt_string)-4+11+MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME],kills[11];
new size = sizeof kills;
for(new i = 0, j = 0, swap = 0; i != size; i++) {
for( j = 0 ; j < i ; j++ ) {
if(kills[i] > kills[j]){//max to min
swap = kills[i];
kills[i] = kills[j];
kills[j] = swap;
}
}
}
while(db_next_row(Result))
{

db_get_field_assoc(Result,"Name", name, MAX_PLAYER_NAME);
db_get_field_assoc(Result,"Kills", kills, 11);
format(string, sizeof(string), fmt_string, name, strval(kills));
SendClientMessage(playerid, 0xFFFFFFAA, string);
}
db_free_result(Result);
return 1;
}

Проверь на работоспособность, запусти

Дёня
16.07.2014, 15:45
Проверь на работоспособность, запусти

Проверил, не получилось, все так же, только первые цифры считывает

Seregamil
16.07.2014, 19:56
запрос возвращает верные данные?
Именно запрос.

Дёня
16.07.2014, 20:58
запрос возвращает верные данные?
Именно запрос.

Получается, что нет.Я отправляю запрос, а он мне выводит тех, у кого первая цифра больше, чем у другого. В 1 посте, на скрине посмотрите

Flime
16.07.2014, 21:06
Получается, что нет.Я отправляю запрос, а он мне выводит тех, у кого первая цифра больше, чем у другого. В 1 посте, на скрине посмотрите
Запрос не очень :) Делай что-то свое, а не бери чужое. Мне обидно увидеть свой код тут. Не для тебя я его писал :cry:

Дёня
16.07.2014, 21:13
Запрос не очень :) Делай что-то свое, а не бери чужое. Мне обидно увидеть свой код тут. Не для тебя я его писал :cry:

Если бы я мог сделать, свое, то я бы сделал :)

А, что именно обидного в том, что я взял за основу твой код? Я же не претендую на авторство. А так держи спасибку, за команду :D

DeimoS
16.07.2014, 22:05
Если бы я мог сделать, свое, то я бы сделал :)

Я просто худею с таких слов... А вы не можете!? У вас нет ни рук, ни ног, ни головы? Или вы хотите сказать, что Flime умнее и способнее вас?
Не знаете как сделать - разберитесь! Рано или поздно вам всё равно придётся разобраться, ведь никто за вас не разберётся! Переборите лень и включите, наконец, мозг.
И привыкайте уже, наконец, что никто в этой жизни не сделает за вас вашу работу. Ведь все мы одинаковые и у каждого эта самая "работа" своя. И практически каждый хочет так же, как и вы, получить всё готовое. Всем лень. Но есть те, кто переборол свою лень. И только они добьются успеха. Это правило жизни, ибо иначе никак. Нас 7 миллиардов на Земле.


Такое, вот, лирическое отступление. А теперь к сути. Я предлагал сделать как-то так

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],
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);
i++;
}
db_free_result(Result);
SelectionSort(buff_name);
SelectionSort(buff_kills);
for(i = 0; i != 10; i++)
{
format(string, sizeof(string), "Ник: %s || Kills: %d", buff_name[i], strval(buff_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 ])//max to min
value = j;
}
if(value != i)
{
swap = _array[ i ];
_array[ i ] = _array[ value ];
_array[ value ] = swap;
}
}
}

Seregamil
16.07.2014, 22:13
SelectionSort(buff_name);
SelectionSort(buff_kills);
Двухмерный массив для слабаков?

DeimoS
16.07.2014, 22:20
Двухмерный массив для слабаков?

Шта? :crazy:

Дёня
16.07.2014, 22:53
Я просто худею с таких слов... А вы не можете!? У вас нет ни рук, ни ног, ни головы? Или вы хотите сказать, что Flime умнее и способнее вас?
Не знаете как сделать - разберитесь! Рано или поздно вам всё равно придётся разобраться, ведь никто за вас не разберётся! Переборите лень и включите, наконец, мозг.
И привыкайте уже, наконец, что никто в этой жизни не сделает за вас вашу работу. Ведь все мы одинаковые и у каждого эта самая "работа" своя. И практически каждый хочет так же, как и вы, получить всё готовое. Всем лень. Но есть те, кто переборол свою лень. И только они добьются успеха. Это правило жизни, ибо иначе никак. Нас 7 миллиардов на Земле.

К счастью, всевышний наградил меня всеми частями тела, так что у меня все есть. А что на счет того, что Flime умнее или способнее меня, я отрицать не стану.Возможно он способнее, а вот на счет умнее, это я не знаю т.к. не знаком с ним лично.
Если я не знаю, как сделать, то я разбираюсь и стараюсь, что-то понять.Но мне легче понимать, когда мне объясняют и показывают, код, как вы показали мне сейчас, чем читать уроки/мануалы. А я и не говорил, что всегда все за меня делать будут, и не привыкал даже к этому, просто как "начинающий" мне сложно ориентироваться в pawn программировании и поэтому прошу помощи у Вас. А вот на счет того, что мы все одинаковые, я готов поспорить и сказать, что: -нет, мы все совершенно разные. И мне не лень ничего делать самому, мне наоборот интересно изучать, понимать и реализовывать, код в какое-нибудь действие, просто, повторюсь, что читая то, что мне отвечают люди на форуме и говорят, что и как сделать, я понимаю и усваиваю это быстрее.


Ну вот такое лирическое отступление :)

А теперь вот:

ругается на 2 этих строчки. № ошибки "error 048: array dimensions do not match"

SelectionSort(buff_name);
SelectionSort(buff_kills);

Дёня
17.07.2014, 20:00
UP'chi

MR_BEN
17.07.2014, 21:36
Пробуй



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[11][MAX_PLAYER_NAME],
buff_kills[11][11],
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);
i++;
}
db_free_result(Result);
SelectionSort(buff_name);
SelectionSort(buff_kills);
for(i = 0; i != 10; i++)
{
format(string, sizeof(string), "Ник: %s || Kills: %d", buff_name[i], strval(buff_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 ])//max to min
value = j;
}
if(value != i)
{
swap = _array[ i ];
_array[ i ] = _array[ value ];
_array[ value ] = swap;
}
}
}

Дёня
17.07.2014, 22:55
Пробуй



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[11][MAX_PLAYER_NAME],
buff_kills[11][11],
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);
i++;
}
db_free_result(Result);
SelectionSort(buff_name);
SelectionSort(buff_kills);
for(i = 0; i != 10; i++)
{
format(string, sizeof(string), "Ник: %s || Kills: %d", buff_name[i], strval(buff_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 ])//max to min
value = j;
}
if(value != i)
{
swap = _array[ i ];
_array[ i ] = _array[ value ];
_array[ value ] = swap;
}
}
}

Все те же ошибки и на те же строки

MR_BEN
17.07.2014, 23:25
Все те же ошибки и на те же строки

Изменяй размер массива, должно помочь.

Дёня
18.07.2014, 11:38
Изменяй размер массива, должно помочь.

А изменять в большую или меньшую сторону?

MR_BEN
18.07.2014, 11:49
А изменять в большую или меньшую сторону?

В большую

DeimoS
18.07.2014, 12:02
Функции сортировки работают с одномерными массивами, а у нас двумерный. Потому компилятор и ругается. Вот, попробуйте такой велосипед

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

Дёня
18.07.2014, 17:09
Тут такая проблема...

Все работает, Kills распределяет правильно, но когда я вставляю команду вашу


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

Вот что происходит
http://s015.radikal.ru/i333/1407/e9/4c0a9d9335b5.jpg


А когда делаю команду вот так



if(strcmp(cmd, "/top", true) == 0)
{
new DBResult: Result;
Result = db_query(Database, "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
new stringtop[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++)
{
format(stringtop, sizeof(stringtop), "Ник: %s || Kills: %d", buff_name[i], player_kills[i]);
SendClientMessage(playerid, 0xFFFFFFAA, stringtop);
}
return 1;
}


То вот так

http://s019.radikal.ru/i604/1407/52/d1cd433c80b4.jpg

Но, что интересно, Ники игроков не правильно ставятся

Вот как было раньше, когда не правильно распределялись килы

http://i024.radikal.ru/1407/94/28d2aef64d0c.jpg

А вот как сейчас, килы правильно распределяются, а ники так и остались

http://s019.radikal.ru/i604/1407/52/d1cd433c80b4.jpg

В чем проблема?

DeimoS
18.07.2014, 18:11
Ах да, мой косяк.

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;
}
Правда возможен ещё один баг, когда система будет находить неверный ник при одинаковых кол-вах фрагов. Если такое будет, используйте этот код

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],
num_tick[10],
tick,
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++)
{
for(new __i = 0; __i != 10; __i++) if(num_tick[__i] == _i) goto next_iteration;
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);
num_tick[tick] = _i;
tick++;
break;
}
next_iteration:
continue;
}
}
return 1;
}
НО ТОЛЬКО ЕСЛИ БУДЕТ БАГ.

И да, я уверен, что сейчас создаю жуткие велосипеды. Но такой уж я :grin:
P.S. Всё пишется в браузере и если будут ошибки - сообщите, исправлю