Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±

    Как сделать команду, которая бы показывала всех игроков с розыском

    Здравствуйте. Можно ли как-то сделать такой алгоритм, что мне будет НАПРИМЕР показывать всех игроков(онлайн) с розыском в чате, но сначало будут идти игроки с уровнем розыска 1, потом 2 и тд. ? И чтобы этот алгоритм можна было еще использовать в других случаях.

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

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Возможно, данные будут браться из базы данных ?

  3. #3
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±
    Цитата Сообщение от Long- Посмотреть сообщение
    Возможно, данные будут браться из базы данных ?
    Нет, нужно чтоб именно у игроков которые онлайн... С базы данных я и сам минимально знаю как, но если не сложно будет опиши еще как с БД, мб для себя что-то новое увижу.

  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    ИМХО, самый простой в исполнении вариант - с помощью foreach несколько раз перебрать всех игроков в онлайне, сначала добавляя в список игроков с 1-м уровнем розыска, затем с 2-м, 3-м и т.д. Либо можно сделать отдельный итератор для всех разыскиваемых игроков, или даже несколько итераторов, по одному на каждый уровень розыска, если вам не жалко памяти под несколько массивов размером в MAX_PLAYERS.

    И да, разве не логичнее выводить сначала тех, у кого уровень розыска больше?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И да, разве не логичнее выводить сначала тех, у кого уровень розыска больше?
    Я это как пример написал, но спасибо за ответ.

  6. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от geneff Посмотреть сообщение
    Нет, нужно чтоб именно у игроков которые онлайн... С базы данных я и сам минимально знаю как, но если не сложно будет опиши еще как с БД, мб для себя что-то новое увижу.
    Можно в БД создать поле is_online и ставить туда true при логине и false при отключении игрока и старте сервера (на случай краша).

  7. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Можно в БД создать поле is_online и ставить туда true при логине и false при отключении игрока и старте сервера (на случай краша).
    Знаю, что это просто ТС попросил привести пример с БД, но думаю, всё же стоит заметить, что перебор игроков едва ли настолько сложен, чтобы выгружать эту задачу на сервер MySQL. К тому же, доступ к результатам запроса к БД осуществляется с помощью нативных функций, выполнение которых занимает на порядок больше времени, чем у пары-тройки инструкций для доступа к массиву в случае с foreach.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    ИМХО, самый простой в исполнении вариант - с помощью foreach несколько раз перебрать всех игроков в онлайне, сначала добавляя в список игроков с 1-м уровнем розыска, затем с 2-м, 3-м и т.д. Либо можно сделать отдельный итератор для всех разыскиваемых игроков, или даже несколько итераторов, по одному на каждый уровень розыска, если вам не жалко памяти под несколько массивов размером в MAX_PLAYERS.
    Или можно 1 раз пройтись по игрокам с помощью форич, а потом отсортировать используя любой тип сортировки. Но не знаю какой метод будет оптимальнее, может для сортировки потребуется больше процессорного времени, чем в Вашем случае (надо проверить).

  9. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну по части скорости вариант массивами под каждый уровень звучит правдоподобнее, ибо в момент вызова все данные уже будут отсортированы и их нужно будет лишь показать. Другое дело, что памяти будет выделено больше + придётся составлять алгоритм по сортировке массивов (в случае с foreach: просто вовремя удалять и добавлять данные в нужный массив).
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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