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

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

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

  1. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Но этот работает как и в регионе, как и в локации отдельно:
    ra run activator:Activator-Exec-7-Test player:{loc:{loc:Activator-Exec-7-Test radius:3} region:rg-test}

    И, если нельзя указать пересечение локаций, то как это сделать?
    Как насчёт действия ITEM_INVENTORY_DROP? Используя его вместе с активатором выхода игрока из игры, можно было бы сделать улучшенную копию плагина на выброс вещей при выходе из PvP. При чём, куда более удобную и масштабируемую :)
     
  2. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Lyosha12
    Не совсем поняли друг друга. Текущий селектор работает не как фильтр, а просто собирает единый список из всех игроков. Т.е. если указать регион и пермишен - то это будут игроки в регионе (у которых может и не быть пермишена) и игроки у которых есть пермишен (но которые при этом находятся вне этого региона).
    Итак, фиксируем версию.

    v0.9.6
    • Добавлен активатор MOB_DAMAGE
    • Теперь все сообщения (включая сообщения от действия MESSAGE) ограничены 55 символами (в связи с выявлением бага в майнкрафте связанного с различием длины строк с использованием unicode-шрифта). Это значение меняется в файле config.yml
    • Селектор игроков теперь поддерживает дополнительные параметры: loc, radius.
    • Действие MESSAGE теперь поддерживает дополнительный параметр "hide" - для того чтобы отображать "надоедливые", повторяющиеся сообщения реже.
    • Активаторы PVP_DEATH и PVP_RESPAWN модифицированы и переименованы в PLAYER_DEATH и PLAYER_RESPAWN. Новый активатор поддерживает различные причины смерти: PVE (игрок убит мобом), PVP (игрок убит другим игроком) и OTHER (другие причины).
    • Новая команда /exec <ИмяАктиватора> [player:<СписокИгроков>] [delay:<Время>]. Эта команда - это краткая альтернатива для команды /react run.
    • Оптимизация кода, исправление выявленных ошибок.
    Просьба качать со спигота (и после закачки ставить "звездочки") -- может так о плагине узнает чуть больше народу.

    https://www.spigotmc.org/resources/reactions.8754/
     
  3. FUZIK

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

    Баллы:
    76
    Имя в Minecraft:
    FUZIK
    Уникальный, идейный, отличный плагин, а самое главное от реально крутого чювака! Всегда буду пользоваться твоими шедеврами! :good:
     
  4. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Про ANY не забыли? :D
    Тогда как можно написать ситуацию, где что-то проверяет пересечение двух радиусов от сущностей?
    Почему предмет не преобразовывается в строку?
    /ra add ITEM_CLICK Activator-ITEM_CLICK-2 %PLAYER_ITEM_HAND%
    Не работает действие
    - ITEM_REMOVE_INVENTORY=type:267 amount:3
    Хотя выдача с теми же аргументами работает нормально... Если это сделано исключительно по тому, что ID больше не поддерживаются в высших версиях, то организация этой поддержки может поставить ReActions на одну ступень с самыми популярными и нужными плагинами. Ведь, все привыкли к ID... :D

    И ничего про этот плейсхолдер в документации я не нашёл. Или плохо искал?
    Конечно, я не прошу придумывать ID и для новых предметов. Такой аналог был бы очень хорош в плане простоты использования.
    Интересно... Когда я указываю ссылку, иногда, чтобы перейти по ней, нужно нажать на строку ниже, чем сама ссылка. С чем это связано?
    Ничего похожего на это значение в конфиге нету...
    Код:
    general:
      language: english
      check-updates: true
    reactions:
      save-empty-actions-and-flags-sections: false
      show-messages-for-actions: tp,grpadd,grprmv,townset,townkick,itemrmv,itemgive,moneypay,moneygive
      center-player-teleport: true
      region-recheck-delay: 2
      item-hold-recheck-delay: 2
      item-wear-recheck-delay: 2
      horizontal-pushback-action: false
    actions:
      shoot:
        break-block: GLASS,THIN_GLASS,STAINED_GLASS,STAINED_GLASS_PANE,GLOWSTONE,REDSTONE_LAMP_OFF,REDSTONE_LAMP_ON
        penetrable: FENCE,FENCE_GATE,IRON_BARDING,IRON_FENCE,NETHER_FENCE
    MySQL:
      server: localhost
      port: '3306'
      database: ReActions
      username: root
      password: password
      codepage: ''
    

    А как писался плейсхолдер, который генерирует описание предмета в ячейке? И как распределяются ячейки?
    @fromgate, а почему невозможна проверка нескольких строк описания одним регулярным выражением? Ведь, если поставить модификаторы gui, то мы получим соответствие выражению в любом регистре, строке и количестве.

    А такая проверка очень нужна, если требуемое слово находится в разных предметах на разных строках. Да, создать несколько активаторов с отловом каждой строки можно, но зачем тогда соответствующие модификаторы?
     
    Последнее редактирование: 13 июл 2015
  5. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Нет, это ж краткое описание. На сайте с инструкцией указано.

    Надо подумать. Может потом что-то сотворить можно будет.

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

    Нет, это должно работать. Даже в 1.8.7 - там тоже есть ID на уровне баккита. Проверю.

    О! Забыл наверное, там же есть ещё несколько плейсхолдеров про которые надо написать. Вечером напишу.


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

    О! Моя ошибка. Читать значение читаю, а сохранять - не сохраняю. Параметр "reactions.default-chat-line-length" - если его создать, то работать будет. Оставим до следующей версии на моей совести ;)

    %PLAYER_INV:<НомерСлота>%, для брони %PLAYER_INV:helmet%, %PLAYER_INV:chestplate%, %PLAYER_INV:leggings% и %PLAYER_INV:boots%

    Вечером, постараюсь внести в инструкцию.

    Я понял. Подумаю. Мне показалось так проще. Я поэкспериментирую (меня смущает, то как будет распознаваться символ "\n")
     
  6. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Вообще, новые строки распознавались, когда я включил в конструкцию флаг g. Значит, за перенос строк отвечает какой-то параметр из конструкции регулярок. Следовательно, его и надо применять. Или сделать что-то, чтобы "\n" было равнозначно тому параметру. Или вообще убрать "\n", а оставить только подсказку с тем, как именно использовать модификаторы. Я про "(?...)" - сам на сайте проверки regex не видел такого, но это работает и там.
    Может встроить "невидимый активатор" COMMAND? Когда пишется такая команда именно с таким плейсхолдером, она отменяется и выполняется другая: плейсхолдер заносится во временную переменную, а из неё подставляется в команду через действие CMD. Следом за этим, временная переменная удаляется, а пользователь доволен.

    Однако, зачем костыли? Почему нельзя сделать парсинг этого плейсхолдера как и в конфиге? Или тут дело в каких-то глубинных противоречиях или совпадениях переменных?
    Я бы предложил усложнить параметр вызова EXEC'a - селектор игрока - таким способом: добавить параметры "and" и "or". Что-то вроде этого: player:{and:{... ... ...} or:{... ... ...}}. Что означало бы соответствие всем условиям-аргументам в and или "хотя бы одному" в or. Вложенность этих параметров друг в друга тоже желательна. Как по мне, получается просто шедеврально удобно в плане использования.
     
    Последнее редактирование: 13 июл 2015
  7. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Norfolc-xxxx
    Отвечаю на вопрос из соседней темы.

    Нет, это не совсем то. Активатор EXEC - это активатор, который не привязан ни к какому событию.

    А вот для исходной задачи нужен активатор COMMAND - он привязывается к написанию команды в чат.
    Т.е. если исходный активатор переделать так:
    Код:
    COMMAND:
      test1:
        command: test1
        regex: false
        override: true
        actions:
        - CMD_CONSOLE=say hello world 1
        - ACTION_DELAYED=time:10 action:{CMD_CONSOLE say hello world 2}
    То действия будут выполнять тогда когда игрок напишет команду /test1

    А вообще, непонятно почему сообщения выводились дважды. Я сегодня перепроверю, может в последней версии чего-то сломал ;)
     
  8. Norfolc-xxxx

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

    Баллы:
    66
    Имя в Minecraft:
    Norfolc
    Ещё раз поясню то, что мне нужно... Надо чтобы при вводе какой либо (всё равно какой) команды в консоль выполнялся ряд команд из других плагинов в строгой последовательности и с промежутками между ними.
    И да, раз уж на то пошло, я не нашёл никаких упоминаний на вашем сайте-туториале про эти параметры:
    regex: false
    override: true

    За что они отвечают в примере выше?
     
  9. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    За обработку регулярных выражений и за работу команды в регионе, где команды запрещены.
     
  10. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    v0.9.6/1
    Добавил действие WAIT (параметр - time:<Время>). Это действие приостанавливает выполнение действий на указанное время. К примеру, если у вас всего пять действий и третье из них WAIT time:10s то первые действия будут выполнены сразу. А оставшиеся два - через десять секунд.
     
  11. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    @fromgate
    Ну ты чо???
    Как теперь работает ITEM_GIVE?????
    Я НЕ ПОНИМАЮ!!! Приведи примеры!
     
  12. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @BrainRTP
    Описание формата тут: http://reactions.fromgate.ru/item_format.htm
    Пример:
    ITEM_GIVE type:IRON_SWORD name:{&6Ultra Sword} lore:{Это супер-пупер меч!}


    Залил новый девбилд: 0.9.6/2
    Изменение - давно запрашиваемая возможность запоминать ACTION_DELAYED при выходе игрока и выполнять когда игрок вернётся. Аналогично запоминаются действия WAIT.

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

    Т.е. если, задано время ожидание на 1 час, а игрок ушёл, прогулял 45 минут, то действие выполнится через 15 минут после входа.


    В общем прошу, у кого есть возможность погонять, вдруг какие-то ошибки вылезут...
     
  13. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    @fromgate
    Рили? Просто у меня немного припекает) я ввел вот это:
    2015-07-15_00.06.09.png
     
  14. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @BrainRTP
    Версия плагина какая стоит? Сейчас перепроверю у себя.
    @BrainRTP
    Ну вот такой активатор у меня отлично работает:
    Использовать так: /g type:IRON_SWORD name:... и т.д.
    Код:
    COMMAND:
      gggg:
        override: true
        regex: false
        command: g
        actions:
        - 'MESSAGE=&6Give: %args%'
        - 'ITEM_GIVE=%args%'
    
    Вообще на скрине, явно не версия 0.9.6, а какая-то другая.
     
  15. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    А можно извлечь слово из предмета, который описывается через регулярку в активаторе ITEM_CLICK?
     
  16. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Слово? что имеется в виду?

    Ввести нечто вроде сохраненной переменной, - которая хранится в lore.
    Т.е. если к примеру в lore написано:
    "Супер меч, принадлежащий
    пьяному монаху.
    Сила: +5
    Опыт: +10
    Ум: -100"
    То у этого предмета будет три переменных:
    Сила, Опыт и Ум с соответствующими значениями.

    Но это пока только в мыслях.
     
  17. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Допустим, ITEM_CLICK включается для предмета с lore "Test %random:1-5%". Вот это второе слово мне и нужно вывести. Иначе получится, что для каждого значения мне нужно создавать свой активатор.
    Боюсь спросить: а в таймере можно указывать что-то кроме ников, all и null?
    Нельзя :(
    player: region:world_the_end.parkour,world_the_end.dropper
    Предлагаю добавить флаг, который бы проверял, не телепортировался ли игрок в ближайшее %время%. При чём, нужен параметр типа "игнорировать ли телепортации от ReActions".
     
  18. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    @fromgate
    Пожалуйста, скажи, что не так?
    В timers.yml написано вот это:
    mine1:
    time: 0 0/720 * * * ?
    player: all
    paused: 'false'
    activator: mine1

    720 минут = 12 часов... Но он срабатывает несколько раз за час!
    Пожалуйста, приведи наглядный пример с таймером в час и день.

    Вот что происходит (это за 1 секунду!)
    2015-07-16_06.59.44.png
     
  19. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Нужный активатор выполняется для всех игроков отдельно. А сам активатор от каждого игрока выполняет свои действия, которые не зависят друг от друга.
     
  20. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @BrainRTP
    Поскольку там неважно, чтобы игрок был в наличии, то нужно указать player:null
    player:all - это запуск для всех игроков (т.е. сколько игроков на сервере, столько активаторов и запустится).

    По поводу 720 минут - честно говоря, никогда такого не пробовал. Может в самой библиотеки по этому поводу происходят какие-то чудеса. Поэтому я бы порекомендовал вот такой вариант: 0 0 0/12 * * ?. Должно отрабатывать в 0:00 и в 12:00
     

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