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

Действие на добавление локации и плейсхолдер локации мне теперь оказались ненужными.
Действие REGEX - наше всё)
 
Последнее редактирование:
Здравствуйте, мне нужен такой активатор, чтобы при нажатие в инвентаре определенным предметом (далее (1)) по другому предмету (далее (2)), оба эти предмета забирались и предмет (2) выдавался с измененным lore'ом, либо же просто чтобы у предмета (2) менялся lore и name,а забирался только предмет (1). Я пытался написать такое, но в моем варианте кода будет необходимо вбивать для каждого предмета по 2 активатора (INVENTORY_CLICK and EXEC), а это безумно неудобно, ведь предметов несколько сотен. Помогите мне пожалуйста такое реализовать.
 
Не уверен, что конкретно нужно в обоих случаях :0 Подробнее бы.

Вариант 1
1)Запрещаем вход, если нет хотя бы одного обычного сундука.
Код:
REGION_ENTER:
  NoEnter2:
    region: NoEnter2
    flags:
    - item_inventory=type:chest
    actions:
    - message=&aУ игрока есть минимум один обычный сундук. Забиваем болт.
    reactions:
    - message=&cУ игрока либо нет сундука, либо сундук кастомный. Низя.
#    - back=2
#    - tp=world,0,80,0,0,0
2)Запрещаем телепорт на спавн если нет хотя бы одного обычного сундука.
Код:
COMMAND:
  ChestSpawn:
    override: false
    regex: false
    command: cmd:spawn
    flags:
    - '!item_inventory=type:chest'
    actions:
    - cancel_event=true
    - message=&cВ инвентаре нет ни одного обычного сундука. На спавн не пущу.

Вариант 2
1)Запрещаем вход, если нет хотя бы одного обычного сундука или имеется кастомный.
Код:
REGION_ENTER:
  NoEnter2:
    region: NoEnter2
    flags:
    - item_inventory=type:chest
    - '!item_inventory=type:chest name:.+ lore:.* regex:true'
    - '!item_inventory=type:chest name:.* lore:.+ regex:true'
    actions:
    - message=&aУ игрока есть минимум один обычный сундук и нет кастомных. Забиваем болт.
    reactions:
    - message=&cУ игрока либо нет сундука, либо имеется кастомный сундук. Низя.
#    - back=2
#    - tp=world,0,80,0,0,0
2)Запрещаем телепорт на спавн если нет хотя бы одного обычного сундука, или имеется кастомный.

Код:
COMMAND:
  ChestCmd:
    override: false
    regex: false
    command: cmd:spawn
    flags:
    - item_inventory=type:chest
    - '!item_inventory=type:chest name:.+ lore:.* regex:true'
    - '!item_inventory=type:chest name:.* lore:.+ regex:true'
    reactions:
    - cancel_event=true
    - message=&cВ инвентаре нет ни одного обычного сундука, либо имеется кастомный. На спавн не пущу.
Короче, на конкретных примерах.

1. Тут всё просто, надо чтоб игрока пускало в регион только если у него в инвентаре имеется 1 и только 1 кастомный сундук. Если игрок несет 1, несколько обычных сундуков или не несет их вообще, то его не пускает.
2. Тут посложнее. Нужно, чтоб игрок не мог пользоваться командой /enderchest, пока у него в инвентаре есть любое количество кастомных сундуков. На обычные сундуки триггериться не должно.
 
@fromgate, @maxdikiy,
Когда-то я уже писал об этом..
В общем, активаторы VARIABLE не хотят работать.

Код:
EXEC:
  1:
    actions:
    - VAR_PLAYER_INC=id:pay value:1
VARIABLE:
  varp_pay:
    variable-id: pay
    personal: true
    actions:
    - MSG=1111111
Сообщения '1111111' не получаю.
 
Здравствуйте, возможно где-то в конфиге это можно настроить, но я не нашёл.
В общем, разделяю локацию игрока на WORLD,X,Y и Z. Потом, чтобы установить "локации" в нужных местах увеличиваю или уменьшаю какую-либо переменную из предоставленных (XYZ)
Мне эти локации понадобятся для активатора BLOCK_BREAK. В котором локация сломанного блока будет сравниваться с одной из локаций, сохраненной в переменной игрока.
При создании этих локаций через
Код:
EXEC:
  makeisland:
    actions:
    - VAR_PLAYER_SET=id:home value:%PLAYER_LOC%
    - REGEX=input:{%varp:home%} regex:{[a-zA-Z]+|\-[0-9]+|[0-9]+}
    - VAR_PLAYER_SET=id:world value:%group00%
    - VAR_PLAYER_SET=id:x value:%group10%
    - VAR_PLAYER_SET=id:y value:%group30%
    - VAR_PLAYER_SET=id:z value:%group50%
    - VAR_PLAYER_SET=id:loc1 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc1%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc2 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc2%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:z value:1
    - VAR_PLAYER_SET=id:loc3 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc3%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc4 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc4%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc5 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc5%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_SET=id:loc6 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc6%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_SET=id:loc7 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc7%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc8 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc8%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc9 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc9%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc10 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc10%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:z value:1
    - VAR_PLAYER_SET=id:loc11 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc11%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:z value:1
    - VAR_PLAYER_SET=id:loc12 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc12%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:z value:1
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc13 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc13%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc14 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc14%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc15 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc15%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_DEC=id:x value:1
    - VAR_PLAYER_SET=id:loc16 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc16%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_SET=id:loc17 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc17%}
    - WAIT=time:1s
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_SET=id:loc18 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc18%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_DEC=id:z value:1
    - VAR_PLAYER_SET=id:loc19 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc19%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc20 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc20%}
    - WAIT=time:1s
    - VAR_PLAYER_INC=id:x value:1
    - VAR_PLAYER_SET=id:loc21 value:{%varp:world%,%varp:x%,%varp:y%,%varp:z%,0.0,0.0}
    - MESSAGE=&7done:&floc21%}
Получаются непохожие друг на друга локации.
upload_2018-4-3_17-10-55.png
Эта точка с нулём мне очень и очень мешают.
Можно ли её убрать как-либо в конфиге?
 
Последнее редактирование:
@Lomank
п.1 Сделал ;)

#206
  • Исправлена ошибка, связанная с несовместимостью API разных версий spigot, проявлявшая себя периодически при стрельбе из лока, бросании зелий и т.п.
  • Информация о регистрации команд, при старте сервера, объедина в одно сообщение.
Воу! Здорово, спасибо. :)

Не хочу показаться наглецом, но хотел бы ещё одну вещь предложить, опять же для удобства.
При сохранении персональных переменных в отдельный файл, этот файл приобретает UUID игрока.
Было бы очень удобно, если они назывались ником игрока, а внутри файла уже можно и UUID добавить. В общем, просто поменять местами. Так как я много чего сохраняю в персональные переменные, там хранятся статистики игроков, было бы очень удобно называть файлы ником игрока.
Или хотя бы сделать в конфиге настройку, чтобы каждый как ему угодно настроил.

Пример:
player-use-nickname-variable-file=true; Если false, то используется UUID игрока.
 
Воу! Здорово, спасибо. :)

Не хочу показаться наглецом, но хотел бы ещё одну вещь предложить, опять же для удобства.
При сохранении персональных переменных в отдельный файл, этот файл приобретает UUID игрока.
Было бы очень удобно, если они назывались ником игрока, а внутри файла уже можно и UUID добавить. В общем, просто поменять местами. Так как я много чего сохраняю в персональные переменные, там хранятся статистики игроков, было бы очень удобно называть файлы ником игрока.
Или хотя бы сделать в конфиге настройку, чтобы каждый как ему угодно настроил.

Пример:
player-use-nickname-variable-file=true; Если false, то используется UUID игрока.
Если игрок сменит ник, плагину проще будет найти его файл по названию чем поиском его UUID в каждом файле.
 
Кто-нибудь знает, как округлить значение? Чтобы не 100500 цифр после запятой было
Допустим в калькуляции идёт "value:%CALC:%varp:damage2%/%HEALTH%%", а в чате потом пишется "+ 2.1286351623567385345"
 
Кто-нибудь знает, как округлить значение? Чтобы не 100500 цифр после запятой было
Допустим в калькуляции идёт "value:%CALC:%varp:damage2%/%HEALTH%%", а в чате потом пишется "+ 2.1286351623567385345"
REGEX, однако, очень полезен)
Вот действие, которое ОБРЕЖЕТ любую переменную до значения целой и десятой.
Код:
actions:
    - REGEX=input:{1.234567890} regex:{[\d]+\.\d}

Пример:
Код:
    - REGEX=input:{1.234567890} regex:{[\d]+\.\d}
    - MSG=%group00%
В чате появится '1.2'


Вот тебе САЙТ, на котором можно научиться работать с регулярными выражениями (regexp)
 
Последнее редактирование:
Спасибо, а можно как-то получить список игроков или выбрать случайного?
 
Спасибо, а можно как-то получить список игроков или выбрать случайного?
Ну что, тряхну костылями :D
Запускаем EXEC для всех игроков.
Для каждого исполняется один активатор.
Тогда, чтобы выбрать только одного случайно, нужно сгенерировать число игроков: просто увеличиваем соответствующую глобальную переменную.
После этого запускаем уже нужный EXEC опять для всех игроков, но ведём количество таких запусков в глобальной переменной. Чтобы выбрать случайного игрока, достаточно сгенерировать случайное число в уже известном диапазоне, которое будет достигнуто при этом втором запуске. Как только это произойдёт (запрошенное случайное число равно глобальной переменной), в этот момент делаем то, что захотели.

Я не уверен насчёт всей этой параллельной обработки, так что отлов этих багов - не ко мне :D
 
Ну что, тряхну костылями :D
Запускаем EXEC для всех игроков.
Для каждого исполняется один активатор.
Тогда, чтобы выбрать только одного случайно, нужно сгенерировать число игроков: просто увеличиваем соответствующую глобальную переменную.
После этого запускаем уже нужный EXEC опять для всех игроков, но ведём количество таких запусков в глобальной переменной. Чтобы выбрать случайного игрока, достаточно сгенерировать случайное число в уже известном диапазоне, которое будет достигнуто при этом втором запуске. Как только это произойдёт (запрошенное случайное число равно глобальной переменной), в этот момент делаем то, что захотели.

Я не уверен насчёт всей этой параллельной обработки, так что отлов этих багов - не ко мне :D
Каким образом можно выполнить активатор EXEC для всех игроков?
 
Добрый день, есть ли возможность наложить unbreakable на предмет?
И можно ли получить координаты формата x y z, до точки и без взгляда, что бы использовать для команды другого плагина.
 
Добрый день, есть ли возможность наложить unbreakable на предмет?
И можно ли получить координаты формата x y z, до точки и без взгляда, что бы использовать для команды другого плагина.
На счет координат:
Действие, которое задаст временным переменным значения твоих координат:
Код:
    - REGEX=input:{%PLAYER_LOC%} regex:{[a-zA-Z]+|\-[0-9]+|[0-9]+}
%group00% - Мир
%group10% - X
%group30% - Y
%group40% - Z
То есть далее в активаторе ты можешь использовать эти переменные.
 
Кто знает, как получить координаты блока, на который я смотрю? Плейсхолдеры %view% и %viewpoint% работают только при вводе команд ReActions'a.
У меня даже в плагине PlayEffect не работает view, поэтому не могу сделать эффект линией. Как можно решить эти проблемки?
 
Кто знает, как получить координаты блока, на который я смотрю? Плейсхолдеры %view% и %viewpoint% работают только при вводе команд ReActions'a.
У меня даже в плагине PlayEffect не работает view, поэтому не могу сделать эффект линией. Как можно решить эти проблемки?
Попробуй этот плейсхолдер:
%PLAYER_LOC_VIEW%
 
Попробуй этот плейсхолдер:
%PLAYER_LOC_VIEW%
Хех, моя невнимательность. Благодарю.

Ещё вопросик:
В PlayEffect не вызываются эффекты на команду /play. В общем сам плагин работает только в связке с ReActions, в действиях EFFECT. Проблема только в том, что он на 1.11?
 
Назад
Верх