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

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

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

  1. OneDisik

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

    Баллы:
    66
    Код:
    REGION_ENTER:
      region_ps1:
        region: world.ps1
        actions:
        - 'MENU_ITEM=size:9 title:{Собрать пшеницу?} slot1:{106} slot2:{type:106} slot3:{106}
          slot4:{type:160 data:5 name:{&aДа} enchantments:ARROW_DAMAGE:1} exec4:Wheat_1 slot5:{type:106}
          slot6:{type:160 data:14 name:{&4Нет} enchantments:ARROW_DAMAGE:1} slot7:{106} slot8:{106} slot9:{106}'
    
    EXEC:
      Wheat_1:
        flags:
        - REGION=world.ps1
        - DELAY_PLAYER=id:wheatcontrol_1 set-time:3h
        actions:
        - 'MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106}
          slot8:{106} slot9:{106} slot10:{type:295} slot11:{type:295} slot12:{type:295} slot13:{type:295} slot14:{type:295} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295}
          slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}'
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:295} slot12:{type:295} slot13:{type:295} slot14:{type:295} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:295} slot13:{type:295} slot14:{type:295} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:295} slot14:{type:295} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:295} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:296} slot15:{type:295} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:296} slot15:{type:296} slot16:{type:295} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:296} slot15:{type:296} slot16:{type:296} slot17:{type:295} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:296} slot15:{type:296} slot16:{type:296} slot17:{type:296} slot18:{type:295} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - WAIT=1s
        - MENU_ITEM=size:27 title:{§9Сбор урожая} slot1:{106} slot2:{106} slot3:{106} slot4:{106} slot5:{106} slot6:{106} slot7:{106} slot8:{106} slot9:{106} slot10:{type:296} slot11:{type:296} slot12:{type:296} slot13:{type:296} slot14:{type:296} slot15:{type:296} slot16:{type:296} slot17:{type:296} slot18:{type:296} slot19:{106} slot20:{106} slot21:{106} slot22:{106} slot23:{106} slot24:{106} slot25:{106} slot26:{106} slot27:{106}
        - 'ITEM_GIVE=type:296 amount:1'
        reactions:
        - CANCEL_EVENT=true
        - MSG=&cСледующий сбор урожая будет доступен через &7&o%delay-left%
     
    Последнее редактирование: 7 май 2017
  2. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Активатор BLOCK_CLICK модифицировал.
    1. Если ввести команду без параметров и смотреть на блок (например, CHEST):

    /react add BLOCK_CLICK bc99
    получим:
    Код:
    BLOCK_CLICK:
      bc99:
        block-type: CHEST
        click-type: ANY
        location: world,-1310.0,63.0,-13.0,0.0,0.0
    
    1. Если ввести команду без параметров и смотреть в небо:

    /react add BLOCK_CLICK bc100
    получим:
    Код:
    BLOCK_CLICK:
      bc100:
        block-type: ''
        click-type: ANY
    
    2. Если ввести команду с параметрами, где параметр типа материала не совпадает с блоком, на который игрок смотрит (ввели CHEST, а смотрим на DIRT или др. блок) :

    /react add BLOCK_CLICK bc102 type:chest loc:world,100,100,100
    то получим следующее:
    Код:
      bc102:
        block-type: chest
        click-type: ANY
        location: world,100,100,100
    
    3. Если ввести команду с параметрами, где параметр типа материала совпадает с блоком, на который игрок смотрит (ввели CHEST и смотрим на CHEST) :
    /react add BLOCK_CLICK bc103 type:chest loc:world,100,100,100
    то получим следующее:
    Код:
      bc103:
        block-type: chest
        click-type: ANY
        location: world,-1310.0,63.0,-13.0,0.0,0.0
    
    Здесь координаты заменятся на координаты блока, на который смотрит игрок

    4. Теперь работает имя локации
    /react add BLOCK_CLICK bc104 type:chest loc:chestloc
    Код:
      bc104:
        block-type: chest
        click-type: ANY
        location: chestloc
    
    Имейте ввиду, команда /ra add loc chestloc сохраняет в файл координаты блока, на котором стоит игрок
     
    Последнее редактирование: 7 май 2017
  3. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    build #63
    Переработана система вывода сообщений плагина. В идеале, для пользователя это не должно никак влиять. Но если где-то вылезут непереведённые или пропавшие сообщения — пожалуйста сообщайте.
    build #66
    Расширены возможности действия SHOOT.
    Теперь есть возможность при выстреле в игрока/моба вызывать активатор относительно цели.
    Описание действия добавлено в вики: https://github.com/Redolith/ReActions/wiki/Действие-SHOOT
     
  4. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    build #67
    Добавлено действие FILE
    Описание: https://github.com/Redolith/ReActions/wiki/Действие-FILE

    Теперь можно удалять файлы на сервере. Будьте осторожны с этим действием, чтобы ненароком не удалить нужные файлы.
     
  5. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Вот это крутое действие!
     
  6. Lalki

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

    Баллы:
    66
    а можно ли в активаторе Item_click использовать предметы, в названии которых 2 слова через пробел?
     
  7. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Да, конечно. Тогда название надо заключать в фигурные скобки:
    name:{Слова через пробел}
     
  8. Lalki

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

    Баллы:
    66
    C активатором SIGN так же делать?
     
  9. Korvinius

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

    Баллы:
    88
    Еще бы сделать, чтобы активаторы MOB_CLICK и MOB_DAMAGE при активаци на type: PLAYER отдавали в плейсхолдер его ник а не PLAYER...
     
  10. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    build #71
    Добавлено действие GLIDE и флаг состояния игрока: STATE=GLIDE
    Описание: https://github.com/Redolith/ReActions/wiki/Действие-GLIDE

    Флаг GLIDE проверяет, не летает ли игрок на элитрах. Действие GLIDE может запретить полёт на Элитрах
     
  11. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Прям как раз к моменту, когда закончил строить паркур. Огромное спасибо! :)

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

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    https://github.com/Redolith/ReActions/wiki/Activator-MOB_DAMAGE

    Вызывайте активатор EXEC активатор с параметром player:%mobname%
     
  13. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Не работает отмена записи строки в лог-файл:
    Код:
      Remove_LogRemoveEffects:
        source: LOG_OUTPUT
        type: REGEX
        mask: .*Couldn't take any effects from \S+ as they do not have any
        actions:
        - CANCEL_EVENT=true
    
    Строку вызывает активатор REGION:
    Код:
      Anti-Effects:
        actions:
        - CMD_CONSOLE=effect %player% clear
    
    Результирующая строка:
    upload_2017-5-9_2-52-34.png
    Что я делаю не так?
     
    Последнее редактирование: 9 май 2017
  14. SoSeDiK

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

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    Есть вот такой активатор (кусочек от всего):
    Код:
    ITEM_CLICK:
      WindStaff:
        item: 'type:STICK data:0 enchantments:LUCK:1 name:{&6Элементальный Посох
        &7- &b&oВетер} lore:{\n&7Элемент: &b&oВетер\n\n&7&eПравый Клик&7, чтобы запустить
        себя вперёд} regex:false'
        flags:
        - DELAY_PLAYER=id:windstaff set-time:2s
        actions:
        - 'CMD_CONSOLE=openaudio play %PLAYER_NAME% https://www.dropbox.com/s/w4pw6fdszc6u34l/air.ogg?dl=1'
    
    Нужно сделать так, чтобы CMD_CONSOLE выполнялось для самого игрока и всех окружающих его игроков в радиусе 7 блоков от него самого. Как это можно реализовать?
     
  15. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Подобную штуку я тоже хотел сделать. В твоём случае можно прикрутить активатор EXEC с указанием локации и радиуса - сделать не сложно. А в моём случае нужен новый активатор :D
    Хотя, если его добавить, то он будет запускаться для каждого игрока, даже если флаги отрабатывать не будут. А уж что говорить, если игроков будет под 50... Видимо, поэтому @fromgate и не добавил его в то время, когда я предлагал)
    Поднимаю старые, но нужные идеи)
    Поднимаю старые, но до сих пор актуальные идейки)
    В данном случае имеется в виду, что регулярное выражение выполняет роль маски типа "полностью соответствует". Фактически, указывая, что имя может быть любым "в пределах регулярного выражения", нужно выполнять семейство действий, где вместо регулярного выражения будет подставлен соответствующий эквивалент уже "константной" строки.

    Ну и алгоритм реализации прост: перебрать все активаторы и найти совпадения. Однако, если активаторов будет много, желательно иметь возможность указать конкретную директорию (которых ещё нет, эхх...)\файл, где находятся нужные активаторы.
    Код:
    EXECUTE=activator:ActivatorName%regex:\S+%
    CMD_CONSOLE=ra remove activator ActivatorName%regex:\S+%
     
    Последнее редактирование: 9 май 2017
  16. SoSeDiK

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

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    Умно) Но ReActions не хочет создавать активаторы, если вводить их через чат (создаёт пустой activators.yml и всё). Можно пример EXEC в конфиге с использованием значений player, loc, radius, region...?
     
  17. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Недавно же обсуждалось. Почему-то мне не лень, а даже интересно читать пропущенные 20 страниц этой темы. Почему тебе лень прочитать 5 прошлых страниц?)

    Чтобы плейсхолдеры, созданные для текущего активатора, не работали, есть 2 варианта:
    1) Запустить EXEC для игрока null. В этом случае никаких локальных плейсхолдеров в принципе не будет, если только их не создать действием. Однако, так как у нас тут нет функций, передачу аргументов в нашу EXEC-функцию нужно осуществлять ручками: создаём переменные в вызывающем активаторе, удаляем переменные в вызванном EXEC.
    2) Поставить действие WAIT. @fromgate говорил, что после выполнения этого действия активатор уже "закончил свою жизнь" и локальные плейсхолдеры будут удалены. Относительно %player% не проверял. С передачей значений временных плейсхолдеров и подстановкой самих плейсхолдеров (уже не существующих на момент вызова WAIT), думаю, разберёшься.
    3) Дождаться обновления, в котором можно будет экранировать плейсхолдеры от лишнего обрабатывания (уже столкнулся остро с этой проблемой: нужно было создавать около 20 временных переменных, а потом их ещё и удалять. Плюнул, обошёлся без лишнего функционала. Обидно, но красоту кода я всё-таки стараюсь щадить :))
     
  18. SoSeDiK

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

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    Совсем не лень, теперь прочитаю. Спасибо)
    Это было даже проще, чем Я ожидал.
     
    Последнее редактирование: 9 май 2017
  19. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    И всё-таки, сортировка, как я понял, учась в универе - одно из ключевых действий в повседневной работе пользователя. А что уж говорить про ивенты? Предлагаю несколько вариантов реализации:
    1) Плейсхолдер, сортирующий входную последовательность по критерию. Пример:
    Имеется база игроков (файл переменных :D), которая хранится в таком виде: у каждого игрока, который в базе, есть переменная X, установленная, допустим, в true. Нужно отсортировать по убыванию/возрастанию этих игроков по переменной Y, которая так же может быть той самой X. Результатом будет временный список значений в формате "Игрок: Y". Этот список уже можно будет обработать с помощью недавно добавленного действия REGEX.
    Код:
    %sort_XY:<переменная, необходимая для включения игрока в список сортировки>, <переменная-критерий сортировки>, <по убыванию\возрастанию>%
    2) Плейсхолдер сортировки входящего списка значений с заданным разделителем сортируемых объектов. В качестве критерия сортировки будет регулярное выражение, поэтому сортировка будет в алфавитном порядке. Вопрос только в каком: прямом или обратном? В результате - отсортированный список в формате "Объект: %REGEX, по которому сортировали%".
    Код:
    %sort_list:<{список с запятыми-разделителями объектов сортировки}>, <regex:{критерий сортировки}> <порядок: прямой\обратный>%
    Обещанного три года ждут?)
    Если о флаге FLY даже не было заявлено, то этот мы вообще потеряли :D
     
  20. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Была такая проблема, но я научился её недопускать. Опка сохранялась, когда во время выполнения команды CMD_OP игрок дисконнектился. При заходе в игру опка оставалась.
    Сейчас, проверяю опку с помощью флага OP и таким образом не допускаю её появления.
     

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