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

Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

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

  1. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Удалил все плагины, поставил чистосгенерированный РеАкшнс, и в нём единственный файл с конфигами exec1 и msg1. Результат тотже ))
     
  2. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Покажите код активаторов, которые сейчас вы тестируете. Сейчас разберёмся.
     
  3. Andrey023

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

    Баллы:
    76
    Имя в Minecraft:
    Hugodude
    Топ плагин, полностью настроил лабиринт с помощью его.
    Нажимные плиты, броня на игрока, проверка Gm1/0 проверка, выдача приза, все через ReActions.
    Всем рекомендую, топ!
     
  4. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Я был устал и ушел спать... Но сейчас я встал, я бодр и готов продолжить этот бой с нещадным активатором!

    Ну вот это я собственно и тестировал. Тут ошибки быть не может!
    [upd]
    ...Работает при событии - игрок пишет в чат,
    Работает при команде broadcast с консоли...
    А при МЕСЕДЖЕ РеАкшнс, или сообщении из других плагинов - нет. Даже если взять действие - 'CMD_CONSOLE=Broadcast 123', то всеравно несработает. Хотя фактически это должно быть то же что и просто написать broadcast из консоли
    Значит проблема где-то здесь. Возможно плагины отсылают сообщения в каком-то закодированом виде, которого неможет отловить ни один из типов маски MESSAGE активатора ??
     
    Последнее редактирование: 20 апр 2017
  5. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Сообщения плагинов отлавливаются на уровне пакетов, через ProtocolLib. Версии сервера / ProtocolLib какие?
     
  6. Korvinius

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

    Баллы:
    88
    Сегодня созрел к переходу на последнюю версию плагина с 0.9.10 и вот какой результат получил в консоль:
    Код:
    [09:13:56] [Server thread/ERROR]: Could not pass event PlayerInteractEntityEvent to ReActions v0.9.11                                                                                          
    org.bukkit.event.EventException                                                                                                                                                                
    <------>at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
    <------>at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                                 
    <------>at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
    <------>at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
    <------>at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1315) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                 
    <------>at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                         
    <------>at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                         
    <------>at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                     
    <------>at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]                                                                                               
    <------>at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]                                                                                                              
    <------>at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                                   
    <------>at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
    <------>at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
    <------>at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                    
    <------>at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [middle.jar:git-Spigot-db6de12-3f3c65f]                                                                  
    <------>at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]                                                                                                                                 
    Caused by: java.lang.NoSuchMethodError: org.bukkit.event.player.PlayerInteractEntityEvent.getHand()Lorg/bukkit/inventory/EquipmentSlot;                                                        
    <------>at me.fromgate.reactions.RAListener.onPlayerClickMob(RAListener.java:183) ~[?:?]                                                                                                       
    <------>at sun.reflect.GeneratedMethodAccessor173.invoke(Unknown Source) ~[?:?]                                                                                                                
    <------>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]                                                                                
    <------>at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]                                                                                                                     
    <------>at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[middle.jar:git-Spigot-db6de12-3f3c65f]                                                               
    <------>... 15 more 

    майн 1.8.8, ProtocolLib v4.1.0
    чуть позже попробую обновить ProtocolLib
     
  7. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    А версия PL никакая )) Я без неё тестировал... Как перетестирую, отпишусь.
    Интересует такая штука, о плейсхолдере %random%:
    Если я укажу %random:1,1,1,1,1,2,2,2,3,4% то шанс получить число 1=50%, 2=30%, 3=10% и 4=10%, правильно ?
    А будет ли результат более случайным, если указать числа в хаотическом порядке, например [2,1,1,3,1,4,1,1,2,2] ?

    И в какой момент определяется, какое этот плейсхолдер должен выдать число? В момент загрузки активатора в ОЗУ, или в момент применения активатора с этим плейсхолдером к игроку ?

    Или он динамический? После загрузки, безперерывно бегает по циклу указанных в нём чисел и выбивает одно в момент активации ?
    1730 активаторов, общий вес которых почти 3Мб это нормально ?
     
  8. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Правильно.
    Не важно, какой порядок. Результат, в любом случае будет случайным.

    В момент применения игроком активатора с этим плейсхолдером.

    Генератор случайных чисел выбирает не одно из ваших чисел, а порядковый номер расположения одного из ваших чисел.
     
  9. Astrogen

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

    Баллы:
    76
    Имя в Minecraft:
    Astrogen
    Добрый день! Давненько не писал сюда, ибо функционала хватало, но вот захотелось странного, в связи с этим вопрос и предложение: сервак у меня настроен на жесткое выживание, со всеми приблудами - температура, усталость, жажда. Хочется сделать так, чтобы активировать ГУЙ печи можно было только огнивом или ведром лавы (типа, если есть, чем разжечь - то разжигай, а нет - так нет. Активатора, проверяющего клик по блоку в данном благословенном плагине нет. Тут собираются люди, которые делают сложные вещи, подскажите, плиз, есть ли плагин, реализующий взаимоотношения игрока и блоков по клику ПКМ? Версия 188. Спасибо.
     
  10. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    А если чисто с точки зрения вероятности ??
     
  11. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Вероятность будет такой, какую вы и сами создали (%random:1,1,1,1,1,2,2,2,3,4% =>1=50%, 2=30%, 3=10% и 4=10%).
    Генератор случайных чисел имеет равномерную вероятность для диапозона чисел.
     
  12. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer

    Спасибо. Вы уже много чем помогли.

    Но меня вот что ещё сейчас интересует: я пытаюсь переложить функцию локализации чата (как предложил человек несколькими постами выше) на реАкшнс (вместо ЕссентиалсЧат)

    Для усиленого глобального: #Должен стоять первым, иначе не работает.
    source: CHAT_INPUT
    type: START
    mask: '$$'
    actions:
    - 'CANCEL_EVENT=true'
    - 'BROADCAST=%player_name% : %message%'

    Для глобального:
    source: CHAT_INPUT
    type: START
    mask: '$'
    actions:
    - 'CANCEL_EVENT=true'
    - 'MESSAGE=player:{loc:%player_loc% radius:99999} %player_name% : %message%'

    Для локального: #Должен стоять последним.
    source: CHAT_INPUT
    type: START
    mask: ''
    actions:
    - 'CANCEL_EVENT=true'
    - 'MESSAGE=player:{loc:%player_loc% radius:50} %player_name% : %message%'

    ...и есть 2 проблемы:

    1. Из за CANCEL_EVENT сообщения не выводятся в лог. Выводится лишь пустая строка с ником.
    Как это исправить? Может быть знаите плагин, у которого есть команда вывода заметки в лог? Тогда можна было бы дополнить формат действием в роде CMD_CONSOLE=Log %message%...

    2. С этими активаторами плейсхолдер %message% выводит сообщение вместе с первым символом-маской. Можна ли его удалять и выводить сообщения без маски в начале??
    И сразу чувствуешь себя частью чего-то большего. Одним из тех, кто делает эти сложные вещи...
     
  13. Korvinius

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

    Баллы:
    88
    Не знаю есть ли такой плагин, но написать мини-плагинчик, реализующий эту возможность довольно легко.
     
  14. Astrogen

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

    Баллы:
    76
    Имя в Minecraft:
    Astrogen
    Привет! Не возьмешься?
    Это же отлично!
     
  15. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    ЕРРОР: Нельзя использовать опцию hide в действии MESSAGE ( https://pastebin.com/AgqVFeLy )
    Исправьте пожалуйсто, без неё плохо!

    Есть идея с помощью пермишенов (в роли памяти для последующих флагов) и задержек между активаторами сделать так называемые лимитируемые чарджи: Какое-то действие, которое ты можеш использовать к примеру 3 раза подряд (3 заряда). Или 2 сразу, 1 потом, как угодно... А затем ждать пока каждый из зарядов восполнится. Откат каждого заряда должен ити независимо друг от друга, с момента его использования... Ноль зарядов=действие блокируется пока один не откатится...

    Долго уже ломаю над этим голову, но пока не удалось написать правильную конфигурацию. Хотя я почти уверен что такая точно возможна.

    Есть идеи ??
     
    Последнее редактирование: 22 апр 2017
  16. Korvinius

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

    Баллы:
    88
    элементарно, использовать вложенные EXEC-активаторы, у каждого своя задержка.
     
  17. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Задать количество зарядов через переменную и, как указал товарищ выше, через EXEC активаторы восполнять заряды
     
  18. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Не знаю, нужно ли вам ещё, но пускай будет тут
    /harduse reload - перезагрузить конфиг. Условие OP или право harduse.reload
    Создание "ограничений" в конфиге описано.
    Обход ограничений - режим наблюдателя, креатив, OP или право harduse.bypass.all; для отдельного блока - harduse.bypass.блок
     

    Вложения:

    • HardUse.zip
      Размер файла:
      3 КБ
      Просмотров:
      9
  19. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Через переменную наверное не получится, т.к. на эту память(пермишены) должны ориентироватся флаги из других плагинов. Тоесть сам пермишен должен быть этой переменной!
    ...Но сейчас буду пробывать, спс.
    ВОЗМОЖНО ЛИ ВПРИНЦИПЕ...
    создать фильтр, который мог бы отлавливать какой-то знак в начале/середине/конце текста, удалять его, и отправлять тот же текст но без этого знака??

    я пытаюсь переложить функцию локализации чата (как предложил человек несколькими постами выше) на реАкшнс (вместо ЕссентиалсЧат)

    Для усиленого глобального: #Должен стоять первым, иначе не работает.
    source: CHAT_INPUT
    type: START
    mask: '$$'
    actions:
    - 'CANCEL_EVENT=true'
    - 'BROADCAST=%player_name% : %message%'

    Для глобального:
    source: CHAT_INPUT
    type: START
    mask: '$'
    actions:
    - 'CANCEL_EVENT=true'
    - 'MESSAGE=player:{loc:%player_loc% radius:99999} %player_name% : %message%'

    Для локального: #Должен стоять последним.
    source: CHAT_INPUT
    type: START
    mask: ''
    actions:
    - 'CANCEL_EVENT=true'
    - 'MESSAGE=player:{loc:%player_loc% radius:50} %player_name% : %message%'

    ...и есть 2 проблемы:

    1. Из за CANCEL_EVENT сообщения не выводятся в лог. Выводится лишь пустая строка с ником.
    Как это исправить? Может быть знаите плагин, у которого есть команда вывода заметки в лог? Тогда можна было бы дополнить формат действием в роде CMD_CONSOLE=Log %message%...

    2. С этими активаторами плейсхолдер %message% выводит сообщение вместе с первым символом-маской. Можна ли его удалять и выводить сообщения без маски в начале??
     
  20. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Отлавливать возможно, но это будет немного не красиво. Но за неимением ничего другого, можно и это попробовать. Суть в следующем:
    - весь текст сообщения отправляем в созданную вами таблицу MySQL.
    - вытаскиваем этот текст из таблицы, предварительно отфильтровав его. В MySQL есть много способов фильтрации всего, что вам необходимо.

    Я только, что попробовал, есть проще вариант:
    Код:
    SELECT SUBSTRING('$$test',3)
    Здесь убираются два первых символа из текста! :)
    Действие будет выглядеть следующим образом:
    Код:
    SQL_SELECT=query:{SELECT SUBSTRING("%message%",3)} variable:msg player:%player%
    Этого очень не хватало мне для отладки активаторов. Если мне нужно было записать в лог, я просто отправлял запись с помощью команды say. Все, конечно, видели эту запись, что не очень было хорошо. Тогда я модифицировал ReActions, создав ещё одно действие под названием LOG, которое записывает в лог всё, что мне нужно.
    Я, когда разберусь с ПулРеквестом, то попробую добавить свои изменения в плагин. Если, конечно автор не будет против.
     
    Последнее редактирование: 23 апр 2017

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