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

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

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

  1. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Вот, рабочий пример:
    Код:
    MOB_CLICK:
      kassa:
        mob-type: zombie
        mob-name: ''
        flags:
        - DELAY_PLAYER=id:mobclick player:%player% set-time:3s
        actions:
        - MESSAGE=&eПроходим, не задерживаем очередь!
        reactions:
        - MESSAGE=awd
    Я проверил, на старой версии плагина, действительно имеется двойной клик, но в последней версии этого уже нет.
     
  2. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Ясно, спасибо
     
  3. Swordin

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

    Баллы:
    76
    Коллеги, можно разъснить принцип работы на примере? буду признателен!

    задача:

    при вводе игроком {PLAYERNAME} несуществующей команды strangecommand плагин бы выполнял существующую команду, например, mute с параметром {PLAYERNAME} - то есть: мут этого игрока (команда mute доступна только админу)

    я добавляю активатор akt1:

    >ra add COMMAND akt1 strangecommand a mute {PLAYERNAME}


    но ничего не работает: никакого действия (а именно: mute {PLAYERNAME} не происходит)
    попробовал вот такой еще вариант, но тоже безуспешно:

    >ra add COMMAND akt1 strangecommand CMD_OP mute {PLAYERNAME}
     
  4. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Вы решили одной командой создать активатор и запихнуть в него действие, но это не верно.
    Если уж командами, то Вам нужно выполнить две команды:
    Код:
    ra add COMMAND akt1 strangecommand
    ra add akt1 a CMD_OP mute %player%
    или в файле активаторов (activators.yml) написать следующее:
    Код:
    COMMAND:
      akt1:
        override: true
        regex: false
        command: strangecommand
        actions:
        - CMD_OP=mute %player%
    
     
  5. Swordin

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

    Баллы:
    76
    ах, вот оно что!

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

    ...
    override: true
    regex: false
    ...
    ...команда заработала, но... не хватает прав (я говорил, что mute разрешена только админам) у простого игрока замутить самого себя (

    нельзя исполнить команду с правами админа?
    -------------------------------------
    всё получилось! использовал команду CMD_CONSOLE

    остались вопросы:

    не сочтите за труд - поясните, пожалуйста, назначение этих параметров:

    ...
    override: true
    regex: false
    ...
     
  6. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    override: true - если имеется такая команда с другого плагина и её как-то попытались отменить, то мы её перекроем и выполним команду с нашими действиями (это предположительно).
    regex - если true, то команду можно записать как регулярное выражение. При каждом совпадении будет выполняться команда. Например:
    Код:
    command: /set(\s+\S+){1,}
    здесь активатор будет срабатывать при любом параметре команды set, когда выполняются следующие команды:
    //set 1
    //set 2
    ...
    //set 256
     
  7. Swordin

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

    Баллы:
    76
    понял, большое спасибо - в принципе, всё логично (и очень полезно, если знать регулярку))

    и распоследний вопрос, если позволите ))


    если нужно, чтобы действие выполнялось по одной (любой) из команд - я попробовал вот так, но не работает:

    Код:
    COMMAND:
      akt1:
        override: true
        regex: false
        command:
        - strangecommand1
        - strangecommand2
        - ...
        - strangecommandN
        actions:
        - CMD_OP=mute %player%

    ...а вот действия - работают!

    Код:
        actions:
        - CMD_OP=action1
        - CMD_OP=action2
        - CMD_OP=action3
     
  8. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Нет, так не будет работать. В этом случае подойдут только регулярки:
    Код:
      akt1:
        override: true
        regex: true
        command: strangecommand(\d+)
        actions:
        - MESSAGE=%arg0%
    
    Здесь активатор будет выполняться одной из следующих команд:
    strangecommand1, strangecommand2, strangecommand3, ..., strangecommandN
     
  9. Swordin

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

    Баллы:
    76
    аа, понял, но... strangecommand1, 2, 3 - это для примера )

    на самом деле команды будут совсем разными: abc, defgh, ijklm...

    такое в регулярку, видимо, не заложить? )
     
  10. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Можно заложить. Вот пример:
    Код:
      akt1:
        override: true
        regex: true
        command: .*
        actions:
        - CANCEL_EVENT=true
        - MESSAGE=&e&l/%arg0% %args%
    
     
  11. Swordin

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

    Баллы:
    76
    подождите, я запутался

    с действиями как раз все норм - их можно перечилсять в столбик и это работает (как я написал выше):

    Код:
    actions:
        - CMD_OP=action1
        - CMD_OP=action2
        - CMD_OP=action3

    а вот как вставить список различных команд пользователя, чтобы активатор срабатывал по любой из них?

    что вот значит эта надпись?

    Код:
    command: .*
    это что - по вообще любой команде?

    но это не так!


    еще раз задача:

    по любой (из конечного списка) команде, выпущенной игроком, нужно произвести действие (действия).

    Вот и нужно в одном активаторе прописать этот список команд игрока.
     
  12. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Я понял. Вам стоит этот список команд прописать так:
    Код:
        command: (cmd1|cmd2|cmd4)
    
     
  13. Swordin

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

    Баллы:
    76
    увы, так не работает

    не распознает эти команды

    а если

    Код:
    command: cmd1
    то всё ок
     
  14. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    А Вы regex включили?
    Вот мой активатор работает, со всем списком команд:
    Код:
      akt1:
        override: true
        regex: true
        command: (cmd1|cmd2|cmd4)
        actions:
        - CANCEL_EVENT=true
        - MESSAGE=&e&l/%arg0% %args%
    
     
  15. Swordin

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

    Баллы:
    76
    ах, точно ведь!

    теперь всё работает, как нужно

    большое спасибо! )
    а что такое CANCEL_EVENT=true в вашем примере? )
     
  16. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    cancel_event=true отменяет событие/ивент баккита. В этом примере можно сказать, что для сервера команда не введена, а вот для ReActions она сработала (хотя это неверно). Это помогает избежать ошибки неверной/неизвестной команды при использовании Regex.



    Теперь мне нужна помощь с флагом Item_inventory :D
    Код:
    REGION:
      CstlEnter:
        region: World2.CstlEnter
        flags:
        - item_inventory=type:IRON_NUGGET name:{&eКлюч от сокровищницы}
        actions:
        - message=yey!
        reactions:
        - message=nope!
    %PLAYER_ITEM_HAND% выдает
    Код:
    type:IRON_NUGGET data:0 amount:1 name:{&eКлюч от сокровищницы} regex:false
    Иииии... nope!
    Пытался скопировать всю строку %player_item_hand% и поместить в флаг, иииии... снова nope!

    Может как-то не так флаг использую?..
     
  17. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Я его использую в 2-х случаях, когда хочу отменить событие от Bukkit и чтобы не писалось в чат сообщение типа: "Нет такой команды, воспользуйтесь командой /help"
    В вашем активаторе всё верно. Но есть одно Но. Предмет IRON_NUGGET появился в версии игры 1.11, а насколько я знаю ReActions собирался максимум до версии 1.10 (я могу ошибаться). У меня сервер 1.10, поэтому проверить не могу Ваш активатор. Но могу предложить Вам испытать работу с другим предметом в инвентаре. По идее всё должно заработать.
     
  18. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @maxdikiy
    IRON_NUGGET - должен работать. Вот если бы у него были какие-то уникальные параметры, то они бы не были доступны.
     
  19. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    @fromgate, @imDaniX
    IRON_NUGGET действительно работает. Ради этого развернул ядро 1.11.2. :)
     
  20. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Можете добавить событие телепортации??
    Интересно, а можна ли на основе события Item_Click сделать к примеру КД для выпивания зелий ?? Что бы нельзя было пить хилку или есть з.яблоко чаще чем рас в интерва ?
     

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