1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Получить всех онлайн и оффлайн людей с одним IPs

Тема в разделе "Разработка плагинов для новичков", создана пользователем Qbert, 7 авг 2020.

Статус темы:
Закрыта.
  1. Автор темы
    Qbert

    Qbert Активный участник Пользователь

    Баллы:
    66
    Надо сделать так чтобы при написании "/accs [IP]" Должно выдавать всех онлайн и оффлайн с этим IP игроков через знак " | " (справа и слева от знака | пробелы!!). "Игрок1 | игрок2 | игрок3 | игрок4...".
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    В ess что то подобное было вроде. Только ты не думай. что это 100% мульты, это могут быть сероайпи юзеры.
     
  4. Автор темы
    Qbert

    Qbert Активный участник Пользователь

    Баллы:
    66
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Tогда ответ выше - проще всего через Essentials или AuthMe. Можешь ещё сам хранить ip с UUID.
     
  6. Автор темы
    Qbert

    Qbert Активный участник Пользователь

    Баллы:
    66
    Возможно это сложно, и проще взять Essentials, но вопрос как получить всех игроков с IP, а не какой плагин дает это...
     
  7. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Можно сделать таблицу из [(`name` VARCHAR(16)) или (`uid_most` LONG, `uid_least` LONG)] PRIMARY KEY, `host` UNSIGNED INT

    Запись/обновление:
    INSERT INTO tbl (`name`, `host`) VALUES (?, INET_ATON(?)) ON DUPLICATE KEY UPDATE `host`=INET_ATON(?);
    Чтение:
    SELECT `name` FROM tbl WHERE `host`=INET_ATON(?);
    Если UUID то вместо имени юзай UUID::getLeastSignificantBits UUID::getMostSignificantBits

    Чтобы просмотреть таблицу полностью в хуман-реадабле (от создателей лангуаге):
    SELECT `name`, INET_NTOA(`host`) AS `host` FROM tbl;

    Надеюсь ты умеешь работать с базой данных)

    Если прям ваще срочно и не хочешь учить работу с базой, то можно сделать по тупому. Записывай в текстовый файл
    адрес | ник/uuid, потом перебирай все строки, у которых адрес = цель. Считывай желательно асинхронно. Но лучше такие костыли вообще не делать)

    Если нужно, могу скинуть кусок кода для асинхронной/синхронной работы с PostgreSql, там просто название драйвера поменять.

    UPD: Сори если бред написал, просто я 2 недели в отпуске был. Вот только вернулся)
     
  8. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Не на всех серверах стоит Essentials или AuthMe.
    Лишние зависимости.

    Но тоже как вариант.
     
  9. Автор темы
    Qbert

    Qbert Активный участник Пользователь

    Баллы:
    66
    Я не шарю про БД пока, в процессе этого. Записывать в файл "IP | name | UUID", я немного не понял как это, но это подталкнуло меня на идею как сделать, спасибо :3
     
  10. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Я предупреждал. Это дикий костыль)
     
  11. Автор темы
    Qbert

    Qbert Активный участник Пользователь

    Баллы:
    66
    угу
     
Статус темы:
Закрыта.

Поделиться этой страницей