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

@Jeff_Michael по моему я знаю в чём причина. Постараюсь исправить.
Был бы очень признателен Вам.

Парни, как ограничить команду give?
Что бы у опр. группы, эта команда могла выполняться раз в 5 минут?
Я бы сделал так:
Код:
COMMAND:
  give_perm:
    override: true
    regex: false
    command: give
    flags:
    - PERM=give.delay
    actions:
    - CANCEL_EVENT=true
    - EXECUTE=activator:give_delay
EXEC:
  give_delay:
    flags:
    - DELAY_PLAYER=id:give_delay
    actions:
    - CMD=give %arg1% %arg2% %arg3% %arg4% %arg5% %arg6% %arg7% %arg8% %arg9% %arg10%
    - DELAY_PLAYER=id:give_delay time:5m
    reactions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&6До следующего использования команды осталось: &e%delay-left-mm%мин. %delay-left-ss%сек.'

Выдаёте все права для ввода команды /give и пользователь может вводить команду сколько угодно, выдаёшь к этому набору ещё и пермы give.delay и тогда пользователь сможет вводить команду лишь через каждые 5 минут.

Если надо именно группе присвоить данную функцию, то меняете флаг PERM=give.delay на флаг GROUP=НазваниеГруппы
 
Последнее редактирование:
Был бы очень признателен Вам.


Я бы сделал так:
Код:
COMMAND:
  give_perm:
    override: true
    regex: false
    command: give
    flags:
    - PERM=give.delay
    actions:
    - CANCEL_EVENT=true
    - EXECUTE=activator:give_delay
EXEC:
  give_delay:
    flags:
    - DELAY_PLAYER=id:give_delay
    actions:
    - CMD=give %arg1% %arg2% %arg3% %arg4% %arg5% %arg6% %arg7% %arg8% %arg9% %arg10%
    - DELAY_PLAYER=id:give_delay time:5m
    reactions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&6До следующего использования команды осталось: &e%delay-left-mm%мин. %delay-left-ss%сек.'

Выдаёте все права для ввода команды /give и пользователь может вводить команду сколько угодно, выдаёшь к этому набору ещё и пермы give.delay и тогда пользователь сможет вводить команду лишь через каждые 5 минут.

Если надо именно группе присвоить данную функцию, то меняете флаг PERM=give.delay на флаг GROUP=НазваниеГруппы
Ой, спасибо тебе огромное! Сейчас чекним..
 
Был бы очень признателен Вам.


Я бы сделал так:
Код:
COMMAND:
  give_perm:
    override: true
    regex: false
    command: give
    flags:
    - PERM=give.delay
    actions:
    - CANCEL_EVENT=true
    - EXECUTE=activator:give_delay
EXEC:
  give_delay:
    flags:
    - DELAY_PLAYER=id:give_delay
    actions:
    - CMD=give %arg1% %arg2% %arg3% %arg4% %arg5% %arg6% %arg7% %arg8% %arg9% %arg10%
    - DELAY_PLAYER=id:give_delay time:5m
    reactions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&6До следующего использования команды осталось: &e%delay-left-mm%мин. %delay-left-ss%сек.'

Выдаёте все права для ввода команды /give и пользователь может вводить команду сколько угодно, выдаёшь к этому набору ещё и пермы give.delay и тогда пользователь сможет вводить команду лишь через каждые 5 минут.

Если надо именно группе присвоить данную функцию, то меняете флаг PERM=give.delay на флаг GROUP=НазваниеГруппы
Хм... При вводе команды /give Angelock 264 64 или /give 264 64 в ответ - "Неизвестное название предмета %arg2%
 
У меня всё отлично работает. Спавню свина через essentials /spawnmob pig 1
Нашел проблему, кажется (но не решил). В логе сервера пишет
Код:
[21:43:58 ERROR]: Could not pass event MobKillEvent to ReActions v0.10.1
Код:
[21:43:58 ERROR]: Could not pass event MobKillEvent to ReActions v0.10.1
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at me.fromgate.reactions.event.EventManager.raiseMobKillEvent(EventManager.java:112) [ReActions.jar:?]
        at me.fromgate.reactions.RAListener.onDropLoot(RAListener.java:238) [ReActions.jar:?]
        at sun.reflect.GeneratedMethodAccessor349.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.aufdemrand.sentry.SentryInstance.die(SentryInstance.java:556) [Sentry.jar:?]
        at net.aufdemrand.sentry.SentryInstance.onDamage(SentryInstance.java:1232) [Sentry.jar:?]
        at net.aufdemrand.sentry.SentryListener.onDamage(SentryListener.java:270) [Sentry.jar:?]
        at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEvent(CraftEventFactory.java:86) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:536) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:449) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:568) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityLiving.d(EntityLiving.java:1092) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityHuman.d(EntityHuman.java:853) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:733) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:794) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:481) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.citizensnpcs.npc.entity.EntityHumanNPC.damageEntity(EntityHumanNPC.java:106) [Citizens.jar:?]
        at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:995) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1048) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1289) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_60]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_60]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit188.jar:git-Bukkit-efe04b8]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
Caused by: java.lang.NullPointerException
        at me.fromgate.reactions.actions.ActionItems.dropItems(ActionItems.java:324) ~[?:?]
        at me.fromgate.reactions.actions.ActionItems.execute(ActionItems.java:65) ~[?:?]
        at me.fromgate.reactions.actions.Action.executeAction(Action.java:66) ~[?:?]
        at me.fromgate.reactions.actions.Actions.performAction(Actions.java:185) ~[?:?]
        at me.fromgate.reactions.actions.Actions.executeActions(Actions.java:176) ~[?:?]
        at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:154) ~[?:?]
        at me.fromgate.reactions.activators.MobKillActivator.activate(MobKillActivator.java:75) ~[?:?]
        at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:231) ~[?:?]
        at me.fromgate.reactions.activators.Activators.activate(Activators.java:330) ~[?:?]
        at me.fromgate.reactions.RAListener.onMobKillActivator(RAListener.java:509) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor350.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[craftbukkit188.jar:git-Bukkit-efe04b8]
        ... 46 more
 
Хм... При вводе команды /give Angelock 264 64 или /give 264 64 в ответ - "Неизвестное название предмета %arg2%
попробуй так:
Код:
COMMAND:
  give_perm:
    override: true
    regex: false
    command: cmd:give arg1:* arg2:* arg3:*
    flags:
    - PERM=give.delay
    actions:
    - CANCEL_EVENT=true
    - EXECUTE=activator:give_delay
EXEC:
  give_delay:
    flags:
    - DELAY_PLAYER=id:give_delay
    actions:
    - CMD=give %arg1% %arg2% %arg3%
    - DELAY_PLAYER=id:give_delay time:5m
    reactions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&6До следующего использования команды осталось: &e%delay-left-mm%мин. %delay-left-ss%сек.'
 
Возникла проблема с WAIT. В активаторе вся её суть:
Код:
MESSAGE:
  TT:
    mask: T T
    type: START
    source: CHAT_INPUT
    actions:
    - MESSAGE=%word3%
    - WAIT=2s
    - MESSAGE=%word3%
При написании в чат "T T 3" выводит:
3
%word3%
 
Есть задумка - сделать миниигру, в которой будет 2 команды, и у одной команды (команда №2) будет король. Вообщем, суть вопроса - каждому игроку (кроме короля) даётся 3 жизни, и нужно сделать так, чтобы после трёх смертей игрока кикало (простите, если неправильно написал). А также чтобы всю команду №2 убивало, если король умирал. Так вот, как это всё организовать с помощью плагина ReActions?

Помогите пожалуйста.
 

Вложения

  • IMG_0628.jpg
    IMG_0628.jpg
    79 КБ · Просмотры: 7
  • IMG_0635.jpg
    IMG_0635.jpg
    37,5 КБ · Просмотры: 5
  • IMG_0636.jpg
    IMG_0636.jpg
    63,2 КБ · Просмотры: 5
  • IMG_0637.jpg
    IMG_0637.jpg
    39,4 КБ · Просмотры: 6
  • IMG_0639.jpg
    IMG_0639.jpg
    103,2 КБ · Просмотры: 5
попробуй так:
Код:
COMMAND:
  give_perm:
    override: true
    regex: false
    command: cmd:give arg1:* arg2:* arg3:*
    flags:
    - PERM=give.delay
    actions:
    - CANCEL_EVENT=true
    - EXECUTE=activator:give_delay
EXEC:
  give_delay:
    flags:
    - DELAY_PLAYER=id:give_delay
    actions:
    - CMD=give %arg1% %arg2% %arg3%
    - DELAY_PLAYER=id:give_delay time:5m
    reactions:
    - CANCEL_EVENT=true
    - 'MESSAGE=&6До следующего использования команды осталось: &e%delay-left-mm%мин. %delay-left-ss%сек.'
Не помогает.... Теперь команда /give Angelock 264 бесконечно, а команда /give Angelock 264 64 вылазиет тоже сообщение что и выше описанное.
 
Есть задумка - сделать миниигру, в которой будет 2 команды, и у одной команды (команда №2) будет король. Вообщем, суть вопроса - каждому игроку (кроме короля) даётся 3 жизни, и нужно сделать так, чтобы после трёх смертей игрока кикало (простите, если неправильно написал). А также чтобы всю команду №2 убивало, если король умирал. Так вот, как это всё организовать с помощью плагина ReActions?

Помогите пожалуйста.
Писать код я тебе не буду, долго по времени, но если разбираешься в ReActions, то я думаю проблем не составит
Делай все через переменные - в начале игры дается 3 жизни, при смерти игрока переменная, допустим game_health, будет уменьшаться на 1. Также при смерти сделай флаг VAR_PLAYER_GREATER - сравнивай с числом 0.
+Если будет больше 0, то actions: var_player_dec id:game_health value:0, и tp к месту событий (только тут загвоздка, тп вроде бы не работает, пока игрок мертв, с этим не знаю че сделать, пока ниче не надумал).
-Если будет равно 0, то reactions - cmd kick %player%, плюс незабывай перед киком тпшнуть игрока куда-нибудь на выход, чтобы он на арене или где там у тебя не оставался. И немаловажно стереть все переменные.
 
А вообще - для миниигр мне кажется проще скачать отдельный плагин)
 
Возникла проблема с WAIT. В активаторе вся её суть:
Код:
MESSAGE:
  TT:
    mask: T T
    type: START
    source: CHAT_INPUT
    actions:
    - MESSAGE=%word3%
    - WAIT=2s
    - MESSAGE=%word3%
При написании в чат "T T 3" выводит:
3
%word3%
Очень давно заметил, что в реакшнс есть проблема с плейсхолдерами. Я изобрел "костыль", но костыль есть костыль - сколько версий не ставил, время от времени проблема проскальзывает и приходится дописывать код. Как я решил - юзать переменные.
Код:
MESSAGE:
  TT:
   mask: T T
   type: START
   source: CHAT_INPUT
   actions:
   - VAR_PLAYER_SET=id:ph_word3 value:{%word3%}
   - MESSAGE=%varp:ph_word3%
   - WAIT=2s
   - MESSAGE=%varp:ph_word3%
 
Писать код я тебе не буду, долго по времени, но если разбираешься в ReActions, то я думаю проблем не составит
Делай все через переменные - в начале игры дается 3 жизни, при смерти игрока переменная, допустим game_health, будет уменьшаться на 1. Также при смерти сделай флаг VAR_PLAYER_GREATER - сравнивай с числом 0.
+Если будет больше 0, то actions: var_player_dec id:game_health value:0, и tp к месту событий (только тут загвоздка, тп вроде бы не работает, пока игрок мертв, с этим не знаю че сделать, пока ниче не надумал).
-Если будет равно 0, то reactions - cmd kick %player%, плюс незабывай перед киком тпшнуть игрока куда-нибудь на выход, чтобы он на арене или где там у тебя не оставался. И немаловажно стереть все переменные.
Спасибо больше, а как насчёт короля?
 
Попробуйте последний билд, вроде починил.
https://circleci.com/gh/Redolith/ReActions/125
Спасибо! Проблема устранена.
Хм... При вводе команды /give Angelock 264 64 или /give 264 64 в ответ - "Неизвестное название предмета %arg2%
Странно, но у меня всё работает. Использую REA v.0.10.1 и spigot 1.12-R0.1-snapshot (последний билд)
 
Спасибо больше, а как насчёт короля?
Записываешь в переменную ники каждого игрока, состоящего в команде короля и при смерти короля убиваешь игроков, ники которых берутся из переменной.
 
Записываешь в переменную ники каждого игрока, состоящего в команде короля и при смерти короля убиваешь игроков, ники которых берутся из переменной.
Это глупо - перед началом каждой игры вписывать ники раждого игрока команды №2
 
Не надо тут набивать сообщения, тем более необоснованно обвинять способ глупым. У вас есть более подходящее предложение - пишите, нет - значит не стоит вообще писать что то подобное и показывать отсутствие своей моральной этики.
Как Вы предлагаете разбить игроков по командам, не прибегая к помощи переменных? Что может нарушить две переменных в работе сервера? Я храню в переменных максимальный урон каждого игрока и это ни чуть не сказывается на работе сервера, а вы боитесь записать ники игроков при старте игры, а затем удалить их по окончанию той же игры.

Почему же глупо, у вас есть более разумное решение?
 
Последнее редактирование:
Build #126:
  • Добавлен активатор DAMAGE. Активатор срабатывает при уроне игрока любым способом.
  • Добавлен активатор DAMAGE_BY_BLOCK. Активатор срабатывает , когда игрок получает урон от блока (например, блок Магмы).
  • Добавлен активатор DAMAGE_BY_MOB. Активатор срабатывает, когда игрок получает урон от любой сущности. Этот активатор может отловить падающие сущности, которые наносят нулевой урон (падающие блоки песка, яйца, снежки и т.п.)
Хотел сделать один активатор урона, но это слишком громоздко получилось бы. Поэтому разбил на три активатора.
 
Последнее редактирование:
А у меня так и не работает MOB_KILL :C Ни в какую. Только если mob-type PLAYER, на всех остальных активаторы просто не запускаются
 
Назад
Верх