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

Ага, только я там как-то не по-русски написал. Исправил ;)
Как показывается на самом деле
8ca1d4e8b6e5513e3064b9a13204bd9d.gif

По поводу параметров (id/eff) я проверю. Должно быть eff (возможно, что id там идёт как дублирующий параметр - я не помню уже). У меня часто идёт такая недокументированная дубликация. К примеру, назвал сначала параметр item, а потом переименовал его в block (это актуально как раз для некоторых эффектов из PlayEffect), и в итоге работают оба (чтобы те у кого он уже назван item не сильно меня ругали).


И хочу сказать отдельное спасибо за действие WAIT)
Пожалуйста. Мне оно самому очень понравилось. И чего я его раньше не сделал не знаю... ;)

А можно ли в запросе к БД указывать переменные?
Например, SELECT item FROM table WHERE name='%player_name%'; ?

Обязательно можно. Иначе смысла в поддержке MySQL практически бы не было.
 
Проверка в активаторе ITEM_WEAR происходит только при любых действиях игрока. Если же он просто стоит на месте, то и проверки нет. Можно сделать на этот случай соответствующий параметр?
 
Проверка в активаторе ITEM_WEAR происходит только при любых действиях игрока. Если же он просто стоит на месте, то и проверки нет. Можно сделать на этот случай соответствующий параметр?

Должно работать точно также как REGION, по моему там одна и та же функция используется. Проверю.
 
Должно работать точно также как REGION, по моему там одна и та же функция используется. Проверю.
С REGION абсолютно аналогично. Активатор действует, если игрок двигается. Хотя, не всегда. На локалке работает нормально - секунда в секунду, вне зависимости от позиции.
 
@fromgate ,спасибо.А как сделать чтобы при MONEY_GIVE не было сообщения ;)
 
Начал постепенню миграцию на новую версию плагина, не могу понять в чем ошибка:
YAML:
ITEM_CLICK:                                                                                                                                                                                   
  click-bow_ironwood:                                                                                                                                                                         
    item: 'name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW'                                                                                                        
    flags:                                                                                                                                                                                    
    - PERM=artefactum-bow_ironwood                                                                                                                                                                                                                                                                                                                                    
    reactions:                                                                                                                                                                                
    - item_remove_inventory=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW                                                                                        
    - message=&2[&5Оружейник&2] &3- &6Лук &2из Железного Дерева &4Конфискован, у вас нет прав на него!
Предмет в руке определяется, так как сообщение о конфискации выводится, но сам предмет не конфискуется.
И еще, у меня не работает новый формат задержек, или я его не правильно пишу:
id:<ИмяЗадержки> [player:<Player] [set-time:<Time>]
Код:
    flags:                                                                                                                                                                                    
    - DELAY_PLAYER=id:delay-bow_ironwoods set-time:604800                                                                                                                                                        
    actions:                                                                                                                                                                                  
...

с старым форматом, в связке с действием DELAY все нормально
Код:
    flags:                                                                                                                                                                                    
    - DELAY_PLAYER=delay-bow_ironwoods                                                                                                                                                        
    actions:                                                                                                                                                                                  
    - DELAY_PLAYER=604800/delay-bow_ironwoods

А этот активатор вообще не определяет такого предмета в руке:
YAML:
ITEM_HOLD:                                                                                                                                                                                     
  hold-bow_ironwood:                                                                                                                                                                           
    item: 'name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW'                                                                                                         
    flags:                                                                                                                                                                                     
    - PERM=artefactum-bow_ironwood                                                                                                                                                             
    reactions:                                                                                                                                                                                 
    - item_remove_inventory=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW                                                                                         
    - message=&2[&5Оружейник&2] &3- &6Лук &2из Железного Дерева &4Конфискован, у вас нет прав на него!

А, вот сам предмет:
YAML:
    - item_give=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW enchantments:ARROW_DAMAGE:8;ARROW_KNOCKBACK:5;DURABILITY:5;ARROW_FIRE:1;ARROW_INFINITE:1
 
Последнее редактирование:
А этот активатор вообще не определяет такого предмета в руке:
Может количество нужно указать?
И еще, у меня не работает новый формат задержек, или я его не правильно пишу:
+
Похоже, что ITEM_WEAR и ITEM_HOLD работают только при клике на какой-то предмет чем угодно. Или же изменением своего инвентаря. Даже на движение не реагирует :(
 
ктсать, был неприятный момент: при действии CMD_OP каким-то невероятно-магическим способом опнулся игрок. ОО
(команда была на рандомный телепорт, привилегии соответствующей у этой группы игроков не было)
 
каким-то невероятно-магическим способом опнулся игрок
у меня 2 раза было подобное, правда я не знаю что было причиной случайно ОПнутого игрока, пришлось свой плагин для защиты ОПки рисовать.
 
ктсать, был неприятный момент: при действии CMD_OP каким-то невероятно-магическим способом опнулся игрок. ОО
(команда была на рандомный телепорт, привилегии соответствующей у этой группы игроков не было)
у меня 2 раза было подобное, правда я не знаю что было причиной случайно ОПнутого игрока, пришлось свой плагин для защиты ОПки рисовать.
Без воспроизводимости ошибки шансы её исправить стремятся к нулю. У меня такого никогда не было. Однако, флаг для проверки прав оператора не помешал бы.
 
Как проверить, является ли игрок овнеров региона в котором он сейчас стоит (и если регионов несколько, какой регион будет проверятся)? Если такое вообще возможно)
 
Как проверить, является ли игрок овнеров региона в котором он сейчас стоит (и если регионов несколько, какой регион будет проверятся)? Если такое вообще возможно)
По идее, если он владелец хоть в одном регионе, то выдаст true. Но тут спорный вопрос. Может, ещё понадобится параметр такого "игнорирования" или же проверки приоритетов, дочерних регионов...
 
По идее, если он владелец хоть в одном регионе, то выдаст true. Но тут спорный вопрос. Может, ещё понадобится параметр такого "игнорирования" или же проверки приоритетов, дочерних регионов...
Ты мне немноженько не на тот вопрос ответил. Я спрашивал КАК такое сделать, то бишь как флаг написать?
 
Ты мне немноженько не на тот вопрос ответил. Я спрашивал КАК такое сделать, то бишь как флаг написать?
Флаги:
REGION_MEMBER

[<Мир>.]<Регион>

Есть ли у игрока доступ к региону (member)

REGION_OWNER

[<Мир>.]<Регион>

Является ли игрок владельцем региона
ктсать, был неприятный момент: при действии CMD_OP каким-то невероятно-магическим способом опнулся игрок. ОО
(команда была на рандомный телепорт, привилегии соответствующей у этой группы игроков не было)
А что за команда выполнялась? CMD_OP была реализована очень давно и подобных жалоб не было.
@fromgate ,спасибо.А как сделать чтобы при MONEY_GIVE не было сообщения ;)

В конфиге, перечислены сообщения для которых отображаются встроенные сообщения:
Код:
reactions:
  show-messages-for-actions: tp,grpadd,grprmv,townset,townkick,itemrmv,item_remove_inventory,itemgive,moneypay,moneygive

Может количество нужно указать?

+
Похоже, что ITEM_WEAR и ITEM_HOLD работают только при клике на какой-то предмет чем угодно. Или же изменением своего инвентаря. Даже на движение не реагирует :(

Вообще не могу воспроизвести. Сейчас протестировал:

Вот собственно активаторы, которые проверил:
Код:
ITEM_HOLD:
  holdtest:
  item: type:IRON_HELMET name:{&6Flying helm}
  actions:
  - 'message=&6Item hold check: %TIME_SERVER:HH:mm:ss.SSS%'
ITEM_WEAR:
  weartest:
  item: type:IRON_HELMET name:{&6Flying helm}
  flags:
  actions:
  - 'message=&6Item wear check: %TIME_SERVER:HH:mm:ss.SSS%'

Кстати, понял возможные причины глюков.
ITEM_WEAR и ITEM_HOLD не срабатывали если предмет выдавался при помощи действий ITEM_GIVE и ITEM_WEAR

Исправлено:
0.9.7/4
http://adf.ly/1K0nlW
 
Вот смотрю я сейчас на всё это многообразие и думаю: если так дальше пойдёт, то настройка плагина станет ничуть не проще написания собственного отдельного плагина с нужным функционалом. Возможно стоит создать какую-нибудь прикладную софтину для работы с конфигурациями? Как-никак упрощение жизни...
 
Вот смотрю я сейчас на всё это многообразие и думаю: если так дальше пойдёт, то настройка плагина станет ничуть не проще написания собственного отдельного плагина с нужным функционалом. Возможно стоит создать какую-нибудь прикладную софтину для работы с конфигурациями? Как-никак упрощение жизни...

Если не ломать принцип IF-THEN-ELSE, а строго его придерживаться, то всё не так страшно.
Но вообще я об этом думал. Но пока решил не браться ни за что подобное - у меня в планах ещё целая куча внутренних изменений, после чего я думаю можно будет подумать о разработке какого-то удобного инструмента.
И еще, у меня не работает новый формат задержек, или я его не правильно пишу:

Код:
    flags:                                                                                                                                                                                   
    - DELAY_PLAYER=id:delay-bow_ironwoods set-time:604800                                                                                                                                                       
    actions:                                                                                                                                                                                 
...

с старым форматом, в связке с действием DELAY все нормально

Действительно. Вылез неприятный баг (я даже не понимаю, как оно у меня во время тестов работало в принципе). Исправил.

0.9.7/6
http://adf.ly/1K0nlW

Чувствую версия 0.9.8 будет состоять только из баг-фиксов. Но и то хлеб :)
А этот активатор вообще не определяет такого предмета в руке:
YAML:
ITEM_HOLD:                                                                                                                                                                                    
  hold-bow_ironwood:                                                                                                                                                                          
    item: 'name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW'                                                                                                        
    flags:                                                                                                                                                                                    
    - PERM=artefactum-bow_ironwood                                                                                                                                                            
    reactions:                                                                                                                                                                                
    - item_remove_inventory=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW                                                                                        
    - message=&2[&5Оружейник&2] &3- &6Лук &2из Железного Дерева &4Конфискован, у вас нет прав на него!

А, вот сам предмет:
YAML:
    - item_give=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW enchantments:ARROW_DAMAGE:8;ARROW_KNOCKBACK:5;DURABILITY:5;ARROW_FIRE:1;ARROW_INFINITE:1

Поставь в действиях, для проверки вывод любого сообщения.

Я сейчас сделал так:
Код:
COMMAND:
  gisw:
    override: true
    regex: false
    command: cmd:gisw
    actions:
    - item_give=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW enchantments:ARROW_DAMAGE:8;ARROW_KNOCKBACK:5;DURABILITY:5;ARROW_FIRE:1;ARROW_INFINITE:1
ITEM_HOLD:
  item: 'name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW'   
  flags:   
  actions:
  - item_remove_inventory=name:{&6Лук &2из Железного Дерева} lore:{Индивидуальный артефакт} type:BOW
  - message=&2[&5Оружейник&2] &3- &6Лук &2из Железного Дерева &4Конфискован, у вас нет прав на него!

Предмет замечательно изымается из рук.
Может что-то с пермишенами? В смысле соответствующий пермишен есть у игрока?
0.9.7/7
- Добавлен активатор QUIT. Выполняется при выходе игрока с сервера. Каких-то дополнительных параметров у него нет.
Телепортировать игрока при выходе - получается.
http://adf.ly/1K0nlW
 
0.9.7/7
- Добавлен активатор QUIT. Выполняется при выходе игрока с сервера. Каких-то дополнительных параметров у него нет.
Телепортировать игрока при выходе - получается.
Ооооотлично! А вот и сам баг с ITEM_WEAR, на подверсии 6:
Активатор:
Код:
ITEM_WEAR:
  Parkour-Award-Diamond-Armour:
    item: 'amount:1 regex:true type:DIAMOND_HELMET lore:{&6За победу в паркуре;\n&a(\w){1,15} &6- лучший игрок!}'
    flags:
    - ITEM_WEAR=amount:1 regex:false type:DIAMOND_HELMET lore:{&6За победу в паркуре;\n&a%player% &6- лучший игрок!}
    - ITEM_WEAR=amount:1 regex:false type:DIAMOND_CHESTPLATE lore:{&6За победу в паркуре;\n&a%player% &6- лучший игрок!}
    - ITEM_WEAR=amount:1 regex:false type:DIAMOND_LEGGINGS lore:{&6За победу в паркуре;\n&a%player% &6- лучший игрок!}
    - ITEM_WEAR=amount:1 regex:false type:DIAMOND_BOOTS lore:{&6За победу в паркуре;\n&a%player% &6- лучший игрок!}
    - '!REGION=world_the_end.parkour'
    - '!REGION=world_the_end.dropper'
    actions:
    - potion=type:DAMAGE_RESISTANCE time:10 level:3
    - potion=type:SPEED time:10 level:2
    - potion=type:JUMP time:10 level:2
    - potion=type:REGENERATION time:10 level:3
    reactions: []

Было бы неплохо иметь флаг, который проверяет состояние игрока в плагине AuthMe: залогинен, зарегистрирован.
 
Похоже понял в чем причина с ITEM_HOLD и ITEM_WEAR.

20 тиков - это не всегда одна секунда. Есть погрешность, которая периодически вылезет.
Буду думать как от этого уйти.
 
Есть ли у игрока доступ к региону (member)

REGION_OWNER

[<Мир>.]<Регион>

Является ли игрок владельцем региона
Блин, походу я неправильно сформулировал. Я знаю про эти флаги и успешно юзаю, мне нужно чтобы регион сам был написал, мб плейсхолдер какой-нибудь. Типо REGION_OWNER=%region% или что-то вроде того, чтобы проверялся регион в котором на данный момент стоит игрок. Просто много что у меня будет реализовано с такой конструкцией, и хотелось бы написать 1 активатор вместо дофигища :с Соль в том, чтобы игрок смог юзать табличку, только если игрок является владельцем региона, в котором он стоит на данный момент.
 
Назад
Верх