Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 34
  1. #1
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±

    Вопрос по /top

    Здравствуйте Ув.Форумчане.

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

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

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

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

    PHP код:
    if(strcmp(cmd"/top"true) == 0)
       {
       new 
    Query[100], DBResultResult;
       
    format(Querysizeof(Query), "SELECT * FROM `USERS` WHERE `KILLS` > 0 ORDER BY `KILLS` DESC LIMIT 10");
       
    Result db_query(DatabaseQuery);
       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"nameMAX_PLAYER_NAME);
            
    db_get_field_assoc(Result,"Kills"kills,11);
            
    format(stringsizeof(string), fmt_stringnamestrval(kills));
            
    SendClientMessage(playerid0xFFFFFFAAstring);
       }
       
    db_free_result(Result);
       return 
    1;
       } 


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

  2. #2
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Нужно что-то вроде сортировки, по убийствам. Если у i-1 игрока убийств больше, чем у i игрока, меняем их местами.

  3. Пользователь сказал cпасибо:
    Дёня (16.07.2014)
  4. #3
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Нужно что-то вроде сортировки, по убийствам. Если у i-1 игрока убийств больше, чем у i игрока, меняем их местами.
    Ну это понятно, а как это сделать?

  5. #4
    Аватар для Spectrum
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.04.2014
    Адрес
    Omsk, Russia
    Сообщений
    349
    Репутация:
    49 ±
    Цитата Сообщение от Дёня Посмотреть сообщение
    Ну это понятно, а как это сделать?
    с помощью логических символов >, <, =
    допустим if(Kills > 1000) return SendClientMessage(-1, Все бабы твои, у тебя больше тысячи киллов);
    Skype: sp3ctrum_attack

  6. #5
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Цитата Сообщение от Spectrum Посмотреть сообщение
    с помощью логических символов >, <, =
    допустим if(Kills > 1000) return SendClientMessage(-1, Все бабы твои, у тебя больше тысячи киллов);
    нет, с помощью сортировки

    Вот алгоритмы сортировок, сделай по примерам
    Последний раз редактировалось MR_BEN; 16.07.2014 в 15:10.

  7. Пользователь сказал cпасибо:
    Дёня (16.07.2014)
  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А если как-то так
    PHP код:
    if(strcmp(cmd"/top"true) == 0)
    {
       new 
    Query[100], DBResultResult;
       
    format(Querysizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
       
    Result db_query(DatabaseQuery);
       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"nameMAX_PLAYER_NAME);
            
    db_get_field_assoc(Result,"Kills"kills11);
            
    format(stringsizeof(string), fmt_stringnamestrval(kills));
            
    SendClientMessage(playerid0xFFFFFFAAstring);
       }
       
    db_free_result(Result);
       return 
    1;

    Если не получится - придётся результат запроса сохранять и вручную сортировать
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    Дёня (16.07.2014)
  10. #7
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А если как-то так
    PHP код:
    if(strcmp(cmd"/top"true) == 0)
    {
       new 
    Query[100], DBResultResult;
       
    format(Querysizeof(Query), "SELECT Name, Kills FROM `USERS` WHERE Kills > 0 ORDER BY Kills DESC LIMIT 10");
       
    Result db_query(DatabaseQuery);
       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"nameMAX_PLAYER_NAME);
            
    db_get_field_assoc(Result,"Kills"kills11);
            
    format(stringsizeof(string), fmt_stringnamestrval(kills));
            
    SendClientMessage(playerid0xFFFFFFAAstring);
       }
       
    db_free_result(Result);
       return 
    1;

    Если не получится - придётся результат запроса сохранять и вручную сортировать
    Все по по прежнему, считывает только первые цифры.

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

  11. #8
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Цитата Сообщение от Дёня Посмотреть сообщение
    Все по по прежнему, считывает только первые цифры.

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

  12. Пользователь сказал cпасибо:
    Дёня (16.07.2014)
  13. #9
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    Это значит, записать все убийства, допустим в массив, и отсортировать его.
    Хм.... а можно пример или объяснить, как это сделать.

  14. #10
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Цитата Сообщение от Дёня Посмотреть сообщение
    Хм.... а можно пример или объяснить, как это сделать.
    Посмотри, там наверху есть алгоритмы сортировок, запишешь всё в массив и по любому из этих отсортируешь.

 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •