Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Из-за чего действие происходит несколько раз? Причем иногда всё нормально, работает как надо, а иногда начинает по 2-4 раза выполняться. Под спойлером кусок активаторов, в которых встречается проблема - действие message выполняется по несколько раз в секунду (region-recheck-delay: 1).
Код:
REGION:
  region1:
    region: testrg
    flags:
    - group=Red
    actions:
    - execute=activator:region1redState2
EXEC:
  region1redState2:
    flags:
    - var_compare=id:rg1state value:2
    actions:
    - message=Добро пожаловать в регион 1.
 
Из-за чего действие происходит несколько раз? Причем иногда всё нормально, работает как надо, а иногда начинает по 2-4 раза выполняться. Под спойлером кусок активаторов, в которых встречается проблема - действие message выполняется по несколько раз в секунду (region-recheck-delay: 1)
Я в активаторах REGION всегда добавляю DELAY (флаг и действие) - тогда все отщелкивает нормально. правда таймеры у меня 3, 15 и 60. 1 - не пробовал, не знаю, есть ли принципиальная разница
 
Ребята, на кнопку поставил команды отключения флая и гуда, как сделать так чтобы эти смс в чате не показывало?
 
Ребята, на кнопку поставил команды отключения флая и гуда, как сделать так чтобы эти смс в чате не показывало?
Только добавив плагин Fromgate - MessageFilter
Оно делает перехват сообщения, обрабатывает (по вашим указаниям) и выводит измененным (или вообще не выводит).
Помогите кое что сделать....
Как выразить такую фичу: Если в регионе есть игроки с такой группой/такими правами....
Ну к примеру при входе в регион - запускается активатор, проверяющий - есть ли 5 человек с группой Pro. Если таковых нет, то в реактионс запускается ехес - проверяющий, есть ли 5 человек с группой Mvp и т.д.
Вот уже 2 месяца голову ломаю: КАК ВЫРАЗИТЬ ЭТУ ФИЧУ!
 
Только добавив плагин Fromgate - MessageFilter
Оно делает перехват сообщения, обрабатывает (по вашим указаниям) и выводит измененным (или вообще не выводит).
Помогите кое что сделать....
Как выразить такую фичу: Если в регионе есть игроки с такой группой/такими правами....
Ну к примеру при входе в регион - запускается активатор, проверяющий - есть ли 5 человек с группой Pro. Если таковых нет, то в реактионс запускается ехес - проверяющий, есть ли 5 человек с группой Mvp и т.д.
Вот уже 2 месяца голову ломаю: КАК ВЫРАЗИТЬ ЭТУ ФИЧУ!
Поподробнее можно? И мне нужно чтобы он не полностью оповещение /god и /fly убрал, а только когда нажимаю на кнопки.
 
Последнее редактирование:
Ребята, на кнопку поставил команды отключения флая и гуда, как сделать так чтобы эти смс в чате не показывало?
Действие cancel_event используй.
Помогите кое что сделать....
Как выразить такую фичу: Если в регионе есть игроки с такой группой/такими правами....
Ну к примеру при входе в регион - запускается активатор, проверяющий - есть ли 5 человек с группой Pro. Если таковых нет, то в реактионс запускается ехес - проверяющий, есть ли 5 человек с группой Mvp и т.д.
Вот уже 2 месяца голову ломаю: КАК ВЫРАЗИТЬ ЭТУ ФИЧУ!
Хм, не уверен, что можно сделать проверку по количеству игроков одной группы в регионе с помощью одного активатора.
Первая мысль, пришедшая в голову, - создать переменную, которая будет считать количество игроков определенной группы в регионе.
Надеюсь сможешь разобраться хД
Код:
#Игрок зашёл, запустили проверку группы с последующим инкрементом переменной
REGION_ENTER:
  groupProEnter:
    region: testregion
    flags:
    #Проверяем игрока на группу Про
    - group=Pro
    actions:
    #Если Про, то увеличиваем переменную на 1
    - var_inc=id:groupPro value:1
    #Запускаем проверку переменной
    - execute=activator:groupPro
    reactions:
    #Если не Про, то проверка на следующую группу - Мвп
    - execute=activator:groupMvpEnter
#Игрок вышел, запустили проверку группы с последующим дикрементом переменной
REGION_LEAVE:
  groupProLeave:
    region: testregion
    #Проверяем игрока на группу Про
    flags:
    - group=Pro
    #Если Про, то уменьшаем переменную на 1
    actions:
    - var_dec=id:groupPro value:1
    #Если не Про, то проверка на следующую группу - Мвп
    reactions:
    - execute=activator:groupMvpLeave
EXEC:
#Активатор, проверяющий, набралось ли достаточное количество игроков одной группы
  groupPro:
    flags:
    #Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupPro value:4
    actions:
    - Необходимое действие
#Проверка игрока на группу Мвп
  groupMvpEnter:
    flags:
    - group=Mvp
    actions:
    - var_inc=id:groupMvp value:1
    - execute=activator:groupMvp
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
  groupMvp:
    flags:
#Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupMvp value:4
    actions:
    - Необходимое действие
#Тут мы снова уменьшаем переменную, если игрок из Мвп покинул регион
  groupMvpLeave:
    flags:
    - group=Mvp
    actions:
    - var_dec=id:groupMvp value:1
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
 
Действие cancel_event используй.

Хм, не уверен, что можно сделать проверку по количеству игроков одной группы в регионе с помощью одного активатора.
Первая мысль, пришедшая в голову, - создать переменную, которая будет считать количество игроков определенной группы в регионе.
Надеюсь сможешь разобраться хД
Код:
#Игрок зашёл, запустили проверку группы с последующим инкрементом переменной
REGION_ENTER:
  groupProEnter:
    region: testregion
    flags:
    #Проверяем игрока на группу Про
    - group=Pro
    actions:
    #Если Про, то увеличиваем переменную на 1
    - var_inc=id:groupPro value:1
    #Запускаем проверку переменной
    - execute=activator:groupPro
    reactions:
    #Если не Про, то проверка на следующую группу - Мвп
    - execute=activator:groupMvpEnter
#Игрок вышел, запустили проверку группы с последующим дикрементом переменной
REGION_LEAVE:
  groupProLeave:
    region: testregion
    #Проверяем игрока на группу Про
    flags:
    - group=Pro
    #Если Про, то уменьшаем переменную на 1
    actions:
    - var_dec=id:groupPro value:1
    #Если не Про, то проверка на следующую группу - Мвп
    reactions:
    - execute=activator:groupMvpLeave
EXEC:
#Активатор, проверяющий, набралось ли достаточное количество игроков одной группы
  groupPro:
    flags:
    #Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupPro value:4
    actions:
    - Необходимое действие
#Проверка игрока на группу Мвп
  groupMvpEnter:
    flags:
    - group=Mvp
    actions:
    - var_inc=id:groupMvp value:1
    - execute=activator:groupMvp
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
  groupMvp:
    flags:
#Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupMvp value:4
    actions:
    - Необходимое действие
#Тут мы снова уменьшаем переменную, если игрок из Мвп покинул регион
  groupMvpLeave:
    flags:
    - group=Mvp
    actions:
    - var_dec=id:groupMvp value:1
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
Я вообще нубик, можно пример?
 
Я вообще нубик, можно пример?
А вообще я тебе неправильно подсказал. Не cancel_event, а активатор MESSAGE. Пример активатора, который убирает сообщение, начинающиеся со слов "Ваш режим игры":
Код:
MESSAGE:
  gm:
    mask: 'Ваш режим игры'
    type: START
    source: ALL
    actions:
    - cancel_event=true
Так же можно использовать и другие значения параметров type и source.
 
Действие cancel_event используй.

Хм, не уверен, что можно сделать проверку по количеству игроков одной группы в регионе с помощью одного активатора.
Первая мысль, пришедшая в голову, - создать переменную, которая будет считать количество игроков определенной группы в регионе.
Надеюсь сможешь разобраться хД
Код:
#Игрок зашёл, запустили проверку группы с последующим инкрементом переменной
REGION_ENTER:
  groupProEnter:
    region: testregion
    flags:
    #Проверяем игрока на группу Про
    - group=Pro
    actions:
    #Если Про, то увеличиваем переменную на 1
    - var_inc=id:groupPro value:1
    #Запускаем проверку переменной
    - execute=activator:groupPro
    reactions:
    #Если не Про, то проверка на следующую группу - Мвп
    - execute=activator:groupMvpEnter
#Игрок вышел, запустили проверку группы с последующим дикрементом переменной
REGION_LEAVE:
  groupProLeave:
    region: testregion
    #Проверяем игрока на группу Про
    flags:
    - group=Pro
    #Если Про, то уменьшаем переменную на 1
    actions:
    - var_dec=id:groupPro value:1
    #Если не Про, то проверка на следующую группу - Мвп
    reactions:
    - execute=activator:groupMvpLeave
EXEC:
#Активатор, проверяющий, набралось ли достаточное количество игроков одной группы
  groupPro:
    flags:
    #Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupPro value:4
    actions:
    - Необходимое действие
#Проверка игрока на группу Мвп
  groupMvpEnter:
    flags:
    - group=Mvp
    actions:
    - var_inc=id:groupMvp value:1
    - execute=activator:groupMvp
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
  groupMvp:
    flags:
#Если больше 4 игроков, то запускаем действие
    - var_greater=id:groupMvp value:4
    actions:
    - Необходимое действие
#Тут мы снова уменьшаем переменную, если игрок из Мвп покинул регион
  groupMvpLeave:
    flags:
    - group=Mvp
    actions:
    - var_dec=id:groupMvp value:1
    reactions:
    - Тут можно запустить проверку на следующую группу, если требуется
Спасибо, как-то и не подумал сделать не 1 "систему", а 2!
1 считает, другая сравнивает и когда нужно запускает, после выхода из региона уменьшает переменную.
Очень помог ! :)
 
А вообще я тебе неправильно подсказал. Не cancel_event, а активатор MESSAGE. Пример активатора, который убирает сообщение, начинающиеся со слов "Ваш режим игры":
Код:
MESSAGE:
  gm:
    mask: 'Ваш режим игры'
    type: START
    source: ALL
    actions:
    - cancel_event=true
Так же можно использовать и другие значения параметров type и source.
Нифига не получось... Ввожу команду /react add message <ИмяАктиватора> source:<ТипИсточника> type:<СпособСравнения> mask:<ШаблонСообщения> вставляя свои переменные и пишет что такой команды нет! Я скачал MessageFilter и MessageCommander
 
Подскажите пожалуйста, нужно выполнить команду от игрока, но без / перед командой. Или написать в чат от имени игрока. sudo не подходит.
 
Подскажите пожалуйста, нужно выполнить команду от игрока, но без / перед командой. Или написать в чат от имени игрока. sudo не подходит.
Для выполнения команды без / можно использовать активатор MESSAGE. Пример активатора, меняющий режим игрока на креатив, если он написал слово creative в чат:
Код:
MESSAGE:
  gm:
    mask: creative
    type: EQUAL
    source: CHAT_INPUT
    actions:
    - CMD_CONSOLE=gamemode %player% 1
Насчет написания от имени игрока, есть СhatAvatar.
 
Для выполнения команды без / можно использовать активатор MESSAGE. Пример активатора, меняющий режим игрока на креатив, если он написал слово creative в чат:
Код:
MESSAGE:
  gm:
    mask: creative
    type: EQUAL
    source: CHAT_INPUT
    actions:
    - CMD_CONSOLE=gamemode %player% 1
Насчет написания от имени игрока, есть СhatAvatar.
можно по подробнее про ChatAvatar? если можно ссылочку) Спасибо большое!
 
Ребят, в действие ITEM_DROP есть такая строчка:

[Приземлять]
land:<true | false>
Должны ли предметы появляться на поверхности земли?

объект будет именно ПРИЗЕМЛЯТЬ (делать так, чтобы лежало на земле) или прислонять к блоку (например чтобы лежало на камне)
 
Имеется в виду, чтобы лежало на чём-то. Т.е. если у тебя блок висит в воздухе, то может случайно выложить и на это блок.
 
Заметил одну ошибку или особенность, хз, то есть Активаторы MOB_DAMAGE и MOB_CLICK, если указать type: player, то при срабатывании на игроке в плейсхолдеры %mobname% и %mobtype% отдают одно и то же, а именно PLAYER, то есть ник игрока получить к сожалению никак не удается :(
 
Эх, хотелось бы увидеть под версию 1.10 + PlaceholderAPI(
Уважаемые знатоки, а ReActions не умеет работать с мирами? В хэлпе не нашел.
Хотел сделать некоторые вещи, если игрок заходит в определенный мир, но не нашел как)
 
Уважаемые знатоки, а ReActions не умеет работать с мирами? В хэлпе не нашел.
Хотел сделать некоторые вещи, если игрок заходит в определенный мир, но не нашел как)
Можно использовать Активатор REGION_ENTER, там же указывается название мира...
 

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

Назад
Верх