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

Плагин [FUN/MECH] FakePlayersOnline - Повышаем онлайн сервера?! [BukkiDev]

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 19 авг 2012.

  1. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Можно ли каждому игроку выдавать разную информацию в списке игроков?
    Или выставлять порядок фейк-игроков?
    Будет ли у плагина API?
     
    ВремяПриключений нравится это.
  2. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    DPOH-VAR
    В смысле каждому игроку выдавать разную информацию... Ого. Ну сделать-то можно. Только зачем? Где это можно применять?

    Порядок фейк-игроков - тот, который задан в config.yml, т.е. в той последовательности в которой они там есть (или как они добавлялись командой) так выводится и будут. Список NPC - не сортируется, но я заметил, что поиск выдает значения исходя из их ID. Т.е. в порядке их создания на сервере.
     
  3. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Честно скажу, писал плагин просто чтобы проверить как слать фейковую инфу. Механизм понял - и это "главное". Потом за денек, решил оформить: вдруг кому пригодится. Как всегда, "окультуривание" заняло больше времени чем собственно "полезный кодинг".

    Дорабатывать я планирую, но у меня есть определенный интерес в этом. Мне интересно доработать часть по NPC: допустим выводить только имена квестеров. Или (это был бы идеальный вариант если получится) имя квестера, к которому нужно идти текущему игроку.

    Я понимаю, чем грозит такой плагин, но на мой взгляд ему можно найти адекватное применение, чтобы от него не отказываться. К примеру, у нас он однозначно будет выводить (русский поддерживается, я проверял) в нескольких строках и красным цветом: "Запрещено: мат, читы, гриферство". Лишнее напоминание, никогда не помешает ;)
     
  4. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ну собственно почему бы и нет. Какие функции нужны?
     
  5. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    @fromgate,
    Я разрабатываю плагин для различных мини-игр. Было бы не плохо иметь возможность выводить информацию о состоянии игры для каждого игрока в списке (по нажатию tab), например его очки и список игроков. Также можно выводить в табе каждому игроку информацию о его деньгах (если подключить iConomy или аналог), ману, заклинания.. Применений множество.
    В идеале, чтобы можно было полностью заменить информацию об игроках на сервере в таб-листе.
    Если нельзя заменить все строки, то хотя бы функции /установить строку/изменить/прочитать строку/удалить строку/проверить возможность изменения строки/
    Буду рад, если реализуете API или хотя бы дадите сорцы Util-классов.
     
    fromgate нравится это.
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    DPOH-VAR, Вы молодец! Мне даже в голову не пришло такое применение. А ведь какая красивая идея! Значит так. Исходники есть тут: https://github.com/fromgate/FakePlayersOnline
    Но пока есть несколько но:
    1. Стандартный список плагин не трогает. Но ради такого дела, надо будет побробовать такое организовать.
    2. В качестве API его пока использовать, пожалуй нельзя. Я лучше сделаю соответствующие функции.
     
    MYXOMOPX нравится это.
  7. slenky

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

    Баллы:
    173
    Отличная идея. Займусь этим.
     
  8. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    судя по описанию протокола, сервер сообщает каждому игроку таб-лист 20 раз в секунду. чтобы перебить его данные, нужно отправлять фейк-пакеты намного чаще. Не будет ли тогда мерцания или рандомных данных?
    вот, вариант API:
    Код:
    /* установить игроку в соответствие новый фейклист
    * null, чтобы сбросить по умолчанию
    */
    void API.setFakeList(Player player,FakeList fakeList);
     
    /* получить фейк-лист игрока
    * вернет null, если фейк-листа нет
    */
    FakeList API.getFakeList(Player player);
     
     
    /* конструктор, можно пустой.
    */
    FakeList();
     
    /* установить значение в ячейке фейк-листа
    */
    void FakeList.set(int position,String fakeName);
     
    /* получить значение в ячейке фейк-листа
    */
    String FakeList.get(int position);
     
    /* все значения фейк-листа списком
    */
    List<String> FakeList.asList();
     
    /* если игроку установлен в соответствие феик-лист, то игрок видит в меню tab именно его
    * значения, установленные как не пустые строки - видны как строки.
    * пустые строки - остаются пустыми
    * значения null - заменяются списком игроков по порядку. если игроки кончились - то пустыми строками.
    */
    И вот более сложная, но функциональная реализация, под спойлером:
    Код:
    /* установить игроку в соответствие новый фейклист
    * null, чтобы сбросить по умолчанию
    */
    void API.setFakeList(Player player,FakeList fakeList);
     
    /* получить фейк-лист игрока
    * вернет null, если фейк-листа нет
    */
    FakeList API.getFakeList(Player player);
     
    /* конструктор, можно пустой.
    */
    FakeList();
     
    /* установить значение в ячейке фейк-листа
    */
    void FakeList.set(int position,FakeListItem item);
     
    /* получить значение в ячейке фейк-листа
    */
    FakeListItem FakeList.get(int position);
     
    /* все значения фейк-листа списком
    */
    List<FakeListItem> FakeList.asList();
     
    // реализовать FakeListItem в этом случае нужно как интерфейс
     
    interface FakeListItem{
        public String getString();
    }
     
    public class FixedFakeListItem implements FakeListItem{
        private String value;
        public FixedFakeListItem(String value){
            this.value=value
        }
        public String getString(){
            return value;
        }
    }
     
    /* таким образом можно установить динамическое значение элементу.
    * например:
    */
    final Player notch = Bukkit.getPlayer("Notch");
    final Player jeb = Bukkit.getPlayer("Jeb");
    FakeList fList = new FakeList();
    // ставим первый элемент: обычная строка
    fList.set(0,new FixedFakeListItem("-- hit points --"));
    // создаем второй динамический элемент: имя + hp
    FakeListItem item1 = new FakeListItem(){
        @Override public String getString()    {
            return notch.getName()+" : "+notch.getHealth();
        }
    }
    // создаем третий динамический элемент: имя + hp
    FakeListItem item2 = new FakeListItem(){
        @Override public String getString()    {
            return jeb.getName()+" : "+jeb.getHealth();
        }
    }
    // устанавливаем динамические значения
    fList.set(1,item1);
    fList.set(2,item2);
    // устанавливаем еще строчку
    fList.set(3,new FixedFakeListItem("----------------"));
    // отображаем фейк-лист игрокам
    API.setFakeList(notch,fList);
    API.setFakeList(jeb,fList);
     
    // будет в табе примерно такое:
    // -- hit points --
    // Notch : 20
    // Jeb : 15
    // ----------------
    // далее обычный список игроков
    извиняйте за ошибки в коде, писал от руки
    Мне такие функции очень пригодятся (даже первый вариант), но не хочу делать отдельный плагин для этого.
     
    Сникерсни нравится это.
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Да я описание протокола читал. Но вообще выяснилось, что не обязательно отправлять 20 раз в секунду. Главное отправить один раз, но чтобы клиент был полностью загружен. Я отправляю реже - 1 раз в пять секунд (кстати, настраивается в конфиге). И важно - чтобы убрать игрока из списка нужно обязательно отправить информацию о том, что он "ушёл", иначе может висеть очень долго.

    Про API я уже подумал, я наверное сделаю нечто подобное твоему предложение в этом плагине. А вообще появилась задумка на другой, именно расчитанный на отображение всяких разных таблиц рекордов.
     
  10. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Спасибо. тогда ждем'с API
     
  11. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Единственное у меня не создается отдельного списка для каждого игрока. Т.е. он один и общий.
     
  12. AimFire

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

    Баллы:
    123
    Skype:
    aimfire7777
    Имя в Minecraft:
    AimFire
    Сори не по теме всегда было интересно как вы делаете такую большую руку?
    [​IMG]
     
    I-Am-Black-Overlord нравится это.
  13. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ээээ.... качаюсь я, ведра с лавой из шахты крышу заливать таскаю, копаю и вообще ;)

    А если серьёзно - не знаю. У меня оно так. Возможно из-за высокого разрешения (скриншот уменьшен в размере)?
     
    ВремяПриключений нравится это.
  14. AimFire

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

    Баллы:
    123
    Skype:
    aimfire7777
    Имя в Minecraft:
    AimFire
    Хз, у меня маленькая;(
    А фейковые пользователи занимают слоты?
     
  15. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Нет конечно. Это же просто строка текста отправленная клиенту.
     
  16. slenky

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

    Баллы:
    173
    Прямиком в релизы :)
     
  17. zidic

    zidic Активный участник

    Баллы:
    68
    Имя в Minecraft:
    zidic
    @fromgate, ребят а нету такого же плагина но только что бы игроки онлайн были и добавлялись в список онлайнов ? И были как реальные !
     
  18. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    zidic, не совсем понял, чего именно нужно.
     
  19. zidic

    zidic Активный участник

    Баллы:
    68
    Имя в Minecraft:
    zidic
    плагин для добавления фейкоых онлайновых ботов !
     
  20. VaNnOrus

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

    Баллы:
    123
    Citizens чем тебе не плагин?
     
    Сникерсни нравится это.

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