1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 16 июл 2013.

  1. FedorNogopletov

    FedorNogopletov Старожил Пользователь

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

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ты мне помог, твою же налево! Мне как-раз требовался плагин для контроля мобами... Посмотрим, но ситизенс форевер

    PS. Не, не то...
    Ладно друзьями, удачи! Завтра отпишусь, как все получается :) (По сути еще полчасика можно посидеть).
    Скажу только одно - мне нужна "вечная" проверка флагов, без вмешательства игроков
     
    Последнее редактирование: 23 дек 2013
  3. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Это как? Давай на примере.
     
    DavidShabaev нравится это.
  4. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Намудрил, просто нужно сделать активатором флаг WALK_BLOCK

    ЗЫ. Сделал скриншот карты будующей игры:
    [​IMG]
    Пойду спать, завтра дела...
     
    Последнее редактирование: 24 дек 2013
    Hephest нравится это.
  5. FedorNogopletov

    FedorNogopletov Старожил Пользователь

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

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Совсем запутал xD

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

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    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 - сохраняем (тогда предмет не одевается))

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

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

    На спавне, в активаторе, в котором происходит возврат назад,
    проверяем флагом есть ли такая переменная:
    Флаг: VAR_PLAYER_EXIST temploc
    и телепортируем его обратно, после чего удаляем переменную
    TP %varp:temploc%
    VAR_PLAYER_CLEAR temploc
    Задать конкретное время пока нельзя :( Там время относительное - т.е. допустим 10 часов начиная с текущего времени :(
     
    Sasha2dx и FedorNogopletov нравится это.
  8. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    fromgate, можно подкинуть идей?

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

    :D

    Ну а если попробовать на 20 часов, то как нужно правильно все сделать?
     
    Black-UK-Lord и Сникерсни нравится это.
  9. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Я наверное сделаю активаторы TIME и TIME_SERVER - чтобы "тикало" по времени игровому и времени серверному.
     
  10. Sasha2dx

    Sasha2dx Активный участник Пользователь

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

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

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Думаю что это реализуемо при помощи ProtocolLib, но лучше дождаться баккита - смысл тянуть зависимость, если будет офф. API?
     
  12. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    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.
     
    Sasha2dx нравится это.
  13. Sirse

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Можно ли что-то, что будет ложить предметы в контейнеры? Сундуки там, хопперы, и прочее?
    Желательно с указанием слота ID слота и координат контейнера.
     
    Sasha2dx нравится это.
  14. Sasha2dx

    Sasha2dx Активный участник Пользователь

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

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

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Виртуальный игрок - не хочу с этим даже связываться, хотя это возможно.
    Сделаю немного по другому. Решил отказаться от активаторов 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 они тоже не перезагружаются. Но формат файла уже меняться не будет. Т.е. уже можно пытаться что-то пробовать.
     
  16. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    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:
     
    Последнее редактирование: 7 янв 2014
    Sasha2dx, FedorNogopletov и Jers нравится это.
  17. Sasha2dx

    Sasha2dx Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Sasha2dx
    Страницей ранее я оговорился что баккит не поддерживает команду tellraw оказывается поддерживает, если просто не забыть включить её в конфиге.:D Так вот... как насчёт добавления чего то подобного в реакшенс? Это будет круче чем лекарство от рака.:)
    Я уже щас немного поигрался совмещением реакшенс и tellraw, сделал это прицепив к активатору команду телрав от имени консоли, которая в свою очередь может запустить другие активаторы из чата, которые в свою очередь тоже что то выполнят .. и т.д.
     
  18. FedorNogopletov

    FedorNogopletov Старожил Пользователь

    Баллы:
    173
    Зачем добавлять то, что есть в Vanill'е? Просто дублировать функции?
     
  19. Sasha2dx

    Sasha2dx Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Sasha2dx
    Зачем надо было вообще когда начинать с добавления телепортов? Ведь они уже есть в других плагинах и даже в ваниле.;) Это дублирование функций? Нет это не дублирование функций, это доведение их до ума. Конечно так как оно есть сейчас это уже можно соединять с реа и получать профит, но в плане редактирования это просто ужасно неудобно (относительно оедактирования простых активаторов), а так же из за такого соединения открывается уязвимость, которую дополнительно надо исправлять флагами, и которой могло бы и не быть, наверное, если бы не использовалась дополнительная команда, а использовался сразу плагин. Было бы афигенно если бы совмещать интерактивный чат с реа было удобно и что бы небыло уязвимостей, не правда ли?
     
  20. ValeraSTK

    ValeraSTK Активный участник Пользователь

    Баллы:
    78
    так а в чем проблема то? через Tellraw выполняем экзеки от консоли.
     

Поделиться этой страницей