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

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

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

  1. DyX

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

    Баллы:
    76
    Имя в Minecraft:
    GoODsPie
    Привет!
    Вообщем, решил создать систему HP на ReActions, принцип прост, при получении урона это действие отменяется, а у переменной Health отнимается значение Damage. Работает как часы, но есть проблема. Отталкивание. А точнее - его отсутствие. Из-за отмены действия Bukkit не идёт урон, а следовательно - отталкивание. Это не удобно, кажется, будто ты завис...

    Как мне лучше реализовать систему, что бы остался эффект отталкивания? P.S. Не предлагайте вернуться к системе майна + хил, ибо некоторые виды урона будут наносить Игроку и по 10К дамаги, что его просто шотнет, не успев отхилить..

    UPD: Не могу понять, как работает активатор ACTION_DELAYED
    Вот, для теста создал ACTION_DELAYED=time:3 action:{BROADCAST=321}, и ничего не выходит...
     
    Последнее редактирование: 19 дек 2017
  2. DyX

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

    Баллы:
    76
    Имя в Minecraft:
    GoODsPie
    Можно просто при выходе отчищать инвентарь. Замечательно работает!
     
  3. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Эдак летом выкладывал тут вариант "искусственного" отталкивания для действия shoot(до введения официального). Может пригодится вам..? Делал это утром после бессонной ночи, но вроде работало.
    ______________________________

    В action:{} знак равно не требуется, т.е. action:{BROADCAST 321}
     
  4. DyX

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

    Баллы:
    76
    Имя в Minecraft:
    GoODsPie
    Скрипт замечательно работает, но что делать с мобами?
    С мобами не работает отталкивание
     
  5. Lalki

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

    Баллы:
    66
    В действии shoot есть отталкивание
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Тут подумать надо.
    Как вариант - при ударе спавнить какую-нибудь невидимую сущность с особым именем на точной локации моба, и от лица консоли писать
    /minecraft:execute @e[type=ваниальный_тип,name=имя] ~ ~ ~ entitydata @e[r=0.1] {Motion:[%var:shoot%]}
    а после удалять/убивать её.
    Не уверен, что r поддерживает вещественные числа. Переменная shoot из того скрипта, наверняка вы уже заменили её чем-то другим.

    Но я бы посоветовал уже переходить на Java-код. Скрипты для таких дел как куча маленьких костылей.
     
  7. gamaleev0071

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

    Баллы:
    103
    ребят подскажите как сделать активатор (когда предмет в руке (определенный) в количестве i>1)
     
  8. OneDisik

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

    Баллы:
    66
    Кстати, возможно пора добавить в ваш плагин, действия связанные с рыбалкой, чтобы было проще создавать квесты с рыбалкой, или какие-нибудь фичи. Отслеживание количества выловленной рыбы и т.д.
     
  9. Neosha

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

    Баллы:
    66
    Подробнее... Активатор на "если у игрока больше 1 предмета, то..."?
     
  10. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Не уверен, что вам нужно, но вот пример разных активаторов с проверкой на наличие в руке двух и более костей
    Код:
    EXEC:
      Item1:
        flags:
        - item=type:bone amount:2
        actions:
        - message=Ого, у вас более одной кости в руке!
        reactions:
        - message=Увы, вам требуется больше одной кости
    ITEM_CLICK:
      Item2:
        item: type:bone amount:2
        actions:
        - message=Вы кликнули костями!
    ITEM_HOLD:
      Item3:
        item: type:bone amount:2
        actions:
        - message=Вы держите две или более костей!
     
  11. gamaleev0071

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

    Баллы:
    103
    более мение то что нужно , у меня мод баганый , скажем так кейсы , и они стакуются когда выдаешь их черех essentials kit , они лежат стопкой в инвенторе , и если открыть кейс пака они в стопке то они все станут не валидными ...... ,хочу сделать предупреждение игроков если у них больше 1 кейса в руке
     
  12. gamaleev0071

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

    Баллы:
    103
    UPD: добавить вариацию активаторта с количеством предмета и логическими операторами<=>
     
  13. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Баг1: В действии "if_else" условие "if" переносит регулярное выражение в нижний регистр, из-за чего невозможно использовать, например, "\S"(можно заменить на "[^\s]", но как-то это грустно).
    Баг2: В действии "power_set" не работает "power:toggle", к тому же действие полностью не работает с новыми дверьми.
     
  14. NikaMuller

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

    Баллы:
    68
    Имя в Minecraft:
    NikaMuller
    Призываются БОГИ условий, есть команда и на нее два флага, проверка группы и проверка денег. Как сделать это через if_else? Если человек не входит в группу, то он может не платить за команду, если он в группе и у него есть н-ая сумма то команда выполняется. Как я понимаю if_else с флагами не работает?
     
  15. SOHIGH

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

    Баллы:
    76
    Вроде как - работает, но там надо в flags флаг указывать.
    Вообщем - не знаю.
    Попробуй использовать сторонний активатор EXEC с заданными флагами.
    - EXECUTE=activator:FLAG_MONEY
     
  16. Neosha

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

    Баллы:
    66
    @fromgate Конфликт с Креатив Контролем:
    Код:
    Could not pass event EntityDamageByEntityEvent to CreativeControlByKubqoA v2.2.3
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[survival.jar:git-Spigot-21fe707-e1ebe52]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[survival.jar:git-Spigot-21fe707-e1ebe52]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) ~[survival.jar:git-Spigot-21fe707-e1ebe52]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) ~[survival.jar:git-Spigot-21fe707-e1ebe52]
            at me.fromgate.reactions.util.GodMode.setEventGod(GodMode.java:88) ~[?:?]
            at java.lang.Iterable.forEach(Iterable.java:75) [?:1.8.0_151]
            at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080) [?:1.8.0_151]
            at me.fromgate.reactions.util.GodMode$1.run(GodMode.java:29) [ReActions.jar:?]
            at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [survival.jar:git-Spigot-21fe707-e1ebe52]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
    Caused by: java.lang.NullPointerException
     
  17. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Примерно так, наверно? Подробнее о IF_ELSE
    Код:
    COMMAND:
      ICanPayMoney:
        override: false
        regex: false
        command: paymoney
        flags:
        - group=dontpay
        actions:
        - message=&aДля вас эта комманда &f&nабсолютно&a бесплатна!
        reactions:
        - if_else=if:{%money%>500} then:run:actions:{action1:{money_pay=500} action2:{message=&aВы успешно заплатили &f&n$500&a за целое ничего!}} else:run:actions:{action1:{message=&cУ вас недостаточно валюты!}}
    Иначе, как и советовали выше, использовать дополнительный активатор и плейсхолдер %group_flag%, но на мой взгляд, это лишнее.
     
  18. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Neosha
    Отключайте god-mode в конфиге.
     
  19. Neosha

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

    Баллы:
    66
    Спасибо
     
  20. Dumzdeil

    Dumzdeil Участник Пользователь

    Баллы:
    31
    @fromgate добавьте в плагин, пожалуйста, следующее:
    1) Постоянный плейсхолдер %PLAYER_REGION% - название региона и мира (мир.регион), в котором находится игрок. Необходимо для проверки различных флагов (worldguard) текущего региона во флаге REGION_STATE или для выхода в глобальный регион (из любого региона worldguard). Например:
    /ra add 123 f region_state %PLAYER_REGION%.pvp.allow
    или
    /ra add 123 f flag_set region_state:%PLAYER_REGION%.pvp.allow region_state:%PLAYER_REGION%.pvp.none
    Можно было бы добавить отдельно %player_region% и %player_world%, но практически везде используется "мир.регион", так что не вижу в этом смысла.
    2) Активатор WORLD_SWITCH [ActivatorId] [мир] . Будет очень полезная функция. Например для запрета телепортации к игроку в определенном мире:
    /ra add WORLD_SWITCH 234 world2
    /ra add 234 WORLD_SWITCH f !group player
    /ra add 234 a cmd_console spawn %player%
    3) Действия TITLE и ACTIONBAR для вывода текста на полный экран и в панель быстрого доступа (если это возможно)
     

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