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

Плагин [CHAT] RPchat - RolePlay чат v0.6 [1.4.6+]

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

  1. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Решил таки обновить под новую версию свой форк... что-то ни как не пойму, Моджонги реально хотят от ID отказаться или это баккиты воду мутят?
    Код:
     warning: [deprecation] ItemStack(int,int) in ItemStack has been deprecated
            ItemStack inHandrem = new ItemStack(inHand.getTypeId(), inHand.getAmount() - 1);
    5 warnings
    .getTypeId() - устарело? Как же теперь в конфигах хранить вещи, если не по ID?
     
    MineMan910 и slavik123123123 нравится это.
  2. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    MATERIAL_AIR, если не ошибаюсь.
     
  3. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Обновил форк: https://dl.dropboxusercontent.com/u/31129431/Minecraft/RPChat.jar

    Добавлен эксперементальный режим, нужен для плавного перехода не следующую версию.

    Запрещено распространять изменённую версию без согласования с авторами

    Моджонг реально хочет отказаться от ID?
     
    ufes нравится это.
  4. DmitriyMX

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

    Баллы:
    153
    Skype:
    dmn550
    При этом мне нравится объяснение этому:
    Отлично! Теперь мне всё ясно. Я даже теперь знаю, какой метод использовать вместо устаревшего!
    Почитал оф. форум Bukkit. Вот что нашел(перевод вольный):
    пруф
     
  5. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    По мне так это весьма абсурдно...
    В плане использования местами такой шаблон
    Код:
    if(p.getItemInHand().getType() == Material.getMaterial(getConfig().getString("Tool")))
     
    zuma2 нравится это.
  6. DmitriyMX

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

    Баллы:
    153
    Skype:
    dmn550
  7. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Так... Мута ещё не будет, но планирую добавить [Broadcast] - канал, так сказать, объявлений и FakeMessage (Ложное сообщение) - сообщение от лица другого игрока или вообще без опознавательных знаков. Это вообще нужно:? или мут нужнее?
     
  8. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    броадкаст вроде пилится вообще легко. Давай мут, потом fm, потом броад ^_^
     
  9. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Броад и фейк имеют одну сложность, а вот мут... с мутом всё несколько сложнее, если делать мут по принципу наложил/снял вручную - то это не сложно, а если с о снятием по истечению времени, то тут придётся напрячься с форматом хранения этого самого времени.
     
    MineMan910 нравится это.
  10. DmitriyMX

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

    Баллы:
    153
    Skype:
    dmn550
    Если не против, могу я предложить вариант решения в виде pull request
     
  11. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    dark32 Fork:rpChat (не является прямым продолжением, параллельная ветвь разработки)
    Версия: 0.10b
    Разработчики: ufes, @dark32
    Отдельное спасибо: DmitriyMX

    rpChat2

    [​IMG]
    Пока релизил, поправил пару незначительных багов... т.ч. эта картинка несколько устарела

    Каналы:
    [​IMG]

    Глобальный - слышно во всех мирах, можно настроить плату предметом, есть пермиссионс.
    Мировой - слышно только в текущем мире, можно настроить плату предметом, есть премиссонс
    Крик - слышно в большом радиусе
    Локальный - слышно в среднем радиусе
    Шёпот - слышно в малом радиусе
    Личный чат - слышно только адресату
    Действие с вероятностью - слышно в радиусе локального чата
    [​IMG]
    [​IMG]
    [​IMG]

    Режимы:
    [​IMG]

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

    Настройки конфига
    Пермы
    Код:
    # Permission
    # mcnw.global - право писать в глобальный чат
    # mcnw.global.no_item - право писать в глобальный чат без платы (бесполезно без mcnw.global )
    # mcnw.world - право писать в мировой чат
    # mcnw.world.no_item - право писать в мировой чат без платы (бесполезно без mcnw. world )
    # mcnw.spy - право на прослушку всего чата
    # mcnw.pmspy - запрещёный перм, я не отвечаю за последствия
    # mcnw.mute.help - хелп по муту
    # mcnw.mute.mute - мутим
    # mcnw.mute.unmute - снимаем мут (не реализовано)
    
    ЛС:
    С личными переписками пришлось повозится, и до сих пор возможны ошибки, если у двух игроков ник начинается одинаково, а длина разная (Н-р: ben и benten), в таких случаях поведение непредсказуемо.Не принимает ники начинающиеся с цифр.
    Для отправки лс наберите в чате @Dark я тебе пишу и сообщение уйдёт игроку, чей ник ближе всего к этому (н-р мой)
    Случайные действия
    Для написания подобных действий напишите в чате *действие в чати вы увидите, получилось ли выполнить действие или нет (вероятность настраивается в конфиге).
    Если вы хотите бросить кубик, то введите *12 или любое число, в чате вы увидите сколько выпало на кубике (примечание: в случае если число меньше minroll, то будет считаться что введено randrolldef )

    Молчанка:
    [​IMG]
    Что-то я намудрил со сложностью ввода команды мута...
    %<nick> <chanel> <time in sec> <reason>
    %Имя Канал Время Причина
    [​IMG]
    %see <nick> для просмотра текущих молчанок игрока
    [​IMG]

    TO DO
    • молчанка на отдельные каналы, на всё, ограниченна по времени, без ограничения по времени, отдельные таймеры молчанки на разные каналы.
    • список молчащих, оставшиеся время молчанки
    • формат сообщений
    • графические смайлы не совместимые с русификатором
    • русификатор совместимый со смайлами
    • место для вашей идеи
    • Broadcast
    • FakeMessage
    Надеюсь на отчёты тестеровщиков

    [​IMG]
     
    Последнее редактирование: 18 окт 2013
    ufes нравится это.
  12. DmitriyMX

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

    Баллы:
    153
    Skype:
    dmn550
    исправь опечатку))

    А вообще напиши в личку контактные данные, чтобы можно было связаться с тобой))
     
    dark32 нравится это.
  13. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Исправил... А так бы и реализовал список этих мочащих.
     
    DmitriyMX нравится это.
  14. VaNnOrus

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

    Баллы:
    123
    Проще убрать этот "динамический поиск адресата" и никаких проблем не будет. В майнкрафте уже есть функция в чате, которая автоматически дописывает ник при нажатии tab, ее вполне достаточно. ИМХО.
    А что тут сложного? Хранить метку времени, после которой мут снимается и сравнивать текущее время когда это требуется. При перезагрузке грузить хешмап игрок-время.
     
  15. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    1. Таб пока не работает для меня, API ещё не смотрел. Это не динамический поиск адресата, а получение адресата по его имени:
    Код:
    Bukkit.getServer().getPlayer(nickPlayer)
    И ошибка как таковая не была подтверждена, а на существует лишь предположительно
    Смотрим дальше. Реализация поиска игрока по нику: https://github.com/Bukkit/CraftBukk.../org/bukkit/craftbukkit/CraftServer.java#L322
    Код:
     public Player getPlayer(final String name) {
            Validate.notNull(name, "Name cannot be null");
    
            Player[] players = getOnlinePlayers();
    
            Player found = null;
            String lowerName = name.toLowerCase();
            int delta = Integer.MAX_VALUE;
            for (Player player : players) {
                if (player.getName().toLowerCase().startsWith(lowerName)) {
                    int curDelta = player.getName().length() - lowerName.length();
                    if (curDelta < delta) {
                        found = player;
                        delta = curDelta;
                    }
                    if (curDelta == 0) break;
                }
            }
            return found;
        }
    if (player.getName().toLowerCase().startsWith(lowerName)) { - если имя проверяемого игрока начинается со строки запроса.
    Дальше проверяется ник наименее отклоняющийся от текущего запроса. Т.е. по запросу dark найдётся dark32, а darklord, но возможно непредвиденное поведение если есть dark33 (т.е. ник начинающийся так же и такой же длины).
    Из всего этого можно сказать, что конфликт возможен если у вас на сервере много игроков с никами начинающихся с одного и того же слова и при этом ники одинаковой длины, а отправка ЛС идёт по началу имени (тому самому слову). Был бы рад если эту ошибку проверили на сервере.

    В принципе теперь мне не ничто не мешает сделать поиск игрока по нику не обязательно с начала. Т.е. по запросу 32 будет находится dark32, но тогда коллизии точно будут.

    Есть конечно точный поиск: getPlayerExact, но тогда по запросу dark будет находится только dark, но не dark32, не darklord находится не будут. Если это востребаванно, могу сделать опционально.
    2. ХешМапы зло, и это уже не раз обсуждалось на соответствующих форумах. Проблемы уже нет.
    хм.. вроде прикрутил мягкий поиск, спасибо за идею VaNnOrus. Добавил листание по табу для ЛС. Нужно будет протестить. Пока в релиз не лью, нужны тесты. НО всё же можете скачать: http://goo.gl/4nPdq6
     
    Последнее редактирование: 18 окт 2013
  16. VaNnOrus

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

    Баллы:
    123
    Эм. Разве это не клиентская фича? Т.е. листание по табу? Если нет, видимо это чат менеджер, не знал. :)
    Но в любом случае листание + отправка точно тому адресату, что указан, удачнее, чем поиск по части ника, ИМХО.
     
  17. Arnidan

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

    Баллы:
    68
    @dark32 планируется ли конфиг, где можно будет отключать/включать функции, менять символы для каналов и изменение префиксов каналов?
     
  18. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    1. Это не клиентская фича... это не чат менеджер, это API.
    2. Нет отправки по части нику, есть поиск игрока по нику, его реалзацию уже показывал ссылкой на сам буккит. Точно так же нет отпрвки по полному нику, есть, опять же, поиск игрока по нику. Сообщение отправляется игроку, а не нику. Игрок ищется с наименьшей длиной, содержащий запрос.

    1. Какие именно функции отключать/включать?
    2. На данном этапе смена символа канала не реализована в конфиге, но вынесена в отдельный файл ChatMode.class, теоритически можно без вреда изменить значения через ClassTranslitor или как там програма для редактирования строк. Сама функция смены через конфиг планируется, но имеет не основой приоритет.
    3. Изменение префексов (я так понял формата канала) уже реализовано, смотрите конфиг.
     
  19. Arnidan

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

    Баллы:
    68
    На данный момент mute и spy (под опом не хочется видеть личные сообщения и локальный чат всех)
    Раньше редактировал через исходники, но через конфиг приятнее и удобнее)
     
  20. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    1. mute же по перму идёт, или функция выключения чата для себя нужна
    2. spy... она же тоже по перму... думал я уже о выключение на время этого для себя. Надо будет занаться этим.
    3. конфиг всегда удобней)) будет ,но не сейчас.
     

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