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

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

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

  1. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Ещё не запускал. Пока что дописываю что хотел.
     
  2. maxdikiy

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

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

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Если поставить WAIT=50ms - не работает точно.

    Но без WAIT работает. Однако, при исполнении команды добавления активатора даже "через консоль" мне высвечивается, что "такой команды нет". Как это можно объяснить?
    upload_2017-5-3_16-21-10.png
    Код:
      AddSellRg:
        override: true
        regex: true
        command: (?i)(ASR \S+ \d+ \S+)
        flags:
        - GROUP=Authors
        actions:
        - 'SIGN_SET_LINE=loc:%PLAYER_LOC_VIEW% line1:{&4&l&nBy} line2:{Price: $%arg2%} line3:{&lFor group:} line4:{&n%arg3%}'
        # # # #
        - CMD_CONSOLE=ra add SIGN SIGN_ByRg-%arg1% click:any line1:{&4&l&nBuy}
        - EXECUTE=activator:Crutch1 player:null
        # # # #
        # # # #
        - CMD_CONSOLE=ra add SIGN SIGN_SellRg-%arg1% click:any line1:{&4&l&nSell}           
        - EXECUTE=activator:Crutch2 player:null
        # # # #
    
        - 'MESSAGE=%var:prefix% &bSuccessfully: &aRegion "&3%arg1%&a" is aviable for buy for "&3$%arg2%&a" for "&3%arg3%&a" group.'
        reactions:
        - MESSAGE=%var:prefix% &cAviable for only &bAuthors&c.
    
    EXEC:
      Crutch1:
        actions:
        - CMD_CONSOLE=ra add SIGN_ByRg-%var:curRg% a EXECUTE activator:ByRg player:%player%
        - BROADCAST=This is work 1! %player%
      Crutch2:
        actions:
        - CMD_CONSOLE=ra add SIGN_SellRg-%var:curRg% a EXECUTE activator:SellRg player:%player%
        - BROADCAST=This is work 2! %player%
    
    

    Если добавляю задержку WAIT=time:100ms, то плейсхолдеры из COMMAND, которые должны существовать, не существуют: upload_2017-5-3_16-41-54.png
    Ещё вопрос: как убрать флуд в лог?
    Код:
    [16:41:01 INFO]: Lyosha12 issued server command: /ASR L1 12 Authors
    [16:41:02 INFO]: Не удалось создать активатор SIGN_ByRg-%arg1% [SIGN]
    [16:41:02 INFO]: (click:ANY sign:[Buy][][][]). Возможно активатор с
    [16:41:02 INFO]: подобным именем уже существует
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curRg
    [16:41:02 INFO]: value:%arg1%)
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curRgPrice
    [16:41:02 INFO]: value:%arg2%)
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curNeedGroup
    [16:41:02 INFO]: value:%arg3%)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curRg)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curRgPrice)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curNeedGroup)
    [16:41:02 INFO]: Можно добавлять только локации (loc) и активаторы!
    [16:41:02 INFO]: Не удалось создать активатор SIGN_SellRg-%arg1% [SIGN]
    [16:41:02 INFO]: (click:ANY sign:[Sell][][][]). Возможно активатор с
    [16:41:02 INFO]: подобным именем уже существует
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curRg
    [16:41:02 INFO]: value:%arg1%)
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curRgPrice
    [16:41:02 INFO]: value:%arg2%)
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curNeedGroup
    [16:41:02 INFO]: value:%arg3%)
    [16:41:02 INFO]: Действие добавлено: VAR_SET (id:curOwnerRG
    [16:41:02 INFO]: value:%var:player%)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curOwnerRG)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curRg)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curRgPrice)
    [16:41:02 INFO]: Действие добавлено: VAR_CLEAR (id:curNeedGroup)
    [16:41:02 INFO]: Можно добавлять только локации (loc) и активаторы!
    [16:42:31 INFO]: Lyosha12 issued server command: /ra reload
    
    Не отслеживать же каждое сообщение через активатор MESSAGE?
    Ух ты! Переменная самопроизвольно исчезает! upload_2017-5-3_17-8-7.png
    Код:
      AddSellRg:
        override: true
        regex: true
        command: (?i)(ASR \S+ \d+ \S+)
        flags:
        - GROUP=Authors
        actions:
        - 'SIGN_SET_LINE=loc:%PLAYER_LOC_VIEW% line1:{&4&l&nBy} line2:{Price: $%arg2%} line3:{&lFor group:} line4:{&n%arg3%}'
        # # # #
        - CMD_CONSOLE=ra add SIGN SIGN_ByRg-%arg1% click:any line1:{&4&l&nBuy}
    
        - VAR_SET=id:curRg value:%arg1%
        - BROADCAST=AAA %var:curRg%
        - EXECUTE=activator:Crutch1 player:null
        # # # #
        # # # #
        - CMD_CONSOLE=ra add SIGN SIGN_SellRg-%arg1% click:any line1:{&4&l&nSell} value:%arg3%
                          
        - BROADCAST=BBB %var:curRg% 
        - EXECUTE=activator:Crutch1 player:null
        - VAR_CLEAR=id:curRg
        # # # #
    
        - 'MESSAGE=%var:prefix% &bSuccessfully: &aRegion "&3%arg1%&a" is aviable for buy for "&3$%arg2%&a" for "&3%arg3%&a" group.'
        reactions:
        - MESSAGE=%var:prefix% &cAviable for only &bAuthors&c.
    
    EXEC:
      Crutch1:
        actions:
        - CMD_CONSOLE=ra add SIGN_ByRg-%var:curRg% a EXECUTE activator:ByRg player:%player%
        - BROADCAST=AAA %var:curRg%
      Crutch2:
        actions:
        - CMD_CONSOLE=ra add SIGN_SellRg-%var:curRg% a EXECUTE activator:SellRg player:%player%
        - BROADCAST=BBB %var:curRg%
    
    
     
    Последнее редактирование: 3 май 2017
  4. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Необходимо её удалять после применения, а не до. В данном случае, удалять в активаторе Crutch2
    Активаторы в EXECUTE выполняются, как правило (если нет задержек), после выполнения родительского активатора
    Это можно объяснить тем, что при создании вложеного активатора SIGN, не обнаруживается взгляд игрока на табличке. (это обязательно, иначе не сработает)
     
    Последнее редактирование: 3 май 2017
  5. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Спасибо, напомнил.
     
  6. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Здесь обязательно необходимо создавать этот активатор только через CMD_OP либо CMD (если у игрока есть уже OP)

    Консоль не видит взгляда игрока
     
  7. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    автор говорил когда-то что лучше не использовать CMD_OP. Т.к. есть баг, при котором в игрока остатся опнутые права после использования активатора...
    Ученик превзошел учителя.
    Простите, не удержался
     
  8. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Я тоже, честно говоря, начал к Java привыкать, но начал это делать я за месяц до универа. Там потребовали от нас прогать на плюсах. Ну, я и отложил это дело до лучших времён.
    А почему бы не добавить RETURN_EXEC, который исполнялся бы в момент вызова, а после завершения активатора управление передавалось породившему его активатору? Даёшь нормальные функции! :D
     
  9. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    Есть ли способ заблокировать кнопку ускорения при флае ? ...И ограничить скорость полёта в целом
     
  10. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Не так уж и много я знаю. Я постоянно учусь.
    Похоже, что я погорачился с тем, что сказал, что состояния флая у игрока нет. Я нашёл его в документации. Значит скоро будет и этот флаг.
    Флаг скорости тоже возможно сделать и действие, ограничивающее скорость игрока.
     
  11. Kixot14

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

    Баллы:
    88
    Skype:
    Kixot14
    Имя в Minecraft:
    F1xer
    о это было бы отлично!
    Предложение: Класно было бы подсилить действие MESSAGE аргументом hover, что бы при наводке на него отображался какой-то комментарий (время когда было отправлено сообщение, к примеру).
    Да походу есть не только состояние флай:true/false, но и состояние того, находится ли игрок в полёте на данный момент или же он приземлен.
    Ессентиалс команда /whoIs ведь как то показывает это...
     
  12. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Я хочу вас удивить. Состояние FLY (наверное, с начала времён), уже было внедрено в плагин, только в документации об этом не было ни слова.
    Так, что, чтобы проверить летает ли игрок или нет, применяем флаг STATE=FLY
    @fromgate
    Добавил ещё пару флагов:
    FLY_SPEED и WALK_SPEED

    @Lyosha12
    Помню, вы где-то писали о флаге определяющего падение игрока. Хотел было уже добавлять этот флаг, но отказался, т.к. это состояние можно определить с помощью двух флагов:
    Код:
        flags:
        - '!STATE=FLY'
        - WALK_BLOCK=AIR
    
     
  13. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Да, но тогда я имел в виду "падение" относительно начального уровня игрока над поверхностью. То есть, если игрок прыгнул с эффектом на 5 блоков вверх и начал падать, то это не следует считать за "падение". Это именно прыжок. А падение считалось бы, когда он пересечёт точку, с которой начинал прыжок.
    Почему не существует плейсхолдера %world%?
     
  14. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Сейчас можно определить в каком мире находится игрок:
    Перебираем все миры, которые есть на сервере с помощью флага FLAG_SET и выводим плейсхолдер WORLD_FLAG
    https://github.com/Redolith/ReActions/pull/6
    смотри там 3-й пункт в описании
     
  15. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
  16. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Можно ли без костыля-активатора MESSAGE добыть группу PEX, в которой состоит оффлайн-игрок? Или список групп?
    А чем dev.bukkit плох? Долго принимает новые версии?
    Хм, как раз пригодилось действие REGEX. Однако проблема: как обрабатывать две строки? Их действительно две:
    при вводе pex user Lyosha12 group list выдаётся 2 сообщения. Первое ловится, а второе как по маске поймать?

    Вот что без активатора:
    upload_2017-5-5_0-58-51.png

    Вот что поймал активатор:
    upload_2017-5-5_0-58-17.png

    Активатор:
    Код:
    MESSAGE:
      TakePlayerGroup:
        source: ALL
        type: REGEX
        mask: User \".*
        actions:
        - CANCEL_EVENT=true
        - 'MESSAGE=&2Сообщение: %message%'
    

    Конечно, можно отследить два сообщения по отдельности, но хотелось бы знать решение для двух сообщений одновременно. Модификатор (?m) не работает.
     
    Последнее редактирование: 5 май 2017
  17. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Нет, там всё в порядке. Там будут релизы - их надо вручную заливать.
    А CircleCI тянет код с гитхаба и сам компилирует. Т.е. тут всегда будет последняя версия
     
  18. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Удобненько!
     
  19. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Я для этого импортировал pex в БД и вытаскивю нужную информацию уже из базы с помощью действия SQL_SELECT.
     
  20. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Вариант хороший, однако те, кто попросил меня помочь с сервером, не хотят иметь дело ещё и с MySQL.
     

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