Плагин [CHAT] rpChat2 2.0.7w - Глобальный чат, локальный чат, счётчик получателей, рации [1.6.2+]

  • Автор темы Автор темы dark32
  • Дата начала Дата начала

Плагин вообще нужен?


  • Всего проголосовало
    253
dark32, да собственно твой плагин по описанию показался мне более приемлемым, но вот с конфликтами нужно что то решить, если есеншел-чат потереть надеюсь получится настроить.

Зашел на хостинг, далее консоль и ребут. Я предполагал если удалить эти строки, они просто восстановятся по дефолту.
 
1. Конфиги сложные, не спорю, слишком перегруженные.
Говори, что нужно настроить, какие каналы, постараюсь настроить.
2. Не восстановит, как то руки не доходят это сделать.
 
Было бы неплохо ввести отключение ненужных функций в конфиг. Например, отключение /mute, /deaf и, соответственно, storage.yml, куда записываются все игроки и их "настройки молчанки".
А также пригодилось бы отключение "listenerMessage", т.е. чтобы показывалось только "noListenerMessage" когда никто не слышит.
Не работает /mute, т.е. тот, кто в муте, может писать сообщения и его слышат все.
 
Последнее редактирование:
1. Подумаю как проще, в плане настройки, реализовать

2. Оу... ок... проерю.
 
1. Подумаю как проще, в плане настройки, реализовать

2. Оу... ок... проерю.
Понял в чём причина, реагирует на регистр. Если игрок Player и написать "/mute player a 60 Тест", то ничего не будет, если же "/mute Player a 60 Тест", то всё отлично.
 
@dark32 , исправьте, пожалуйста, регистрозависимость.

Еще хорошо бы сделать указание времени в формате минут, часов, дней, кроме секунд, чтобы не писать для мута на сутки 86400 секунд.

Добавить поддержку кулдауна в каналах. Например, чтоб кричать можно было раз в минуту, скажем. Есть отличный готовый класс кулдауна - EasyCooldown. Настройки кулдауна, естественно, вынести в конфигурацию канала и возможность вообще кулдаун для данного канала выключить, чтоб не ставить 0 и не создавать лишнюю хешмапу.
Совсем уж чудо будет, если добавить отдельно настройки кулдауна для групп. Например, чтоб кулдаун ставился меньше для группы випов, а если не указан кулдаун для данной группы пользователя, то ставился бы дефолтный для канала.

Добавить "правильные окончания" для всего, что может их использовать. Например "Вы не можете писать еще 21 секунду", а не "секунд". Есть функция для php:
PHP:
/*
*  Возвращает корректное окончание слов
*/
function getCorrectEnding($num, $one="Секунда", $some="Секунды", $many="Секунд", $hide_num=0){
    $val = $num % 100;
 
if ($val > 10 && $val < 20) $str = $many;
else {
    $val = $num % 10;
    if ($val == 1) $str = $one;
    elseif ($val > 1 && $val < 5) $str = $some;
    else $str = $many;
}

    if($hide_num == 1){
        return $str;
    }else{
        return $num .' '. $str;
    }
}
Думаю переписать ее под java не проблема. Все используемые окончания не плохо было бы в локализацию вывести.

Если возможно добавить поддержку "автозаполнения и листания" ников по табу в командах типа mute.
 
1. Посмотрю что можно сделать
2. Уже думал. Кину в список планов
3. Уже думал. Кину в список планов
4. думаю как проще реализовать настройку.

Сколько планов теперь... но сперва релиз того, что уже сделано (тиги кланов вроде), потом буду колдунсвовать.
 
1. Посмотрю что можно сделать
2. Уже думал. Кину в список планов
3. Уже думал. Кину в список планов
4. думаю как проще реализовать настройку.

Сколько планов теперь... но сперва релиз того, что уже сделано (тиги кланов вроде), потом буду колдунсвовать.
Совсем забыл, еще исправьте, пожалуйста, учет "слушателей" для "шпионов". В смысле, чтоб игрок с правом mcnw.spy не учитывался как тот, кто услышал игрока, если он не попадает в радиус, на котором действует канал.

К слову, я мог бы помочь написать некоторые вещи.
 
...
К слову, я мог бы помочь написать некоторые вещи.

Отдельные вещи... есть ода вещь, которую можно написать - очередной парсер строк.
Есть строка следующего вида: "Некоторый текст $some_variable ещё текст, очередной текст, проверка оконча$(ние|ния|ний|$variable) ещё текст"
Необходимо выделить "$(ний|ния|ний|$variable)", распарсить на 4 значения (ние,ния,ний,$variable), заменить строковое значение $variable на число (если оно число, иначе заменить на константу), передать в метод все 4 значения и результатом метода заменить выделенную строку. Метод можно сделать пустышкой, важен парсер.

Сам то напишу, но будет куча регулярок... а это медленно...
 
Отдельные вещи... есть ода вещь, которую можно написать - очередной парсер строк.
Есть строка следующего вида: "Некоторый текст $some_variable ещё текст, очередной текст, проверка оконча$(ние|ния|ний|$variable) ещё текст"
Необходимо выделить "$(ний|ния|ний|$variable)", распарсить на 4 значения (ние,ния,ний,$variable), заменить строковое значение $variable на число (если оно число, иначе заменить на константу), передать в метод все 4 значения и результатом метода заменить выделенную строку. Метод можно сделать пустышкой, важен парсер.

Сам то напишу, но будет куча регулярок... а это медленно...
Показали бы парсер который есть сейчас. Вообще я имел в виду, что могу помочь кулдаун прикрутить, функцию проверки окончания переписать на java, и что-то в этом роде 🙂 Парсер сложновато мне будет написать, никогда не писал ничего подобного 🙂
 
Тогда может JS и JQuery будет проще? Есть одна идейка с конфинами, но с моими знаниями JS, JQuery это займёт в 3-4 раза больше номинального времени.

Сейчас парсера нет, есть только регулярка, что-то вроде этого \$\((.+?)\|(.+?)\|(.+?)\|([\d\w+?])\) хотя не назову ни одного окончания состоящего не только из букв
Кулдаун это не слишком сложно, по сути же это автомут и не более. Делаем штамп времени от последнего сообщения, записываем в хеш, а после, при отправке следующего сообщения - сверяем время со штампом.
Окончания... вот для них то парсер и нужен. Первая часть - хранения информации.
По мне, так парсер - это просто, особенно с регулярками (если это не HTML).

Я не люблю пускать людей в свой код, мне за него всегда стыдно, особенно за грамматику и комменты... Ноиз постоянно из-за этого ворчит. По такому поводу лучше овить меня в Скайпе, в ВК или ещё где.

Завтре будет предрелизный прогон и, скорее всего, новая версия. Будут игнор и префиксы, плюс пара мелких фиксов. Окончания и более крупне введения будут позже.
 
Неплохо бы было обозначать канал цветом не только текста, но и двоеточия после ника. + дополнительные права на писание определенным цветом в любом канале. Красный пригодился бы модераторам для привлечения внимания игроков, а право писать золотым (оранжевым) можно было бы выдавать випам.

Кстати, возможность писать в чат за определенную вещь - практически панацея от флуда.
 
Кулдаун это не слишком сложно, по сути же это автомут и не более.
Я ж давал ссылку на готовый класс, он вообще шикарен, по-моему 🙂 Ну и главный плюс - не надо изобретать ничего, просто 5 строчек и кулдаун работает. Универсальная вещь, я вообще во всех плагинах своих буду использовать. Правда совсем мой у меня только 1 плагин 😁
Неплохо бы было обозначать канал цветом не только текста, но и двоеточия после ника. + дополнительные права на писание определенным цветом в любом канале. Красный пригодился бы модераторам для привлечения внимания игроков, а право писать золотым (оранжевым) можно было бы выдавать випам.

Кстати, возможность писать в чат за определенную вещь - практически панацея от флуда.
Кстати, да. Насчет цветов мы тоже подумали уже, было бы не плохо с проверкой прав парсить сообщение, если есть право писать цветом в принципе и писать конкретно этим цветом - вставлять цвета.

Цвет двоеточия итак можно сменить, вроде.

Ах да, еще по-моему лучше не окончания заменять, а вставлять целые слова, как в функции, которую я показывал. А слова брать из конфига конкретного сообщения.
Например, пишется вот мут снимется через сколько-то секунд - из настроек кроме самого текста сообщения брать 3 слова: секунда, секунды, секунд. Ну, вроде, понятна мысль 🙂
@dark32 , нашли баг, видимо, в функции форматирования сообщения - почти всегда символ "*" вырезается из сообщения.
 
Последнее редактирование:
Это не СиплКлан, это какое-то издевательство...
API нашёл, настроил как в инструкции и... бац тебе - не работает, устарело морально на 2-3 версии, нет вообще никакого API для него походу...
Не будет префиксов в текущем релизе - они не дают никакого приемлемого API для того чтобы получить эти самые префиксы. Буду копать без API, но это на долго
Я ж давал ссылку на готовый класс, он вообще шикарен, по-моему 🙂 Ну и главный плюс - не надо изобретать ничего, просто 5 строчек и кулдаун работает. Универсальная вещь, я вообще во всех плагинах своих буду использовать. Правда совсем мой у меня только 1 плагин 😁

Кстати, да. Насчет цветов мы тоже подумали уже, было бы не плохо с проверкой прав парсить сообщение, если есть право писать цветом в принципе и писать конкретно этим цветом - вставлять цвета.

Цвет двоеточия итак можно сменить, вроде.

Ах да, еще по-моему лучше не окончания заменять, а вставлять целые слова, как в функции, которую я показывал. А слова брать из конфига конкретного сообщения.
Например, пишется вот мут снимется через сколько-то секунд - из настроек кроме самого текста сообщения брать 3 слова: секунда, секунды, секунд. Ну, вроде, понятна мысль 🙂
@dark32 , нашли баг, видимо, в функции форматирования сообщения - почти всегда символ "*" вырезается из сообщения.
  1. ну да... когда моя реализация предполагает порядка 5-20 строк на всё, а тут целых два класса на это... но это уже технические детали, которые разрешатся в ходе реализации.
    Думаю над второй частью - разные кулдауны разным группам
  2. цвета в сообщение сейчас поддерживаются только в BROADCAST канале. Думаю сделаю поддержку по пермам и в других каналах.
  3. Есть такая вещь как суффикс... полезная вещь, если в настройках не стоит установка цвета канала и стоит выводить суффикс, то цвет будет зависть от суффикса.
  4. вставлять окончания или слова - это уже детали конфигурации, проблема всё же в хранение. Не создавать же для каждого слова по функции, там же не только в секундах могут вариации быть. И даже хранение каждого варианта слова - опять не вариант, слишком много неопределённости.
    Мой вариант хранения в конструкциях типа $(one|two|five|$variable) мне кажется более логичным, хотя это может быть не так.
  5. Должна была быть фича с рандомроллом, но фича не доделана, уберу на время.

    Прогон базовово функционала прошёл. Сейчас буду оформлять

Обновление:
  • Добавлена команда /ignore. Теперь вы можете игнорировать неугодных вам игроков (шпионы не игнорируют)
    Код:
    #    mcnw.ignore.help                                - право на справку по игнору
    #    mcnw.ignore.see                                  - право на просмотр игноров
    #    mcnw.ignore.all                                  - право на просмотр всех игногров
    #    mcnw.ignore.see.self                          - право на просмотр своих игноров (не имеет смысла при наличии "mcnw.ignore.see")
    #    mcnw.ignore.ignore                            - право на игнор
    #    mcnw.ignore.unignore                        - право на снятие игнора
    #    mcnw.ignore.non                                - право на не игнорируемость
  • /mute , /deaf, /ignore теперь не регистрозависимы по нику
  • Шпионы не учитываются в слушателях, если они не должны слышать это сообщение
  • Если сообщение "listenerMessage" или"noListenerMessage" не введено, оно не будет выводится
  • Мелкие фиксы
Скачать

Планы:
  • Автозаплнение по табу для команд
  • Вариация окончаний в зависимости он числа
  • Поддержка цвета в сообщениях, при наличие прав на это
  • Охлаждение, кулдаун сообщений
  • Формат времени для мута вида: 1d1h1m1s
  • Снова попытаюсь прикрутить клантеги
  • /kiss
 
Последнее редактирование:
ну да... когда моя реализация предполагает порядка 5-20 строк на всё, а тут целых два класса на это... но это уже технические детали, которые разрешатся в ходе реализации.
Там ведь один класс, к тому же отлично работает с возможностью создания независимых кулдаунов простым изменением названия кулдауна 🙂

вставлять окончания или слова - это уже детали конфигурации, проблема всё же в хранение. Не создавать же для каждого слова по функции, там же не только в секундах могут вариации быть. И даже хранение каждого варианта слова - опять не вариант, слишком много неопределённости.
Мой вариант хранения в конструкциях типа $(one|two|five|$variable) мне кажется более логичным, хотя это может быть не так.
Я ж про хранение и писал. В файле локали писать кроме текста сообщения 3 варианта для окончаний. "$(one|two|five|$variable)" one, two и five откуда-то ж должны браться)
 
Справка по глухоте /deaf (Текст полностью настраивается в конфигурационном файле)

base4.PNG


Позволяет отказаться от слушания отдельного канала или всех сразу.

Хм, а почему у глухоты в отличие от молчанки нет параметра "<time>"?
 
В обновлении при написании в чат со знаком "!" используя в настройках канала "prefix: "!"" ошибка, чего не было до обновления:
Could not pass event AsyncPlayerChatEvent to RPChat v1.0.5
org.bukkit.event.EventException

at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:437)

at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)

at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)

at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)

at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:461)

at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1266)

at net.minecraft.network.NetServerHandler.func_72481_a(NetServerHandler.java:1194)

at net.minecraft.network.packet.Packet3Chat.func_73279_a(Packet3Chat.java:68)

at net.minecraft.network.TcpConnection.func_74447_i(TcpConnection.java:350)

at net.minecraft.network.TcpConnection.func_74450_c(TcpConnection.java:556)

at net.minecraft.network.TcpReaderThread.run(TcpReaderThread.java:23)

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer cannot be cast to java.lang.Comparable

at java.util.TreeMap.compare(Unknown Source)

at java.util.TreeMap.put(Unknown Source)

at java.util.TreeSet.add(Unknown Source)

at ru.dark32.chat.chanels.BaseChanel.getRecipients(BaseChanel.java:230)

at ru.dark32.chat.ChatListener.onPlayerChat(ChatListener.java:72)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:435)

... 10 more
Ах да, в консоли после каждого сообщения пишет:
2014-01-06 19:44:49 [INFO] Meowt isInChanel true isn'tSelf false isHear true hasDeaf true hasn'tIgnore true all false
2014-01-06 19:44:49 [INFO] false
 
О боже... я собрал билд с отладочными сообщениями...
А вот ТрееСет я же менял... сейчас пере соберу.
Пересобрал, перезалил. Нужно быть повнимательней, чёрт побери, нельзя такое повторять, зарелизить отладочную сборку...

Meowt isInChanel true isn'tSelf false isHear true hasDeaf true hasn'tIgnore true all false
В канале, сам, слышит, слушает, не игнорирует, в целом - нет
 
Все-таки очень понравился ваш плагин, я хотел бы материально поддержать разработку, как я могу это сделать?

P.S. Извините, что в теме, просто переписка и стена у вас закрыта.
 
Неправильная работа listenerMessage и noLlistenerMessage.
Если вписать в конфиг
listenerMessage: ""
noListenerMessage: "&7Вас не услышали"​
То ни то, ни другое сообщение не будет выводится.
Если же написать
listenerMessage: "Ня"
noListenerMessage: "&7Вас не услышали"​
То будет выводится только noListenerMessage, т.е. как должно быть при пустом сообщении в listenerMessage. Исправьте. И будет удобнее вывести в конфиг включение/выключение listenerMessage и noListenerMessage.
 
Назад
Верх