Войти или зарегистрироваться

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

Как раз придумал этот вариант через час после того, как лёг спать. Действительно же: если активатор ни для кого не выполняется, то и временной переменной %player% не будет!
------
Ещё не запускал. Пока что дописываю что хотел.
Я так уже делал. Не работает, если запускать с игры. Получится, если exec активатор запускать с консоли или таймера
 
Если поставить 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%
 
Последнее редактирование:
Ух ты! Переменная самопроизвольно исчезает!
Необходимо её удалять после применения, а не до. В данном случае, удалять в активаторе Crutch2
Активаторы в EXECUTE выполняются, как правило (если нет задержек), после выполнения родительского активатора
Однако, при исполнении команды добавления активатора даже "через консоль" мне высвечивается, что "такой команды нет". Как это можно объяснить?
Это можно объяснить тем, что при создании вложеного активатора SIGN, не обнаруживается взгляд игрока на табличке. (это обязательно, иначе не сработает)
 
Последнее редактирование:
Однако, при исполнении команды добавления активатора даже "через консоль" мне высвечивается, что "такой команды нет". Как это можно объяснить?
Здесь обязательно необходимо создавать этот активатор только через CMD_OP либо CMD (если у игрока есть уже OP)

Консоль не видит взгляда игрока
 
Здесь обязательно необходимо создавать этот активатор только через CMD_OP либо CMD (если у игрока есть уже OP)

Консоль не видит взгляда игрока
автор говорил когда-то что лучше не использовать CMD_OP. Т.к. есть баг, при котором в игрока остатся опнутые права после использования активатора...
Действительно классно видеть, что плагин до сих пор жив и, более того, проходит через новый виток развития вместе с тобой :)

С этим плагином я знаком уже около года. Помню, как начинал учиться на ваших примерах, за что Огромное спасибо!
Но мне постоянно не хватало дополнительных активаторов и действий, для этого я начал изучать JAVA и делал свои плагины. Теперь у меня цель избавиться от своих плагинов и оставить только ReActions, а затем начать избавляться от плагинов других разработчиков. В идеале должно остаться 3 плагина, это WorldGuard, WorldEdit и ReActions.
Я вижу огромный потенциал в ReActions, поэтому и пытаюсь внести в этот плагин, как можно больше необходимых активаторов и действий.
Представьте себе, владелецы сервера перестанут искать плагины для своей версии ядра. Им придётся, всего лишь скачать файл активаторов, который заменит полноценный плагин.
Как пример, с помощью ReActions я полностью заменил плагин LocationTeleport. Мой файл активаторов может делать всё то, что может и плагин.

Ученик превзошел учителя.
Простите, не удержался
 
Ученик превзошел учителя.
Я тоже, честно говоря, начал к Java привыкать, но начал это делать я за месяц до универа. Там потребовали от нас прогать на плюсах. Ну, я и отложил это дело до лучших времён.
А почему бы не добавить RETURN_EXEC, который исполнялся бы в момент вызова, а после завершения активатора управление передавалось породившему его активатору? Даёшь нормальные функции! :D
 
Есть ли способ заблокировать кнопку ускорения при флае ? ...И ограничить скорость полёта в целом
 
Ученик превзошел учителя.
Не так уж и много я знаю. Я постоянно учусь.
Похоже, что я погорачился с тем, что сказал, что состояния флая у игрока нет. Я нашёл его в документации. Значит скоро будет и этот флаг.
Есть ли способ заблокировать кнопку ускорения при флае ? ...И ограничить скорость полёта в целом
Флаг скорости тоже возможно сделать и действие, ограничивающее скорость игрока.
 
Не так уж и много я знаю. Я постоянно учусь.
Похоже, что я погорачился с тем, что сказал, что состояния флая у игрока нет. Я нашёл его в документации. Значит скоро будет и этот флаг.

Флаг скорости тоже возможно сделать и действие, ограничивающее скорость игрока.
о это было бы отлично!
Предложение: Класно было бы подсилить действие MESSAGE аргументом hover, что бы при наводке на него отображался какой-то комментарий (время когда было отправлено сообщение, к примеру).
Похоже, что я погорачился с тем, что сказал, что состояния флая у игрока нет. Я нашёл его в документации. Значит скоро будет и этот флаг.
Да походу есть не только состояние флай:true/false, но и состояние того, находится ли игрок в полёте на данный момент или же он приземлен.
Ессентиалс команда /whoIs ведь как то показывает это...
 
Да походу есть не только состояние флай:true/false, но и состояние того, находится ли игрок в полёте на данный момент или же он приземлен.
Ессентиалс команда /whoIs ведь как то показывает это..
Я хочу вас удивить. Состояние FLY (наверное, с начала времён), уже было внедрено в плагин, только в документации об этом не было ни слова.
Так, что, чтобы проверить летает ли игрок или нет, применяем флаг STATE=FLY
@fromgate
Добавил ещё пару флагов:
FLY_SPEED и WALK_SPEED

@Lyosha12
Помню, вы где-то писали о флаге определяющего падение игрока. Хотел было уже добавлять этот флаг, но отказался, т.к. это состояние можно определить с помощью двух флагов:
Код:
    flags:
    - '!STATE=FLY'
    - WALK_BLOCK=AIR
 
Помню, вы где-то писали о флаге определяющего падение игрока. Хотел было уже добавлять этот флаг, но отказался, т.к. это состояние можно определить с помощью двух флагов:
Да, но тогда я имел в виду "падение" относительно начального уровня игрока над поверхностью. То есть, если игрок прыгнул с эффектом на 5 блоков вверх и начал падать, то это не следует считать за "падение". Это именно прыжок. А падение считалось бы, когда он пересечёт точку, с которой начинал прыжок.
Почему не существует плейсхолдера %world%?
 
Почему не существует плейсхолдера %world%?
Сейчас можно определить в каком мире находится игрок:
Перебираем все миры, которые есть на сервере с помощью флага FLAG_SET и выводим плейсхолдер WORLD_FLAG
https://github.com/Redolith/ReActions/pull/6
смотри там 3-й пункт в описании
 
Можно ли без костыля-активатора MESSAGE добыть группу PEX, в которой состоит оффлайн-игрок? Или список групп?
У девбилдов ReActions — новый адрес
А чем 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) не работает.
 
Последнее редактирование:
А чем dev.bukkit плох? Долго принимает новые версии?
Нет, там всё в порядке. Там будут релизы - их надо вручную заливать.
А CircleCI тянет код с гитхаба и сам компилирует. Т.е. тут всегда будет последняя версия
 
Можно ли без костыля-активатора MESSAGE добыть группу PEX, в которой состоит оффлайн-игрок? Или список групп?
Я для этого импортировал pex в БД и вытаскивю нужную информацию уже из базы с помощью действия SQL_SELECT.
 
Я для этого импортировал pex в БД и вытаскивю нужную информацию уже из базы с помощью действия SQL_SELECT.
Вариант хороший, однако те, кто попросил меня помочь с сервером, не хотят иметь дело ещё и с MySQL.
 
Назад
Верх