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

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

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

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

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @mishkagrishka
    Конкретно, флага определяющего в онлайне ли игрок или нет -- такого нет.
    В тоже время, зная задачу, можно предложить варианты решения.
     
  2. mishkagrishka

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

    Баллы:
    78
    @fromgate
    При вводе команды надо проверить на онлайн пользователя %arg1% ...
     
  3. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Поскорей бы обнову плагина и фикса недоработок :)
    Не хочется опять спускаться до глючных командных блоков :D
    1. Если с переменными и случайным выбором игроков ничего пока что делаться не будет, то для начала можно было бы добавить команду изменения личных\глобальных переменных по команде (чтобы можно было использовать из КБ)
    2. Будет ли нагрузка меньше, если вставлять поблочно через block_set, например, поле сплифа 50х50 (да, можно убиться, проставляя координаты). Но эффект-то будет или ещё глючнее станет?
     
    Последнее редактирование: 6 ноя 2014
  4. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Есть проблема с мобами:
    Сделаю спаун моба по кнопке:
    Код:
        actions:
        - cmd_console=scload load danj1_boss3 SmartWorld_MC_1.5.2 -832 38 -155
        - cmd_console=scload load danj1_boss_b3 SmartWorld_MC_1.5.2 -819 38 -153
        - cmd_console=scload load danj1_boss_b2 SmartWorld_MC_1.5.2 -819 38 -153
        - mob_spawn=type:zombie
        - MESSAGE=&a[&2Данж&a] &3Великое зло пробудилось!
        reactions: []
    Но этот самый моб сначала вообще не атакует (И его нельзя атаковать), а после атакует лишь создателя кнопки, т.е. лишь меня, хотя наносить ему урон могут все.
     
  5. Desperado

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

    Баллы:
    61
    Имя в Minecraft:
    FieryDruid
    А я вот жду прыжок в локацию (Velocity_jump), столько идей было, но, к сожалению, пока они только в голове)
     
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Это баг майнкрафта (ну или особенность), фактически происходит следующее - при рефреше чанка клиенту не отправляется информация о мобах (или что-то в этом роде). В итоге получается какой-то фантомный моб. Команда scload выполняется фоном. Т.е. фактически спавн моба происходит раньше чем построится данж, а уже потом производится строительство.

    Могу дать только такие рекомендации:
    1. Попробовать "противоположное" значение переменной fast-place в конфиге ScLoad.
    2. Спавнить моба через какое-то время после манипуляций с блоками. Допустим так:
    - ACTION_DELAYED=time:3s action:{mob_spawn type:zombie}
    Я тоже жду ;) Надо будет снова взяться за это действие. Хорошая вещь должна получиться по идее ;)

    Я тут вчера взялся за "невозможное" - за документацию. Нашел программу HelpNDoc - по идее можно в результате получить или help в формате chm или даже веб-страницу.
     
  7. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Добавьте для COMMAND не обязательную проверку на флаги региона, в котором находится игрок. Конкретно - allowed-cmds (запрещение всех команд, кроме...) и blocked-cmds (запрещение команд /a, /b, /c => a,b,c ) Получается, что можно юзать команды где угодно. А расставлять флаг для нескольких команд... Для нескольких регионов, которые ещё и добавляются...
     
  8. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Lyosha12
    А можно тут немного подробнее?
    Как работают эти флаги и чего нужно добиться.
     
  9. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Смотрите: на регионе стоит флаг allowed-cmds. Это значит, что все команды (вообще все) запрещены в этом регионе для т̶е̶х̶,̶ ̶к̶т̶о̶ ̶н̶е̶ ̶в̶л̶а̶д̶е̶е̶т̶ ̶р̶е̶г̶и̶о̶н̶о̶м всех. Но, должна быть хоть одна не запрещённая команда, иначе флаг нельзя будет прописать:
    /rg flag l1 allowed-cmds l,login,reg,register
    В регионе l1 запрещены все команды, кроме /l, /login, /reg и /register.

    Флаг blocked-cmds делает обратное: запрещает конкретные команды.
    /rg flag l1 blocked-cmds warp,home,/set,call
    В регионе l1 будут запрещены только команды /warp, /home, //set, /call.
    При чём, запрет распространяется и на аргументы. Не получится ввести /call Lyosha12, т.к. /call запрещён.
    Но, можно и запретить телепорт конкретно к игроку Lyosha12:
    /rg flag l1 blocked-cmds call Lyosha12,/set...

    То есть, можно запрещать\разрешать как отдельные аргументы, так и целые команды в регионах.
    Хотелось, чтобы ReActions дружил с этими правилами :)
    3. Есть активатор REGION, который должен ловить игроков с определённой переменной. Так же есть активатор JOIN, который так же нацелен на эту переменную. Что будет быстрее: сработает REGION или JOIN? Или же, сработает JOIN, но в процессе выполнения действий будет активирован REGION? Или наоборот? (Немного непонятно Вы говорите, что все действия будут выполнены за один тик... Все активаторы будут выполнены за один тик... Сколько это в миллисекундах? Если 20 тиков - это секунда, то один тик - 50 миллисекунд? То есть, что-то я делал не правильно, выставляя задержки? :D )
    4. Если указать, что игрок не должен держать ни один из некоторых предметов, то при записи так (как указано в мануалах), будет выполняться действие даже тогда, когда запрещённый предмет будет в руке:
    FLAG_SET=!ITEM:1 !ITEM:2 !ITEM:3
    Если же взять инверсию самого флага, то, вроде, всё работает как и должно:
    '!FLAG_SET=ITEM:1 ITEM:2 ITEM:3'
    Тогда как инвертировать отдельные параметры в FLAG_SET?
     
    Последнее редактирование: 6 ноя 2014
  10. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А что разве такой команды нету?!
    Вроде была команда:
    /react set var id:<Id> [player:<Player>] value:<Value>


    Если эффект и будет то при 50х50 он будет такой незаметный, что лучше не заморачиваться.


    Про последовательность не скажу. Скорее всего они будут обработаны в той последовательности, в какой были загружены в память. Может быть и так и так. Если же одному событию соответствует несколько активаторов - они все будут обработаны в течение одного тика. Но при этом, отдельные действия могут выполняться с задержкой в один тик (я честно говоря уже не помню какие, но по возможности отражу это в описании).

    Выполнить задержку по выполнению действия/активатора меньше одного тика стандартными средствами bukkit не получится (можно конечно это обойти, но по факту мы можем получить больше проблем чем удобства), поэтому задержка, скажем в 1ms трансформируется в 1 тик.


    Отдельные параметры-то и инвертируются.
    Вот смотрите у Вас в руке - камень (id -1)
    FLAG_SET - это "ИЛИ", что мы получаем в результате: FLAG_SET=!ITEM:1 !ITEM:2 !ITEM:3
    !ITEM:1 -- возвращает false (потому что у нас как ITEM:1 -- true)
    !ITEM:2 -- возвращает true
    !ITEM:3 -- возвращает true
    А раз у нас тут хоть один элемент - true, то и весь набор - true.

    Соответственно, в этой ситуации правильно инвертировать как раз весь FLAG_SET
     
  11. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Хм, ясно. Спасибо за ответ :)
    Действительно работает команда. А в /ra help её нет... А если не указывать ник игрока, то установится глобальная переменная?
    Да, ставится глобальная, но значения у её нет. Просто две одинарные кавычки:
    /react set var id:Test value:1
    ----
    Извиняюсь, не удалил предыдущую личную переменную, всё работает :)
    1. Насчёт таймеров. Их можно останавливать и запускать. При остановке он сбрасывается в изначальную позицию? Если так, то можно было бы добавить и паузу. А если наоборот, то сброс.

    Потом, что всё же значит формат времени?
    Код:
    0/1 * * * * ?
    0/1 - это повторять действие раз в секунду. Если поставить 5/1, то действие будет повторено пять раз за пять секунд, верно? А если поставить просто одно число без дроби?
    Звёздочки - секунды, минуты, часы, дни и недели (а месяцы и годы?). Верно? И что значит "?"?
    Извиняюсь, с английским туго, а гугл-переводчик иногда сложно понять :D
     
    Последнее редактирование: 7 ноя 2014
  12. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Остановка таймера - это по сути пропуск следующего запуска. Т.е. если к примеру у Вас таймер выполняется 14:00 ежедневно. То если, вы его остановили в 12:00, а в 13:00 он запустится нормально в 14:00.
    Если же вы его запустили в 15:00, то будем ждать до 14:00 следующего дня

    Что касается самого формата времени.
    Это по сути классический cron-формат. По русски можно прочитать его тут:
    http://www.nncron.ru/help/RU/working/cron-format.htm
    Единственное, имейте в виду, что в nnCron не поддерживаются секунды. Т.е. в ReActions на один параметр больше.
    Вообще же в плагине используется сторонняя библиотека, вот описание формата от них: http://quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/crontrigger
    Там есть примеры, по идее должно быть понятно.
     
  13. Lyosha12

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

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Вроде прояснилось что-то...
    1. А можно ли добавить "секундомер"? Его можно будет запускать, останавливать (сбрасывать), ставить на паузу. Флаг же будет проверять, достигло ли значение секундомера какой-то отметки, больше или меньше требуемого значения. Жизненно важно, чтобы был вывод значения секундомера.

    3. Активатору ITEM_CLICK не помешало бы несколько дополнений:
    • Тест на клик блоком по [воздуху|любому блоку|конкретному блоку\блокам], проверка установки блока, отмена установки блока.
    • Тест на клик предметом (не блоком) по [воздуху|любому блоку|конкретному блоку\блокам]; проверка использования этим предметом кнопок, табличек, рычагов, плит и так далее; проверка на изменение прочности предмета (флаг больше, меньше, равно (говорил ранее))
    3. Даже World Edit не может вставлять рамки... Они не существуют для него как блоки. Аналогично с картинами. Можно ли реализовать вставку рамок и картин через BLOCK_SET, с вытекающими сторонами света, блоком рамке и типом картины? (1.5.2 :) )
    4. Флаг проверки длительности нахождения игрока в полёте (свободном)? Я уже предлагал фиксировать время нахождения игрока на месте. Новая идея: фиксировать длительность нахождения игрока на блоке воздуха (или любом другом). То есть, расширяем возможности флага...

    5. Вопрос по теме: с увеличением времени падения игрока, урон, наносимый при приземлении, так же увеличивается. С действием velocity можно как подняться, так и опуститься вниз. Только, вот, всё то время, которое было затрачено на спуск, будет суммироваться для урона. Можно это как-то исправить? Давать игроку, например, перед приземлением эффект сопротивления урону 4 (DAMAGE_RESISTANCE) (полная защита на 4 уровне. Или пятом... Смотря где точка отсчёта). Выплывающий казус: если игрок приземлится на край блока, то плагин будет считать, что он всё ещё в воздухе, о чём я говорил ранее.

    Предлагаю вот что: некий активатор, который будет срабатывать как только игрок будет ходить (или зависать (на каком расстоянии?)) над определённым блоком. При чём, радиус проверки должен составлять один блок в плоскости. Но, если блок, входящий в радиус, не воздух, то его нужно исключать из проверки.
     
    Последнее редактирование: 8 ноя 2014
  14. alexandrage

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

    Баллы:
    173
    Плагин заброшен? Ошибками срет на спайготе 1.7.10.
    Код:
    org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1544]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-1544]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:249) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.PacketPlayInFlying.a(SourceFile:137) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.PacketPlayInPosition.handle(SourceFile:63) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:731) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1544]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1544]
    Caused by: java.lang.IncompatibleClassChangeError: Found interface com.sk89q.worldguard.protection.ApplicableRegionSet, but class 
     
  15. mishkagrishka

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

    Баллы:
    78
    Ошибка, кстати, на ReActions, на 1.7.2 такого не было вроде...
    Сейчас просто перешел на 1.7.10 (каулдрон)
    Код:
    [ReActions] Failed to parse cron format: 0 0/* * 30 * ?
    [06:43:12 WARN]: java.text.ParseException: Illegal cron expression format (java.lang.NumberFormatException: For input string: "*")
    [06:43:12 WARN]:        at org.quartz.CronExpression.buildExpression(CronExpression.java:496)
    [06:43:12 WARN]:        at org.quartz.CronExpression.<init>(CronExpression.java:276)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timer.parseTime(Timer.java:74)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timer.<init>(Timer.java:50)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.addTimer(Timers.java:126)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.addTimer(Timers.java:93)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.load(Timers.java:236)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.init(Timers.java:165)
    [06:43:12 WARN]:        at me.fromgate.reactions.ReActions.onEnable(ReActions.java:102)
    [06:43:12 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316)
    [06:43:12 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:368)
    [06:43:12 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:410)
    [06:43:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:415)
    [06:43:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:349)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:500)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:474)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:434)
    [06:43:12 WARN]:        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:329)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620)
    [06:43:12 WARN]:        at java.lang.Thread.run(Thread.java:745)
    [06:43:12 WARN]: java.text.ParseException: Illegal cron expression format (java.lang.NumberFormatException: For input string: "*")
    [06:43:12 WARN]:        at org.quartz.CronExpression.buildExpression(CronExpression.java:496)
    [06:43:12 WARN]:        at org.quartz.CronExpression.<init>(CronExpression.java:276)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timer.parseTime(Timer.java:74)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timer.<init>(Timer.java:50)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.addTimer(Timers.java:126)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.addTimer(Timers.java:93)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.load(Timers.java:236)
    [06:43:12 WARN]:        at me.fromgate.reactions.timer.Timers.init(Timers.java:165)
    [06:43:12 WARN]:        at me.fromgate.reactions.ReActions.onEnable(ReActions.java:102)
    [06:43:12 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316)
    [06:43:12 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:368)
    [06:43:12 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:410)
    [06:43:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:415)
    [06:43:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:349)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:500)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:474)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:434)
    [06:43:12 WARN]:        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:329)
    [06:43:12 WARN]:        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620)
    
     
  16. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @alexandrage
    Ошибка не целиком?
    В последней строке ругается на WG. Какая версия стоит?
    @mishkagrishka
    Проверьте таймеры. Ругается на формат строки cron: 0 0/* * 30 * ?

    Я так понимаю 0/* - вот ошибка.

    Какое время Вы хотите описать?
     
    Последнее редактирование: 9 ноя 2014
  17. mishkagrishka

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

    Баллы:
    78
    хочу сделать таймер с периодом 30 дней...запутался я в этом cron-формате.
     
  18. alexandrage

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

    Баллы:
    173
    6.0.
     
  19. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @alexandrage
    Скорее всего. Там поменяли API, причем очень плохим способом (это кстати, дает своеобразные предчувствия касательно будущего API Sponge :))

    Соответственно придется переписывать модули касающиеся работы с регионами. Я надеялся, что к финальному билду API всё же станет совместимым с предыдущими версиями, но уже beta-2 и результат тот же.
    Придется извращаться, чтобы сохранить совместимость и со старыми и с новыми версиями WG.
    Ну вот можно взять такие варианты:
    0 0 12 10 * ? – 12:00 каждого 10-го числа
    0 0 15 L * ? – 15:00 каждый последний день месяца
     
  20. mishkagrishka

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

    Баллы:
    78
    Да, спасибо, пока сделаю так.
     

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