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

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

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

  1. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ибо счетчик был с нуля ;) Исправил.


    Это ещё в релизе 0.9.5 исправлено, я этот тикет, кажется закрывал. Сейчас перепроверил - всё ок.

    Перестарался немного. Тоже исправил.

    Я проверю позже. Возможно через CALC можно.

    Сейчас простым способом никак. Я вижу только такое решение - создавать переменную. Если такая уже существует - бросать рэндом снова.
    Посмотрю, можно ли это будет как-то реализовать.

    Я думаю, это всё-таки будет переделанный PVP-активатор с параметром "причина смерти".
    0.9.5/2
    https://dl.dropboxusercontent.com/u/64799811/ReActions/ReActions.jar
    Почитайте тут:

    http://reactions.fromgate.ru/timers.htm

    В туториале, скорее всего, было что-то вроде:
    /react add timer clock timer-type:server timer:0/1_*_*_*_*_? activator:clock
     
  2. pasha5018

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

    Баллы:
    76
    Имя в Minecraft:
    tdmackey
    /react add REGION_ENTER dwarf dwarftp1
    что я не правильно сделал на этот раз ( регион dwarftp1 находится в главном мире, я там же нахожусь)? Пишет что "ошибка при создании активатора"
    Можете дать пример как все в конфиге выглядеть должно
     
  3. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    0.9.5/3
    https://dl.dropboxusercontent.com/u/64799811/ReActions/ReActions.jar
    Добавлено:
    • Действие VAR_TEMP_SET id:<ИмяПеременной> value:<Значение> — это действие создает (или перезаписывает) временную переменную, которая действует в пределах активатора. На текущий момент, это реально востребовано только в:
    • Новый активатор MOB_DAMAGE type:<Тип> name:<Имя> — активатор нанесения урона игроком по мобу. Полностью по параметрам и временным плейсхолдерам полностью аналогичен активатора MOB_KILL, добавился плейсхолдер %damage%. Если изменить значение этой временной переменной, то.... моб получит именно такой урон, вместо запланированного. Действие CANCEL_EVENT этим активатором также поддерживается.

    Ошибка, думаю, из-за того, что такой активатор уже существует.
    Сейчас нашёл недочет. Когда активаторы региона добавлялись командой, не пересчитывался кэш регионов и они были не видны. Если загружались из файла командой /react reload - всё нормально.
    Эту ошибку я исправил (качайте файл по ссылке выше).

    В файле с активаторами же, REGION_ENTER выглядит так:
    Код:
    REGION_ENTER:
      rgt2:
        region: test2
        actions:
        - MESSAGE=Вошли в регион test2
    

    В майнкрафте это вообще непонятно делается. К примеру, там есть специальный механизм для формирования страциц. Им сейчас выводится help к ReActions. У меня выглядит всё более-менее. Шрифт маленький, длина строки установлена в 60 символов.
    А на твоих скриншотах, я вижу, что влезло от силы символов 55 (шрифт большой).
    Хотя по логике количество символов должно быть одинаковым.

    Так что буду снижать длину строки - и тогда можно будет переписать функцию отправки сообщения, чтобы она отправляла через аналогичный механизм с длиной строки в 55 символов.
    @Lyosha12
    Сейчас проверил. Если включен режим unicode в строку влазит около ~ 80 символов. Если выключен ~ 55. Идиотизм.
    Могли бы легко сделать одинаковую длину.

    Даже не знаю, что делать. Наверное придётся обрезать по 55 символам.
    В общем, пожаловался моджангам: https://bugs.mojang.com/browse/MC-81876
    У кого есть возможность, проголосуйте пожалуйста (и напишите, что Вас это жутко раздражает).
    Может когда-то исправят...
     
    Последнее редактирование: 29 июн 2015
  4. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Привет! Снова я) Помогите мне пожалуйста. Я решил сделать авто-шахту через РА, но я столкнулся с проблемой, а именно незнание активатора TP
    Подскажите ка мне, как сделать так, что бы когда игрок находится в регионе mine1 его телепортировало туда, куда я хочу.
    Вот как я сделал:
    mine1:
    flags: []
    actions:
    - BLOCK_FILL=block:stone chance:100 region:mine1
    - BLOCK_FILL=block:coal_ore chance:10 region:mine1
    - BLOCK_FILL=block:iron_ore chance:7 region:mine1
    - BLOCK_FILL=block:gold_ore chance:5 region:mine1
    - BLOCK_FILL=block:diamod_ore chance:3 region:mine1
    - TP=loc:World,4102.5,71.0,4069.5,-129.899,39.6 region=world:mine1
    reactions: []
    Но не помогло :( А точнее не телепортирует.
    Конечно, если вы могли бы написать за меня и рассказать как это все реализовано, был бы премного благодарен.
    Вот что нужно мне:
    1) В регионе mine1 рандомно спавнятся руды:
    Добавляем в activators в exec вот это:
    mine1:
    flags: []
    actions:
    - BLOCK_FILL=block:stone chance:100 region:mine1
    - BLOCK_FILL=block:coal_ore chance:10 region:mine1
    - BLOCK_FILL=block:iron_ore chance:7 region:mine1
    - BLOCK_FILL=block:gold_ore chance:5 region:mine1
    - BLOCK_FILL=block:diamod_ore chance:3 region:mine1
    reactions: []
    После добавляем в timers вот это:
    mine1:
    time: 0/ * * * * ?
    paused: 'false'
    activator: mine1
    2) Во время регена всех игроков находящихся в регионе mine1 телепортирует на указанные координаты
    Добавляем в mine1 активатор TP
    3) Предупреждение за 5 минут и за 1 минут до регена
    Добавляем в activators в exec вот это:
    mine2:
    flags: []
    actions:
    - message=world:world &8[&9Авто-шахта&8] > &6Через &c&l5 минут &6&l обновиться шахта
    reactions: []
    И вот это:
    mine3:
    flags: []
    actions:
    - message=world:world &8[&9Авто-шахта&8] > &6Через &c&l1 минуту &6&l обновиться шахта
    reactions: []

    После добавляем в timers вот это:
    mine2:
    time: 0/600 * * * * ?
    paused: 'false'
    activator: mine2
    mine3:
    time: 0/840 * * * * ?
    paused: 'false'
    activator: mine3
    4) Сообщение что шахта обновлена
    Добавляем в activators в exec вот это:
    mine4:
    flags: []
    actions:
    - message=world:world &8[&9Авто-шахта&8] > &6Успешно обновлена
    reactions: []
    И в timers:
    mine4:
    time: 0/900 * * * * ?
    paused: 'false'
    activator: mine4
     
  5. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    То есть, сначала происходит расчёт получаемого урона мобу, потом производится запись этого урона во временную переменную %damage%, а потом урон присваивается? Но после того, как урон будет присвоен переменной, мы можем изменить его на свой, и только после этого он присвоится мобу? А сейчас можно только устанавливать новое значение? dec и inc ещё не реализованы?
    world.mine1
    "0/1 * * * * ?", возможно Вы хотели написать. Это будет запуск активатора EXEC каждую секунду. Это через каждый час: "0 0 0/1 * * ?"
     
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Да, обрабатывается событие баккита - нанесение урона мобу.
    Значение урона сразу же записывается во временную переменную damage.
    После выполнения всех действий, эта переменная перечитывается её значение записывается в значение урона в событии.

    Код:
    MOB_DAMAGE:
      cowkick:
        mob-type: COW
        mob-name: ''
        actions:
        - MESSAGE=&6Не бей коров! Они дают молоко!
        - VAR_TEMP_SET=id:damage value:10000
        - MESSAGE=&4%damage% - корову разрывает в клочья!
    

    INC/DEC ещё не делал. Надо?
     
  7. Korvinius

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

    Баллы:
    88
    :good: круто, спасибо большое!!! теперь действительно есть смысл начинать обновляться,хотя ради всех этих нововвений придется нуоочень многое изменять! :)

    @fromgate у вас реально творческий подъем в полном разгаре, обновления по несколько раз на день!!! :good:
     
  8. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Конечно! Это же будет основой для многих вариаций оружия и сможет разнообразить эффекты с зачарованиями!
     
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Надо наверное добавить ещё параметр item этому активатору - чтобы знать, что урон нанесён именно этим оружием. Правда будет браться оружие в руках игрока (а это не факт, что урон был нанесён именно им)
     
  10. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    А как ещё можно нанести урон мобу, не используя оружие в руке, чтобы урон идентифицировался как исходящий от игрока? Брошенное зелье?
     
  11. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Зелье - пройдёт нормально. В том плане, что в руках будет не меч, а фигня какая-то.

    А вот если действие SHOOT влупить или (моим плагином Laser) или каким-то плагином (который грамотно работает с событиями) мы получим урон, а в руках у игрока не факт, что будет источник урона.

    Предположим мы увеличиваем урон от определенного меча.

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

    Но вообще это довольно специфично, так что наверное, можно не заморачиваться
    Спасибо ;)
    На самом деле я и до этого много ковырял. Больше /30 подверсий у меня ни разу по моему не было (это я про процесс сотворения плагина).

    Но я думаю, 0.9.6 сделаю (собственно если ничего нового не вылезет в части ошибок, то это будет или сегодня или завтра) - у меня будет новый плагин, который возможно будет потом работать в связке с ReActions.
     
  12. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    Помогите мне, пожалуйста. Ничего не изменилось! Я изменил regionwolrd:mine1
    получилось:
    mine1:
    flags: []
    actions:
    - BLOCK_FILL=block:stone chance:100 region:mine1
    - BLOCK_FILL=block:coal_ore chance:10 region:mine1
    - BLOCK_FILL=block:iron_ore chance:7 region:mine1
    - BLOCK_FILL=block:gold_ore chance:5 region:mine1
    - BLOCK_FILL=block:diamod_ore chance:3 region:mine1
    - TP=loc:World,4102.5,71.0,4069.5,-129.899,39.6 region=World.mine1
    reactions: []
    Но все ровно не телепортирует!
     
  13. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Lyosha12
    Кстати, результат /react add <активатор> теперь выглядит посимпатичнее
    @BrainRTP
    Попробуйте вот так:
    - TP=loc:World,4102.5,71.0,4069.5,-129.899,39.6

    и поставьте действие TP первым - чтобы сначала телепортировало, а потом заливало.
     
  14. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    @formagate
    Эм... Мне нужно что бы телепортировало игроков находящихся в регионе mine1
    Ой, в нике ошибся.
    Кстати, а у вас есть это: http://reactions.fromgate.me/index.html
    На русском языке?
     
  15. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @BrainRTP
    http://reactions.fromgate.ru/index.html

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

    Нужно сделать активатор типа EXEC с одним действием TP.
    А уже этот активатор вызвать с параметром player:{region:World.mine1}
     
  16. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Надо всё-таки его как-нить установить и помучать, что за зверь, но все вот эти ваши команды/параметры и прочее в постах выше с ума сводят :D
     
  17. BrainRTP

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

    Баллы:
    76
    Имя в Minecraft:
    BrainRTP
    @fromgate
    Извините, но я не понял как это реализовать. А точнее как вызвать с этим параметром... :(
    Не могли бы вы по подробнее рассказать как сделать?
     
  18. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Действием вызываешь активатор EXEC:
    execute=activator:EXEC region:World.mine1
    А в этом EXEC пишешь команду на телепортацию в нужную локацию, не указывая регион, так как EXEC выполнится для всех игроков, которые были на тот момент в регионе World.mine1
    Вообще, активатор MOB_DAMAGE и увеличение урона с помощью действия и плейсхолдера будет происходить тогда, когда все флаги вернут true. То есть, если у игрока не будет меча, то и урон не будет увеличиваться.

    Или Вы имеете в виду, что урон может наносится не мечом, но приписывается ему в как событие? И тогда мы будем увеличивать урон именно от меча, а не другой, навязанный сторонним плагином. В итоге, эффекта от действия увеличения временной переменной не будет. Я правильно понял?
    ---
    Хотя, какая вообще разница, чем был нанесён урон? На что это влияет? Нам же нужно только модифицировать конечный результат для моба. А случаи, когда этого делать не надо, можно описать флагами.
    А вот это странно:
    Код:
      Activator-COMMAND-5:
        override: false
        regex: true
        command: О плейсхолдерах(\s+\S+){3,}
        flags: []
        actions:
        - MESSAGE=&r
        - MESSAGE=&c[&e▼&c]&3------------------------------------------------&c[&e▼&c]
        - MESSAGE=Итак, чтобы узнать, какой аргумент ввёл игрок в команде,
        - MESSAGE=нужно в действиях указать &aплейсхолдер&r -
        - MESSAGE=&d%&darg&c<&3НомерНужногоАргумента&c>&d%
        - MESSAGE=Например, второй аргумент в данной команде был "&d%arg2%&r".
        - MESSAGE=А вот пятый, если он был:&r "&d%arg5%&r".
        - MESSAGE=&r
        - MESSAGE=Можно вывести все аргументы после конкретного:&d
        - MESSAGE=&d%&dargs&c<&3НомерНужногоАргумента&c>&d%&r.
        - MESSAGE=Пример. Это все аргументы, которые были после третьего,
        - MESSAGE=не включая третий аргумент:&r "&d%args3%&r"
        - MESSAGE=&r
        - MESSAGE=Можно вывести все аргументы, кроме команды - &d%&dargs%&r:&e
        - MESSAGE="&d%args%&r"
        - MESSAGE=&r
        - MESSAGE=Завершая тему плейсхолдеров в командах, можно узнать
        - MESSAGE=количество аргументов - &d%&dArgsCount%&r:&a %ArgsCount%
        - MESSAGE=&r
        - MESSAGE=Рассмотрим второй вариант создания активатора &bCOMMAND&r.
        - MESSAGE=Наберите &e/продолжение 2 &2ЛюбойАргумент
        reactions: []
    
    upload_2015-6-29_20-28-9.png

    @fromgate, есть одна интересная диллема с активатором REGION. Когда я просто стою в регионе, его запуск проходит по секундному плану. Однако он запускается всегда, если я переступаю с блока на блок, игнорируя секундный интервал. Это, конечно, хорошо для быстрого запуска EXEC'a на ивенте для проверки, участвуют ли ещё нужные игроки, но столь быстрая проверка так же может вызывать падения TPS.

    Так вот, может можно было бы дополнить активатор выбором типа проверки: поблочно или по времени, что указано в конфиге? Кстати о времени. Можно было бы ещё сделать возможность выбирать его в самом активаторе.
    Нет:
    Код:
        - MESSAGE=&r
        - MESSAGE=&c          [&e▼&c]&3-----------------------------------&c[&e▼&c]
        - MESSAGE=Этот активатор реагирует на текст. Разный текст. В разных вариациях. Например, если Вы видите сообщение "Привет, это я", то Вам можно дать слиток золота.
        - MESSAGE=&r
        - MESSAGE=Рассмотрим сам активатор и его аргументы. Создание:
        - MESSAGE=
    
    upload_2015-6-29_23-27-6.png

    Ещё трабл с переносом строки:
    Код:
        - MESSAGE=&r
        - MESSAGE=&c          [&e▼&c]&3-----------------------------------&c[&e▼&c]
        - MESSAGE=Этот активатор реагирует на текст. Разный текст. В разных вариациях. Например, если Вы написали сообщение "&aПривет, это я&r", то Вам можно дать слиток золота. Кстати, можете это сделать :)
        - MESSAGE=&r
        - MESSAGE=Рассмотрим сам активатор и его аргументы. Создание:&r
        - MESSAGE=&e/ra add &bMESSAGE &2Activator-Name &6[&dsource:&3ТипИсточника&6] &6[&dtype:&3СпособСравнения&6] &6[&dmask:&3ШаблонСообщения&6]
        - MESSAGE=&r
        - MESSAGE=Рассмотрим отдельно все аргументы. Напишите соответствующие команды:&r
        - MESSAGE=&e/О типах источника
        - MESSAGE=&e/О способах сравнения
        - MESSAGE=&e/О допустимом шаблоне сообщения
        - MESSAGE=&r
        - MESSAGE=На закуску предлагаю почитать о производимых активатором плейсхолдерах:&r &e/О плейсхолдерах в &bMESSAGE
        - MESSAGE=&r
        - MESSAGE=Ваше задание после изучения активатора &bMESSAGE&r:&r
        - MESSAGE=&e/О задании для &bMESSAGE
    
    upload_2015-6-30_0-0-45.png

    @fromgate, а при использовании типа маски REGEX в активаторе MESSAGE, по какому принципу дополнительно идёт сравнение? По EQUAL или по CONTAINS?
    А здесь должно быть EQUALS, а не EQUAL? http://reactions.fromgate.ru/message.htm
    @fromgate, а как насчёт плейсхолдера, который бы содержал число регионов, в которых игрок числится владельцем, жителем и... Ну, сумму можно через CALC сделать. Можно было бы организовать "аренду" регионов у кого-то... :D
    А тут что?
    upload_2015-6-30_2-47-12.png

    Новые плейсхолдеры в активаторе MESSAGE не распознают числа корректно (или я не понимаю что такое "целые" и "дробные" числа?):
    Код:
      Activator-MESSAGE-10:
        mask: За $50 купил 9 слив по $5.4. Осталось $1,4, то есть ещё $1 40 центов.
        type: EQUAL
        source: CHAT_INPUT
        flags:
        - DELAY_PLAYER=Activator-MESSAGE-10
        actions:
        - MESSAGE=&r
        - MESSAGE=&c          [&e▼&c]&3-----------------------------------&c[&e▼&c]
        - DELAY_PLAYER=150ms/Activator-MESSAGE-10
        - MESSAGE=Рассмотрим составляющие фразы "&eЗа $50 купил 9 слив по $5.4. Осталось $1,4, то есть ещё $1 40 центов.&r":&r
        - MESSAGE=&r
        - MESSAGE=Пятое слово:&r "&a%word5%&r";
        - MESSAGE=Третье целое число:&r "&a%int3%&r";
        - MESSAGE=Третье число:&r "&a%num3%&r";
        - MESSAGE=Количество слов:&r &a%word-count%&r;
        - MESSAGE=Количество целых чисел:&r &a%int-count%&r;
        - MESSAGE=Количество чисел:&r &a%num-count%&r.
        reactions: []
    
    upload_2015-6-30_6-1-30.png
     
    Последнее редактирование: 30 июн 2015
  19. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    0.9.5
    http://adf.ly/1K0nlW
    Пробую adf.ly - интересно там хоть что-то капает? ;)

    Ситуацию с активатором REGION исправил. Теперь всё как надо - всегда время указанное в конфиге.
    Задавать время в качестве параметра активатора - неплохая идея. Попробую добавить.
     
  20. ZombiE_EGIK

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

    Баллы:
    66
    Имя в Minecraft:
    ZombiE_EGIK
    Добрый день.
    Есть ли возможность организовать ограничение инвентаря, но при этом возможность его расширить?
    Что я имею ввиду:
    Допустим половина инвентаря заполнена паутиной которую нельзя убрать или заменить на другой предмет. Но если я в свободный слот положу, например, алмаз с названием "Расширение инвентаря", то от паутинки освободится, например, 3 слота. Если положу в инвентарь еще один алмаз "Расширение инвентаря", то освободится еще 3 слота. Если же положу алмаз "Расширение инвентаря 2", то освободится 6 слотов.
    Так же инвентарь должен быть ограничен только в одном мире, в других все должно быть как обычно.
    Разделением инвентаря занимается плагин - ApatiteControler (можно ли сделать с помощью ReActions? :rolleyes: )
    Создание нескольких миров - MultiWorld
     

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