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

Кстати про MOB_CLICK: можно сделать слайма (+Mob Control, дабы не рыпался ;)) с именем Industrial WorkBench. При клики открывается GUI из SimplyGUICreator, где можно взять зачарованную, переименованную броню (а-ля Industrial craft), где ценой будут ингредиенты крафта :)
 
Кстати про MOB_CLICK: можно сделать слайма (+Mob Control, дабы не рыпался ;)) с именем Industrial WorkBench. При клики открывается GUI из SimplyGUICreator, где можно взять зачарованную, переименованную броню (а-ля Industrial craft), где ценой будут ингредиенты крафта :)
Ты мне помог, твою же налево! Мне как-раз требовался плагин для контроля мобами... Посмотрим, но ситизенс форевер

PS. Не, не то...
Ладно друзьями, удачи! Завтра отпишусь, как все получается :) (По сути еще полчасика можно посидеть).
Скажу только одно - мне нужна "вечная" проверка флагов, без вмешательства игроков
 
Последнее редактирование:
Это как? Давай на примере.
Намудрил, просто нужно сделать активатором флаг WALK_BLOCK

ЗЫ. Сделал скриншот карты будующей игры:
3f9ec056dc46997f3360279b71ad31ba.png

Пойду спать, завтра дела...
 
Последнее редактирование:
Подскажите как реализовать: Есть предмет с привязанным ITEM_CLICK.
Есть 2 точки: 1 статичная (Spawn например), а вторая динамичная (Она создается тогда, когда ты телепортируешься на Spawn). Т.е. ты можешь пройти от спавна 100 блоков, телепортироваться на Spawn и в этот момент точка, из которой ты телепортировался на Spawn привязывается к активатору. И когда ты совершил все необходимые действия на Spawn'е (торговля например) ты можешь спокойно продолжить свое увлекательное путешествие :)
 
Подскажите как реализовать: Есть предмет с привязанным ITEM_CLICK.
Есть 2 точки: 1 статичная (Spawn например), а вторая динамичная (Она создается тогда, когда ты телепортируешься на Spawn). Т.е. ты можешь пройти от спавна 100 блоков, телепортироваться на Spawn и в этот момент точка, из которой ты телепортировался на Spawn привязывается к активатору. И когда ты совершил все необходимые действия на Spawn'е (торговля например) ты можешь спокойно продолжить свое увлекательное путешествие :)
Совсем запутал xD

А у меня такой вопрос: как мне создать дэлэй для игрока на 24 часа (хочу сделать на сервере в новогоднее время, при заходе на сервер получать несколько коинов и затем дать дэлэй на 1 день)
PS. Я знаю что есть delay_player, но как мне его использовать?
 
v0.5.2/4 (в разработке)
https://www.dropbox.com/s/nwp1tn5wsq4v86s/ReActions.jar

Здесь добавлено:
  • Действие SHOOT параметры: distance:расстояние damage:урон(диапазоны поддерживаются) singlehit:true/false (наносить урон первому игроку в линии или всем) — скоро плагин Laser можно будет перенести целиком в ReActions :)
  • Добавлена работа с переменными. Это реализовано действиями и флагами:
    • Действия:
VAR_SET id_переменной/значение - задает переменную
VAR_PLAYER_SET id_переменной/значение
VAR_CLEAR id_переменной - удаляет переменную
VAR_PLAYER_CLEAR id_переменной
VAR_INC id_переменной/значение - увеличивает переменную на заданное значение (если значение не указано, то на 1)
VAR_PLAYER_INC id_переменной/значение
VAR_DEC id_переменной/значение - уменьшает переменную
VAR_PLAYER_DEC id_переменной/значение

Вместо id_переменной/значение можно писать: id:ID_переменной value:значение​
    • Флаги:
VAR_EXIST id_переменной - существует ли переменная
VAR_PLAYER_EXIST id_переменной
VAR_COMPARE id_переменной/значение - сравнивает переменную и значение
VAR_PLAYER_COMPARE id_переменной/значение
VAR_GREATER id_переменной/значение - больше ли переменная чем значение
VAR_PLAYER_GREATER id_переменной/значение
VAR_LOWER id_переменной/значение - меньше ли переменная чем значение
VAR_PLAYER_LOWER id_переменной/значение​
  • Любая переменная может выступать в качестве плейсхолдера. Для этого надо написать %var:<id переменной>% для подстановки значения глобальной переменной или %varp:<id переменной>% для подстановки значения персональной переменной.
  • Новый активатор ITEM_WEAR полностью аналогичен ITEM_HOLD, но проверяется определенной брони (в любом слоте: хочешь тапки на логову одевай)
  • Добавлено действие: ITEM_WEAR
    Параметры:
    item - одеваемый предмет
    slot - слот куда одеваем (helmet, chestplate, leggins, boots, auto)
    exist - что делаем с уже надетым "на это место" предметом (remove - удаляем, undress - суем в инвентарь, drop - дропаем, keep - сохраняем (тогда предмет не одевается))

Подскажите как реализовать: Есть предмет с привязанным ITEM_CLICK.
Есть 2 точки: 1 статичная (Spawn например), а вторая динамичная (Она создается тогда, когда ты телепортируешься на Spawn). Т.е. ты можешь пройти от спавна 100 блоков, телепортироваться на Spawn и в этот момент точка, из которой ты телепортировался на Spawn привязывается к активатору. И когда ты совершил все необходимые действия на Spawn'е (торговля например) ты можешь спокойно продолжить свое увлекательное путешествие :)

Значит, можно в той версии, что выложил выше. Вообще не планировал пока выкладывать, но раз уж такой вопрос... ;)

Значит делается так.
В активаторе создается действие:
VAR_PLAYER_SET id:temploc value:%player_loc%
после этого телепортируем игрока на спавн

На спавне, в активаторе, в котором происходит возврат назад,
проверяем флагом есть ли такая переменная:
Флаг: VAR_PLAYER_EXIST temploc
и телепортируем его обратно, после чего удаляем переменную
TP %varp:temploc%
VAR_PLAYER_CLEAR temploc
Совсем запутал xD

А у меня такой вопрос: как мне создать дэлэй для игрока на 24 часа (хочу сделать на сервере в новогоднее время, при заходе на сервер получать несколько коинов и затем дать дэлэй на 1 день)
PS. Я знаю что есть delay_player, но как мне его использовать?

Задать конкретное время пока нельзя :( Там время относительное - т.е. допустим 10 часов начиная с текущего времени :(
 
fromgate, можно подкинуть идей?

Активаторы:
1. Projectile - сам знаешь
2. BLOCK_CLICK
3. Переместить флаг walk_block в формат активатора
4. И возможно DAMAGE

:D

Задать конкретное время пока нельзя :( Там время относительное - т.е. допустим 10 часов начиная с текущего времени :(

Ну а если попробовать на 20 часов, то как нужно правильно все сделать?
 
fromgate, можно подкинуть идей?
Активаторы:
1. Projectile - сам знаешь
2. BLOCK_CLICK
3. Переместить флаг walk_block в формат активатора
4. И возможно DAMAGE

:D



Ну а если попробовать на 20 часов, то как нужно правильно все сделать?

Я наверное сделаю активаторы TIME и TIME_SERVER - чтобы "тикало" по времени игровому и времени серверному.
 
Time т.е. активатор запустится сам в определённое время без участия человеков? Такое очень надо и очень давно, жду реализации.:nerd:
И ещё у меня есть такая идея, правда я незнаю реализуемая ли она на данный момент. В майнкрафте 1.7 добавилась команда tellraw позволяющая создавать кликабельный текст в чате, по нажатию на который можно запустить что нибуть (в перспективе запускать бы активаторы реа прямо из чата:)), но сам баккит пока что не поддерживает такую возможность. Возможно ли прикрутить эту возможность из плагина? Это открыло бы огромные огромные новые горизонты в плане возможностей реа и вариантов его использования. Если это реализуемо, и заинтересовало, то могу ещё описать как я вижу логику использования.

ПС: с оригинальной майнкрафтовской реализацией а знаком оч отдалённо:D, для создания такого текста(для теста, фана и не более того) пользовался автоматическим генератором по ссылке http://ezekielelin.com/minecraft/tellraw/
 
Последнее редактирование:
Time т.е. активатор запустится сам в определённое время без участия человеков? Такое очень надо и очень давно, жду реализации.:nerd:
И ещё у меня есть такая идея, правда я незнаю реализуемая ли она на данный момент. В майнкрафте 1.7 добавилась команда tellraw позволяющая создавать кликабельный текст в чате, по нажатию на который можно запустить что нибуть (в перспективе запускать бы активаторы реа прямо из чата:)), но сам баккит пока что не поддерживает такую возможность. Возможно ли прикрутить эту возможность из плагина? Это открыло бы огромные огромные новые горизонты в плане возможностей реа и вариантов его использования. Если это реализуемо, и заинтересовало, то могу ещё описать как я вижу логику использования.

ПС: с оригинальной майнкрафтовской реализацией а знаком оч отдалённо:D, для создания такого текста(для теста, фана и не более того) пользовался автоматическим генератором по ссылке http://ezekielelin.com/minecraft/tellraw/

Думаю что это реализуемо при помощи ProtocolLib, но лучше дождаться баккита - смысл тянуть зависимость, если будет офф. API?
 
Time т.е. активатор запустится сам в определённое время без участия человеков? Такое очень надо и очень давно, жду реализации.:nerd:
https://dl.dropboxusercontent.com/u/64799811/ReActions/ReActions.jar

v0.5.2/5(в разработке)
- Действию EXECUTE (а значит и команде /react run) добавлен параметр world:<мир1,мир2,мир3> — выбирает игроков в указанных мирах для отработки активатора.
- Добавлен активатор TIME_INGAME. Позволяет выполнить активатор для всех игроков (предполагается, что "адресатов" регулировать будем флагами активатора) в опредеоленное время. Пример добавления активатора командой /react add time_ingame <название> 10:00,12:15,13:43 — добавит активатор, который будет выполняться в 10:00 , 12:15 и 13:43 по внутриигровому времени.

Примечание: решено использовать минимальная единица измерения - одну минуту. Дело в том, что одна игровая минута занимает 16.6 тиков. Т.е. привязаться к секунде нормально не получится.

Пример такого активатора в файле (возможно формат будет меняться):
Код:
TIME_INGAME:
  timer:
    time-list:
    - 07:05
    - 07:10
    - 07:15
    - 07:20
    - 07:25
    flags: []
    actions:
    - MESSAGE=&6%curtime%
    reactions: []

Активатора привязанного к реальному (серверному) времени пока нет. Думаю над "форматом" описания времени. Пока в голову не приходит ничего лучше чем реализовать поддержку указания времени в формате CRON.
 
Можно ли что-то, что будет ложить предметы в контейнеры? Сундуки там, хопперы, и прочее?
Желательно с указанием слота ID слота и координат контейнера.
 
Хм, хм, я всё же надеялся что будет возможность использовать тайм без участия игроков. Обьяслю для чего я его хотел использовать: для востановления разрушенных сооружений, которые были построенны специально для того что бы их разрушали и разграбливали.) И получается.. что автоматически это по прежнему не реализовать. Разве что держать бота на сервере от имени которого будет выполнятсяя, но это немного не правильно.

И тут то ко мне пришла идея, а что если добавить в активатор тайм 1 флаг, который будет давать возможность запускать какой то активатор от имени вымышленного, несуществующего игрока? И при желании в необходимой координате.:)
 
Хм, хм, я всё же надеялся что будет возможность использовать тайм без участия игроков. Обьяслю для чего я его хотел использовать: для востановления разрушенных сооружений, которые были построенны специально для того что бы их разрушали и разграбливали.) И получается.. что автоматически это по прежнему не реализовать. Разве что держать бота на сервере от имени которого будет выполнятсяя, но это немного не правильно.

И тут то ко мне пришла идея, а что если добавить в активатор тайм 1 флаг, который будет давать возможность запускать какой то активатор от имени вымышленного, несуществующего игрока? И при желании в необходимой координате.:)

Виртуальный игрок - не хочу с этим даже связываться, хотя это возможно.
Сделаю немного по другому. Решил отказаться от активаторов TIME_*. Сделаю отдельный таймер, который будет производиться запуск активатора EXEC при наступлении заданного времени. А там подумаю как запускать активатор без привязки к игроку.
v0.5.2/6 (в процессе)
https://dl.dropboxusercontent.com/u/64799811/ReActions/ReActions.jar

- Удален активатор TIME_INGAME, навсякий случай удалите его из файлов
- Добавлен новый элемент - шедуллер, который может содержать множетсво таймеров, каждый из которых может в определенное время (серверное или игровое) запускать активатор типа EXEC (поддерживается полный синтаксис действия EXECUTE).
- Теперь активатор EXEC может выполняться от "пустогого" пользователя. Т.е. если при запуске активатора не были указаны игроки (посредством параметров player, region, world) то активатор будет всё равно выполнен; однако все действия и флаги, которые требуют наличия реального игрока (к примеру телепортация или проверка пермишенов) не будут выполнены. Данная функция требует дополнительное тестирование, возможно где-то вылезут "ноги" игроков :)

Таймеры
Командой таймеры добавляются так:
/react add timer <name> activator:<exec> time:<HH:MM,HH:MM|0_0/5_*_*_*_?> [player:<player>] [world:<world>]

Примеры
1. Добавляем внутриигровой таймер:
/react add timer dawntime activator:informdawn time:06:00 player:all

Этот таймер вызовет активатор informdawn в 06:00 (по игровому времени) применительно ко всем игрокам.
Игровое время, здесь берётся из первого мира.

2. Добавляем таймер реального времени:
/react add timer everytenmin activator:tenmin time:0_0/10_*_*_*_? player:all

Этот таймер будет вызывать активатор tenmin каждые десять минут (по серверному времени, т.е. в 00:00, 00:10, 00:20 и т.д.) применительно ко всем игрокам.
Время задается в формате cron. Для этого я воспользовался сторонней библиотекой, при этом есть один нюанс - отличие от стандарта. В стандартном кроне, минимальная единица времени - 1 минута, здесь же - одна секунда.
Если Вам нужно выполнять что-то, допустим два раза в секунду, то просто создавайте два таймера на одно время, выполняющие один и тот же активатор, просто во втором таймере укажаите задержку вызыва активатора равную 10 тикам.

Example Cron Expressions
CronTrigger Example 1 - an expression to create a trigger that simply fires every 5 minutes
"0 0/5 * * * ?"

CronTrigger Example 2 - an expression to create a trigger that fires every 5 minutes, at 10 seconds after the minute (i.e. 10:00:10 am, 10:05:10 am, etc.).
"10 0/5 * * * ?"

CronTrigger Example 3 - an expression to create a trigger that fires at 10:30, 11:30, 12:30, and 13:30, on every Wednesday and Friday.

"0 30 10-13 ? * WED,FRI"
CronTrigger Example 4 - an expression to create a trigger that fires every half hour between the hours of 8 am and 10 am on the 5th and 20th of every month. Note that the trigger will NOT fire at 10:00 am, just at 8:00, 8:30, 9:00 and 9:30
"0 0/30 8-9 5,20 * ?"

Note that some scheduling requirements are too complicated to express with a single trigger - such as "every 5 minutes between 9:00 am and 10:00 am, and every 20 minutes between 1:00 pm and 10:00 pm". The solution in this scenario is to simply create two triggers, and register both of them to run the same job.

Пример файла timer.yml
Код:
INGAME:
  dawntime:
    time: 06:00
    activator: informdawn
    player: all
SERVER:
  everytenmin:
    time: '0 0/10 * * * ?'
    activator: tenmin
    player: all

Примечание:
Пока нет команд на просмотр и удаление таймеров, командой /react reload они тоже не перезагружаются. Но формат файла уже меняться не будет. Т.е. уже можно пытаться что-то пробовать.
 
v0.6.0
http://dev.bukkit.org/media/files/765/534/ReActions.jar
  • New feature: Variables. You can save string, boolean and numerical values to variables (global and persnal variables supported) and use it later in any activator.
  • New action: VAR_SET — Create global variable. Parameters: id:<id> value:<value>
  • New action: VAR_PLAYER_SET — Create personal variable. Parameters: id:<id> value:<value>
  • New action: VAR_CLEAR — Remove global varibale. Parameter: id:<id>
  • New action: VAR_PLAYER_CLEAR — Remove personal varibale. Parameter: id:<id>
  • New action: VAR_INC — Increase global variable value. Parameters: id:<id> value:<value>
  • New action: VAR_PLAYER_INC — Increase personal variable value. Parameters: id:<id> value:<value>
  • New action: VAR_DEC — Decrease global variable value. Parameters: id:<id> value:<value>");
  • New action: VAR_PLAYER_DEC — Decrease personal variable value. Parameters: id:<id> value:<value>
  • New flag: VAR_EXIST — checks existance of global variable.Parameter: <id>");
  • New flag: VAR_PLAYER_EXIST — checks existance of personal variable. Parameter: <id>");
  • New flag: VAR_COMPARE — compares global variable with value. Parameters: id:<id> value:<value>");
  • New flag: VAR_PLAYER_COMPARE — compares personal variable with value. Parameters: id:<id> value:<value>");
  • New flag: VAR_GREATER — checks is global variable greater than given value. Parameters: id:<id> value:<value>");
  • New flag: VAR_PLAYER_GREATER — checks is personal variable greater than given value. Parameters: id:<id> value:<value>");
  • New flag: VAR_LOWER — checks is global variable lower than given value. Parameters: id:<id> value:<value>");
  • New flag: VAR_PLAYER_LOWER — checks is personal variable lower than given value. Parameters: id:<id> value:<value>");
  • New feature: Timers. You create a scheduled actions to execute EXEC-activator. Two types of timers could be used to create timer based on in-game time. And timers based on real (server time).
  • New command: /react add timer <name> activator:<exec> time:<HH:MM,HH:MM|0_0/5_*_*_*_?> [player:<player>] [world:<world>]
  • New command: /react list timer [page]
  • New command: /react remove timer <id>
  • New action:TIMER_STOP — Stops execution of timer. Parameter: timer:<timer id>
  • New action:TIMER_RESUME — Resumes execution of stopped timer. Parameter: timer:<timer id>
  • New flag: TIMER_ACTIVE — checks activity state of defined timer. Returns false if timer is paused. Parameter: <timer id>"
  • New activator: ITEM_WEAR. This activator is linked to defined item and executing every three seconds while player wears an item. /react add item_wear <item (name supported)>
  • New action: SHOOT — shoot (without projectile) in player view direction. Parameters: distance:<distance> singlehit:<true/false> damage:<damage amount>
  • New action: EXECUTE_STOP — stops execution of delayed EXEC-activator. Parameters: player:<player> activator:<exec-activator>
  • New action: EXECUTE_UNSTOP — resumes execution of stopped activator. Parameters: activator:<exec-activator> player:<player>
  • New flag: EXECUTE_STOP — checks stopping-state of delayed EXEC activator. Parameter: <exec-activator>
  • New action: RNC_SET_RACE — Set player's race (RacesAndClasses plugin required). Parameter: race:<race>
  • New action: RNC_SET_CLASS — Set player's class (RacesAndClasses plugin required). Parameter: class:<class>
  • New flag: RNC_RACE — checks player's race (RacesAndClasses plugin). Parameter: <race>
  • New flag: RNC_CLASS — checks player's class (Requires RacesAndClasses plugin). Parameter: <class>
  • New flag: WEATHER — checks weather state around player. Parameter: <rain/clear>

Видео демонстрирующее работу с плагином RacesAndClasses:
 
Последнее редактирование:
Страницей ранее я оговорился что баккит не поддерживает команду tellraw оказывается поддерживает, если просто не забыть включить её в конфиге.:D Так вот... как насчёт добавления чего то подобного в реакшенс? Это будет круче чем лекарство от рака.:)
Я уже щас немного поигрался совмещением реакшенс и tellraw, сделал это прицепив к активатору команду телрав от имени консоли, которая в свою очередь может запустить другие активаторы из чата, которые в свою очередь тоже что то выполнят .. и т.д.
 
Страницей ранее я оговорился что баккит не поддерживает команду tellraw оказывается поддерживает, если просто не забыть включить её в конфиге.:D Так вот... как насчёт добавления чего то подобного в реакшенс? Это будет круче чем лекарство от рака.:)
Я уже щас немного поигрался совмещением реакшенс и tellraw, сделал это прицепив к активатору команду телрав от имени консоли, которая в свою очередь может запустить другие активаторы из чата, которые в свою очередь тоже что то выполнят .. и т.д.
Зачем добавлять то, что есть в Vanill'е? Просто дублировать функции?
 
Зачем добавлять то, что есть в Vanill'е? Просто дублировать функции?
Зачем надо было вообще когда начинать с добавления телепортов? Ведь они уже есть в других плагинах и даже в ваниле.;) Это дублирование функций? Нет это не дублирование функций, это доведение их до ума. Конечно так как оно есть сейчас это уже можно соединять с реа и получать профит, но в плане редактирования это просто ужасно неудобно (относительно оедактирования простых активаторов), а так же из за такого соединения открывается уязвимость, которую дополнительно надо исправлять флагами, и которой могло бы и не быть, наверное, если бы не использовалась дополнительная команда, а использовался сразу плагин. Было бы афигенно если бы совмещать интерактивный чат с реа было удобно и что бы небыло уязвимостей, не правда ли?
 
Зачем надо было вообще когда начинать с добавления телепортов? Ведь они уже есть в других плагинах и даже в ваниле.;) Это дублирование функций? Нет это не дублирование функций, это доведение их до ума. Конечно так как оно есть сейчас это уже можно соединять с реа и получать профит, но в плане редактирования это просто ужасно неудобно (относительно оедактирования простых активаторов), а так же из за такого соединения открывается уязвимость, которую дополнительно надо исправлять флагами, и которой могло бы и не быть, наверное, если бы не использовалась дополнительная команда, а использовался сразу плагин. Было бы афигенно если бы совмещать интерактивный чат с реа было удобно и что бы небыло уязвимостей, не правда ли?
так а в чем проблема то? через Tellraw выполняем экзеки от консоли.
 
Назад
Верх