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

Заметил казусы с рандомом и калькулятором.
Отрицательные числа не воспринимает:
Код:
%RANDOM:-100-100%
Не берётся за разворачивание этого выражения:
Код:
%CALC:%RANDOM:-1,1%*%RANDOM:0-100%%
Эту проблему решил так:
Код:
    - VAR_PLAYER_SET=id:Test value:%RANDOM:0-100%
    - MESSAGE=%CALC:%RANDOM:-1,1%*%varp:Test%%
    - VAR_PLAYER_CLEAR=id:Test
 
Заметил казусы с рандомом и калькулятором.
Отрицательные числа не воспринимает
Ваша задача решается довольно простым способом (смещением):
Код:
%CALC:%RANDOM:0-200%-100%
 
Если выдать вещь и записать её название во временную переменную, а затем вывести эту переменную в сообщении, то название предмета в сообщении будет только до пробела:
Код:
    - ITEM_GIVE=set1:{item1:{type:ARROW amount:16 data:0 name:{&bСтарые Стрелы}}} set2:{item1:{type:SHIELD amount:16 data:0 name:{&bПробитый щит}}} set3:{item1:{type:TOTEM amount:16 data:0 name:{&bТотем бессмертия}}}
    - VAR_TEMP_SET=id:Item1 value:%item_str%
    - MESSAGE=Вы получили %Item1%
Например: вместо "Вы получили Старые стрелы" будет "Вы получили Старые"

Как это исправить?

Если в сообщении выводить просто:
Код:
- MESSAGE=Вы получили %item_str%
то всё окей, но мне необходимо именно в переменной.
 
Не забывайте, в таких случаях переменные необходимо записывать в фигурных скобках:
Код:
- VAR_TEMP_SET=id:Item1 value:{%item_str%}
Спасибо. А есть ли возможность заменить знак "*" на букву "х" в сообщении o выданном предмете. Чтобы было не "Старые Стрелы *16" , а "Старые Стрелы х16", или вообще заключить число в скобки "Старые Стрелы (х16)" ?

И ещё, есть ли возможность в одном действии MESSAGE разделить строки, типа "1 строка\n2 строка\n3 строка ", а то часто бывает, если на сервере чат активный , то между строк просачиваются сообщения игроков или другие сообщения..
Действие:
Код:
    - MESSAGE=&aПоздравляем!
    - MESSAGE=&aВы получили - %item_str%
    - MESSAGE=&aСледующий бесплатный кейс будет доступен через **:**

А результат:

Поздравляем!
[Игрок] Вася_Пупкин: пайдём убиват нубов!11!1
Вы получили Старые Стрелы *16
Следующий бесплатный кейс будет доступен через **:**
 
Последнее редактирование:
А есть ли возможность заменить знак "*" на букву "х" в сообщении o выданном предмете. Чтобы было не "Старые Стрелы *16" , а "Старые Стрелы х16", или вообще заключить число в скобки "Старые Стрелы (х16)" ?
Да, есть. Воспользуйтесь действием REGEX
Код:
- REGEX=input:{%item_str%} regex:{(.*)(\*)(\d+)}
- MESSAGE=&aВы получили - %group01%(x%group03%)
Это будет работать, если %item_str% = текст текст *число
И ещё, есть ли возможность в одном действии MESSAGE разделить строки, типа "1 строка\n2 строка\n3 строка ", а то часто бывает, если на сервере чат активный , то между строк просачиваются сообщения игроков или другие сообщения..
Воспользуйтесь командой tellraw:
Код:
    - 'cmd=tellraw %player% {"text":"Поздравляем!\n%player_display%: пайдём убиват нубов!11!1\nВы получили %group01%(x%group03%)\nСледующий бесплатный кейс будет доступен через **:**"}'
 
Ваша задача решается довольно простым способом (смещением):
Да, это действительно проще. А что насчёт второго случая с умножением?
Модифицировано действие IF_ELSE
Довольно давно, кстати, ждал эту возможность. Мои 700 строк сплифа можно было бы ужать до сотни. Однако, чтобы это сделать, необходима проверка относительно не только одного игрока. Переменные же мы можем проверять у других игроков, зная их ник?
И ещё нюанс: в примерах используются только плейсхолдеры. А как насчёт уже существующих флагов?
 
А что насчёт второго случая с умножением?
Почему-то 2 RANDOMa нельзя использовать в CALC. Могу предложить альтернативу:
Код:
  %CALC:%RANDOM:-1,1%*round(random()*100)%
  %CALC:(round(random())*2-1)*%RANDOM:0-100%%
  %CALC:(round(random())*2-1)*round(random()*100)%
Каждая строка выполняет одно и тоже действие
Довольно давно, кстати, ждал эту возможность. Мои 700 строк сплифа можно было бы ужать до сотни. Однако, чтобы это сделать, необходима проверка относительно не только одного игрока. Переменные же мы можем проверять у других игроков, зная их ник?
И ещё нюанс: в примерах используются только плейсхолдеры. А как насчёт уже существующих флагов?
Флаги это теже плейсхолдеры (GROUP=>%GROUP_FLAG% и т.п.). Имейте ввиду, это всё ещё сырое действие. Все возможности я не тестировал.
Нужно всё протестировать, и при необходимости модифицировать, чтобы удовлетворяло всем критериям.
 
Довольно давно, кстати, ждал эту возможность. Мои 700 строк сплифа можно было бы ужать до сотни. Однако, чтобы это сделать, необходима проверка относительно не только одного игрока. Переменные же мы можем проверять у других игроков, зная их ник?
И ещё нюанс: в примерах используются только плейсхолдеры. А как насчёт уже существующих флагов?
Поделишся сплифом ?
Интересно просто как его устроить через реАкшнс...
 
Последнее редактирование:
Поделишся сплифом ?
Интересно просто как его устроить через реАкшнс...
upload_2017-5-23_15-8-56.png
Щито поделать :D
Флаги это теже плейсхолдеры
Но, во-первых, они же работают только если были написаны в секции flags. И, во-вторых, как проверить флаг на другом игроке с помощью этого действия, зная его ник, но не запуская EXEC для него?
 
Но, во-первых, они же работают только если были написаны в секции flags. И, во-вторых, как проверить флаг на другом игроке с помощью этого действия, зная его ник, но не запуская EXEC для него?
Свои флаги в субактиваторах не работают, но думаю, можно их добавить: (flag1:{} flag2:{}...)
В любом случае, нужен пример того, что вы хотите, чтобы протестировать.
 
Свои флаги в субактиваторах не работают, но думаю, можно их добавить: (flag1:{} flag2:{}...)
В любом случае, нужен пример того, что вы хотите, чтобы протестировать.
Ну, например проверить наличие права у игрока Test1 из активатора, запущенного для Test2
Как-то вообще ноль реакции:
Код:
BLOCK_BREAK:
  Test:
    block: CHEST
    actions:
    - MESSAGE=Test
 
block:CHEST тоже сработать должно.
 
block:CHEST тоже сработать должно.
Маска по которой выполняется поиск/сравнение следующая: \S+:\{[^\{\}]*\}|\S+:\S+
При этом type:chest сработает, а просто chest - нет, т.е. упрощённый формат не будет найден.
Строки 794-795 в файле VirtualItem.java никогда не выполнятся.

Конечно, я могу и ошибаться.
 
Что можна придумать, что бы выводить переменную, которая будет сообщать нам сколько в определенном сообщении есть слов(первая переменная) и какая общая длина этих слов(вторая) ?
Это реально сделать с помощью REGEX действия ??
 
В активаторе MESSAGE есть плейсхолдер %word-count%, который показывает сколько слов в сообщении. Общую длину можно проверить/сравнить с чем-то, а не узнать.
В REGEX можно добавить плейсхолдер, который будет показывать количество вхождений по маске, благодаря этому можно будет узнать сколько символов в сообщении. Также можно будет узнать и количество слов.
 
Есть предложение, а точнее даже просьба:
Добавить возможность создавать для каждого пользователя отдельный файл содержащий персональные переменные. А то в одном файле это уж очень неудобно. Ооочень!
 
Назад
Верх