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

@BrainRTP
Есть десяток роликов, которые отражают процесс настройки:
 
StranWraith
По сути Активатор это своего рода флаг,
Вариант добавить к ITEM_WEAR флаг регион,то есть при надевании брони вызывается активатор и при условии что человек в регионе он выполняется...
BrainRTP
"Да, забыл! А как сделать так, что бы когда игрок выходит с сервера, когда он находиться в регионе pvp_poly2, давали бан на 3 дня?"
Такого активатора нету
1)Можно дать бан при входе
2)Попробовать реализовать косвенно.Я попробую сделать , если получится отпишусь, самому интересно


 
@rukaban96, я как то недопонял. Можно в виде команд?
"Просто тут загвоздка в том, что ITEM_WEAR является активатором, но мне нужно, чтобы он использовался как флаг, то есть проверка успешна, если одет HELMENT. Желательно командами, чтобы мне же было понятнее, синтаксис команд изучаю."
Я могу написать в виде команд , но активатор ITEM_WEAR сработает при надевании брони а не при ее ношении-если верить описанию...
Как вариант можно попробовать косвенно вывести то есть ли на нем эта броня или нет.
1)То есть он сначала должен прийти в регион , там проверится есть ли у него в инвентаре такая броня
2)если есть то например его должно переместить в некое место
3)здесь мы проверяем отсутствие этой брони в его инвентаре(при этом он не должен иметь возможность выкинуть ее или удалить как либо из своего инвентраря кроме как надеть на себя)
4)Если он на себя надел то делаем с ним то что вам нужно,так сказать от этого пляшем.
Если такой вариант устроит я могу приблизительно кинуть в виде команд
 
"Просто тут загвоздка в том, что ITEM_WEAR является активатором, но мне нужно, чтобы он использовался как флаг, то есть проверка успешна, если одет HELMENT. Желательно командами, чтобы мне же было понятнее, синтаксис команд изучаю."
Я могу написать в виде команд , но активатор ITEM_WEAR сработает при надевании брони а не при ее ношении-если верить описанию...
Как вариант можно попробовать косвенно вывести то есть ли на нем эта броня или нет.
1)То есть он сначала должен прийти в регион , там проверится есть ли у него в инвентаре такая броня
2)если есть то например его должно переместить в некое место
3)здесь мы проверяем отсутствие этой брони в его инвентаре(при этом он не должен иметь возможность выкинуть ее или удалить как либо из своего инвентраря кроме как надеть на себя)
4)Если он на себя надел то делаем с ним то что вам нужно,так сказать от этого пляшем.
Если такой вариант устроит я могу приблизительно кинуть в виде команд
Нет, вроде как сразу чекается, одет ли предмет.
 
StranWraith
я проверил все работает , сделал на примере нагрудника
команды
/react add item_wear activator 311
/ra add activator f region region_guard
/ra add activator r damage 1
 
StranWraith
я проверил все работает , сделал на примере нагрудника
команды
/react add item_wear activator 311
/ra add activator f region region_guard
/ra add activator r damage 1
Будет наноситься урон каждые 3 секунды в регионе, если надет нагрудник. А заказчику нужно полностью противоположное. Без флага проверки надетой брони не обойтись.

Можно реализовать через переменную: назначать её при присутствии брони и по таймеру снимать переменную каждые 4 секунды. При чём, таймер должен запустить активатор ITEM_WEAR. А если после снятия переменной она не установилась сразу же, то таймер нужно выключать.
Следовательно, наносить урон, когда переменная установлена и нет, когда сброшена.

Такая схема будет работать при относительно маленьких лагах, когда каждый тик обрабатывается.

Однако, если броня будет снята сразу после того, как переменная была удалена или установлена, то пройдёт ещё какое-то время, пока регион начнёт наносить урон.
 
Будет наноситься урон каждые 3 секунды в регионе, если надет нагрудник. А заказчику нужно полностью противоположное. Без флага проверки надетой брони не обойтись.

Можно реализовать через переменную: назначать её при присутствии брони и по таймеру снимать переменную каждые 4 секунды. При чём, таймер должен запустить активатор ITEM_WEAR. А если после снятия переменной она не установилась сразу же, то таймер нужно выключать.
Следовательно, наносить урон, когда переменная установлена и нет, когда сброшена.

Такая схема будет работать при относительно маленьких лагах, когда каждый тик обрабатывается.

Однако, если броня будет снята сразу после того, как переменная была удалена или установлена, то пройдёт ещё какое-то время, пока регион начнёт наносить урон.
Добавить перед активатором ! и получится так, как надо.
упд: вроде все же правильно, дамаг наносится, как противодействие или я где то ошибся? Я в переменных нуль, просто не могу в них разобраться.
StranWraith
я проверил все работает , сделал на примере нагрудника
команды
/react add item_wear activator 311
/ra add activator f region region_guard
/ra add activator r damage 1
Вроде как тут должно же быть так, если игрок находится в региона region_guard, то все норм, а если он НЕ находится в сем рг, а грудак одет - наносится урон.
 
Я в переменных нуль, просто не могу в них разобраться.
Что тут сложного? Установка и изменение:
Код:
var[_player]_set=id:NAME value:ЗНАЧЕНИЕ
var[_player]_dec=id:NAME1 value:ЗНАЧЕНИЕ1 - Минус ЗНАЧЕНИЕ1
var[_player]_inc=:id:NAME2 value:ЗНАЧЕНИЕ2 - Плюс ЗНАЧЕНИЕ2
(Кстати, а как это будет реализовано в новом формате, @fromgate? Я полагаю, что количество "value" должно быть равно количеству способов описания предметов?..)
Флаги для переменных:
Код:
1. VAR_EXIST. Глобальная переменная существует? Параметр: <идентификатор>

2. VAR_PLAYER_EXIST. Личная переменная существует? Параметр: <идентификатор>

3. VAR_COMPARE. Сравнение глобальной переменной со значением. Параметры: ID:<идентификатор> value:<значение>

4. VAR_PLAYER_COMPARE. Сравнение личной переменной со значением. Параметры: ID:<идентификатор> value:<значение>

5. VAR_GREATER. Глобальная переменная больше значения? Параметры: ID:<идентификатор> value:<значение>

6. VAR_PLAYER_GREATER. Личная переменная больше заданного значения? Параметры: ID:<идентификатор> value:<значение>

7. VAR_LOWER. Глобальная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>

8. VAR_PLAYER_LOWER. Личная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>
При сравнении больше\меньше ЗНАЧЕНИЕ включается. А при инверсии - нет. Это применимо и к флагу DELAY[_PLAYER]
 
Что тут сложного? Установка и изменение:
Код:
var[_player]_set=id:NAME value:ЗНАЧЕНИЕ
var[_player]_dec=id:NAME1 value:ЗНАЧЕНИЕ1 - Минус ЗНАЧЕНИЕ1
var[_player]_inc=:id:NAME2 value:ЗНАЧЕНИЕ2 - Плюс ЗНАЧЕНИЕ2
(Кстати, а как это будет реализовано в новом формате, @fromgate? Я полагаю, что количество "value" должно быть равно количеству способов описания предметов?..)
Флаги для переменных:
Код:
1. VAR_EXIST. Глобальная переменная существует? Параметр: <идентификатор>

2. VAR_PLAYER_EXIST. Личная переменная существует? Параметр: <идентификатор>

3. VAR_COMPARE. Сравнение глобальной переменной со значением. Параметры: ID:<идентификатор> value:<значение>

4. VAR_PLAYER_COMPARE. Сравнение личной переменной со значением. Параметры: ID:<идентификатор> value:<значение>

5. VAR_GREATER. Глобальная переменная больше значения? Параметры: ID:<идентификатор> value:<значение>

6. VAR_PLAYER_GREATER. Личная переменная больше заданного значения? Параметры: ID:<идентификатор> value:<значение>

7. VAR_LOWER. Глобальная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>

8. VAR_PLAYER_LOWER. Личная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>
При сравнении больше\меньше ЗНАЧЕНИЕ включается. А при инверсии - нет. Это применимо и к флагу DELAY[_PLAYER]
Все равно не могу понять. Саму логику переменных.
 
Все равно не могу понять. Саму логику переменных.
Логика проста: есть личные и глобальные переменные. Сейчас личные можно установить только в активаторе, который выполняется по отношению к игроку, который запустил этот активатор. Глобальные же переменные можно установить откуда угодно.

Как говорит fromgate, переменные хранят строки. Но до сих пор я их использовал или как счётчики, или как триггеры - переключатели.

Если что-то не понятно - спрашивай. И в самых деталях, что именно не понятно, на каком этапе тестирования. Всё не может быть непонятно - что-то точно должно запомниться. Покажи проблемное место и мы расскажем решение :)
 
StranWraith
Я перепутал пока сюда писал , там в действие надо добавить , я думаю принцип Вы поняли...
 
Доброго времени суток, прошу помощи. Что здесь не так? :(
При загрузке сервера выдает такую ошибку:
Код:
[23:47:27 INFO]: [ReActions] Failed to load configuration from file C:\Users\╨Ъ╤
В╨╛ - ╤В╨╛ ╨╜╨╡ ╨╖╨╜╨░╤О ╨║╤В╨╛\Desktop\Minecraft 1.8\╨Р╨║╤В╨╕╨▓╨░╤В╨╛╤А╤Л ReAct
ions\Episode1\plugins\ReActions\Activators\E1checkpoints.yml
[23:47:27 WARN]: org.bukkit.configuration.InvalidConfigurationException: mapping
values are not allowed here
in 'string', line 4, column 10:
        flags:
             ^
В конфиге написано следующее:
Код:
REGION_ENTER:
  E1Point1:
    region:e1point1
    flags:
    - VAR_PLAYER_MATCH=id:E1Point1 value:0
    actions:
    - cmd_console=holo setline E1Point1 1 &l
    - cmd_console=tm msg -stay=20 %player% &2Цель достигнута!<nl>&8Отправляйтесь к указанной точке.
    - ACTION_DELAYED=time:1s action:{CMD_CONSOLE tm msg -stay=100 %player% &6Новая цель:<nl>&8Исследуйте пещеру; убивайте встречающихся мобов .}
    - ACTION_DELAYED=time:1s action:{CMD_CONSOLE holo setline E1Point2 1 &6&l>ЦЕЛЬ}
    - VAR_PLAYER_SET=id:E1Point1 value:1
    reactions: []
 
@Max_ASimus
Возможно, что ошибка где-то выше. Может быть незакрытая строка (проверяйте одинарные кавычки - ')
 
На сколько я понял, в файле было два активатора, перед названием второго из них нужно было убрать два пробела, я этого не заметил. Спасибо за помощь.
 
@fromgate, в флагах, где участвует предмет, должен быть ещё один параметр: точное или неточное сравнение. То есть выдавать true на все предметы, описание которых точно соответствуют тому, что указано, или которые просто подходят под описание.
Не работает такой вариант на 0.9.4/5 :(
Код:
%var:donate-command-shop-%player%%
Хотя в переменной значение есть:
donate-command-shop-lyosha12: Esbrime
И дело не в том, что не распознаётся мой ник с большой буквы.
 
Вопрос к автору , если ли активатор клика по npc?
 
Вопрос к автору , если ли активатор клика по npc?
Нет, такого нет. Но вполне можно пробовать средствами Citizens запускать активатор командой. По моему там такая возможность была.
@fromgate, в флагах, где участвует предмет, должен быть ещё один параметр: точное или неточное сравнение. То есть выдавать true на все предметы, описание которых точно соответствуют тому, что указано, или которые просто подходят под описание.
Не работает такой вариант на 0.9.4/5 :(
Код:
%var:donate-command-shop-%player%%
Хотя в переменной значение есть:
donate-command-shop-lyosha12: Esbrime
И дело не в том, что не распознаётся мой ник с большой буквы.

Буду ещё думать и пробовать. Сейчас сделаю поддержку параметра с именем игрока во всех флагах/действиях с переменными, но вот с плейсхоледрами надо будет подумать. Формат: %var:<имя игрока>/<id переменной>% мне не очень нравится, честно говоря.
 
Назад
Верх