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

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

Во втором сообщении темы привел описание к актуальному, для версии 0.5.0, состоянию. Проставил ссылки на описание действий и флагов на dev.bukkit.org (на русском языки).
 
Идея:
Действие open_chest и флаг chest.
Т.е. при активации открывается сундук, находящийся на расстоянии.
Аналогично с NPC. Т.е. например щелкаем ПКМ и с помощью активатора ITEM_CLICK открываем GUI жителя.
Потом можно создать виртуальный сундук или жителя, GUI которых можно открыть.
Альтернативный вариант:
Создать активатор MOB_CLICK
Скачать плагин с возможность создания GUI, и вызовом ее командой
Создать действие cmd, и установить команду вызывающую GUI
??????
PROFIT!
 
Именно этот пункт меня и смущает.
К тому же мне нужно GUI сундуков и жителей.
Окей, где-то видел такие плагины... Держи, может какой-нибудь приглянется ;)
http://dev.bukkit.org/bukkit-plugins/chest-commands/
http://dev.bukkit.org/bukkit-plugins/gui/

PS. Насчет жителей незнаю, посмотри на dev.bukkit.org, попробуй в поиске вбить Villager GUI
 
enselerizer, он работает на 1.5.2, за исключением действий и флагов завязанных на здоровье игрока. Эти события обрабатываются нормально, просто в логе увидите соответствующее сообщение.
v0.5.1
  • Новый активатор ITEM_CLICK. Параметр: предмет (item). Этот активатор начинает выполняться когда игрок кликает правой кнопкой мыши при условии что в руках он держит соответствующий предмет.
  • Новый активатор ITEM_HOLD. Параметр: предмет (item). Активатор стартует сразу как предмет оказывается в руках, а затем каждые 2 секунды (если предмет ещё в руках)
  • Новое действие POWER_SET loc:<location> power:<on/off/toggle> - изменяет состояние блоков (рычаг и разного рода двери) расположенные в заданной локации.
  • Новое действие EXECUTE_STOP player:<player> activator:<id> - приостанавливает работу заданного EXEC-активатора, выполненного с задержкой.
  • Новое действие EXECUTE_UNSTOP player:<player> activator:<id> - восстанавливает работу активатора, который был ранее отключен.
  • Новый флаг REGION_MEMBER (parameter - region name) проверяет является ли игрок членом или собственником регионаreturns true if player is a member or owner of the region
  • Новый флаг REGION_OWNER (parameter - region name) проверяет является ли игрока владельцем региона
  • Новый флаг EXECUTE_STOP (parameter - activator id) проверка успешна (возвращает true) если указанный EXEC-активатор остановлен
  • Новый флаг FLAG_SET (parameter - набор любых флагов, исключая FLAG_SET: flag1:value1 flag2:value2). Этот флаг возвращает true если хоть один флаг из набора флагов прошел проверку успешно. По сути это опреация ИЛИ (OR).
  • Новая команда /react set delay player:<player> delay:<time> id:<id> задает переменную ожидания (задержки), которая в дальнейшем может быть использована с флагами DELAY и DELAY_PLAYER
  • Значения DELAY и DELAY_PLAYER теперь сохраняются в файл. Это позволит избежать избежать нарушения режима игры при краткосрочных перезагрузках. Однако флаги опираются на реальное время, потому при долгом отключения сервера они могут быть не учтены.
  • Действие POTION теперь "перезаписывает" эффект зелья если у игрока такой эффект уже был.
http://dev.bukkit.org/media/files/755/823/ReActions.jar
 
Пока команда баккита изучает код, я сделал ещё одно обновление. Ну и на dev.bukkit.org делаю замену, соответственно номер версии остается тот же.
В этом обновлении просто учтена парочка моментов:
  • добавлена команда /react list delay [номер страницы] - можно смотреть перечень активных "ожиданий"
  • по команде /react reload перезагружается и список ожиданий тоже. Похоже, не мешает сделать возможность очистки этих списков (всех или для игроков). Подумаю об этом позже.

http://dev.bukkit.org/media/files/756/9/ReActions.jar
 
  • по команде /react reload перезагружается и список ожиданий тоже.

вот это не очень хорошо. У меня например есть суточный делэй для игроков, и каждый раз когда я работаю с конфигами и делаю /react reload, все будет сбрасываться.

Вот этой команды было достаточно вполне /react set delay player:<player> delay:<time> id:<id>

В добавок, небольшое предложение:
флаг Item_equip, для одеваемых предметов. проверяет предмет в слотах одежды.
 
Последнее редактирование:
reload ничего не удалит, если из файла конфига не удалить сохраненные значения вручную. Есть один момент: время сохраняется фиксированно, если сделать задержку на час, а потом выключить сервер на два, задержка пропадет
 
Последнее редактирование:
не совсем понятно с flag_set:

вот такая конструкция - FLAG_SET='!ITEM_INVENTORY:2' '!ITEM_INVENTORY:1'
т.е. должно возвращать тру если нет хотя бы однго предмета в инвентаре. Но не возвращает.

---

кроме того, если у итема в данном слуае есть имя, а в имени пробелы, то тоже проблемы с распознаванием:
- FLAG_SET=ITEM_INVENTORY:&6Имя$1 ITEM_INVENTORY:&bимя с пробелами$2

---

и два Баг-репорта

1) флаг ITEM_INVENTORY не распознает вещь, если она одета в слот одежды. Это собсно не будет проблемой если будет отдельный флаг на отдетые вещи.

2) активатор REGION срабатывает только если игрок двигает мышку\двигается сам. Если стоять неподвижно - активатор не выполняется
 
Последнее редактирование:
ValeraSTK, пробел в имени знамени на знак «_», по остальному позже напишу, с телефона неудобно
Вот, добрался я компа.
Значить правильно FLAG_SET будет выглядеть примерно так:
- FLAG_SET=ITEM_INVENTORY:&6Имя$1 ITEM_INVENTORY:&bимя_с_пробелами$2

Символ ' можно ставить только если им закрываем всю строку, т.е.
- FLAG_SET='ITEM_INVENTORY:&6Имя$1 ITEM_INVENTORY:&bимя_с_пробелами$2'

1) флаг ITEM_INVENTORY не распознает вещь, если она одета в слот одежды. Это собсно не будет проблемой если будет отдельный флаг на отдетые вещи.
Про это вообще не задумывался. Сделаю и отдельный флаг на экипировку (плюс действие) и ITEM_INVENTORY тоже будет его проверять.

2) активатор REGION срабатывает только если игрок двигает мышку\двигается сам. Если стоять неподвижно - активатор не выполняется
Это как я понимаю после телепорта? Потому что первичный запуск активатора происходит, по-моему, действительно по событиям входа на сервер и движению. Добавлю в телепорт тоже.
Последующие срабатывания не срабавания идут по таймеру и там уже не важно дёргаешь мышкой или нет.
 
Это как я понимаю после телепорта? Потому что первичный запуск активатора происходит, по-моему, действительно по событиям входа на сервер и движению. Добавлю в телепорт тоже.
Последующие срабатывания не срабавания идут по таймеру и там уже не важно дёргаешь мышкой или нет.
PlayerTeleportEvent расширяет PlayerMoveEvent
Так что ошибка не в этом. Возможно нужно проверять еще и в момент создания активатора.
 
Это как я понимаю после телепорта? Потому что первичный запуск активатора происходит, по-моему, действительно по событиям входа на сервер и движению. Добавлю в телепорт тоже.
Последующие срабатывания не срабавания идут по таймеру и там уже не важно дёргаешь мышкой или нет.

В том то и дело, что не срабатывают именно тики. Шевелишься - тикают. Перестаешь ходить\шевелить мышкой - не тикают. Специально вешал на акт\реакт тестовые мессаги и смотрел.

В регион я входил как телепортом, так и обычным способом.

Если это не на стороне реакшенса, может ли это быть проделками спигота, или вроде того?
 
Последнее редактирование:
Да нет, спигот не должен так пакостить. В общем буду тестировать.
ValeraSTK, нашёл. Ошибка оказалась самая глупая. Запутался в собственных переменных. Причем судя по ощущениям, это где-то со времен 0.5.0.
Сейчас должно нормально тикать: https://www.dropbox.com/s/nwp1tn5wsq4v86s/ReActions.jar
 
Да нет, спигот не должен так пакостить. В общем буду тестировать.
ValeraSTK, нашёл. Ошибка оказалась самая глупая. Запутался в собственных переменных. Причем судя по ощущениям, это где-то со времен 0.5.0.
Сейчас должно нормально тикать: https://www.dropbox.com/s/nwp1tn5wsq4v86s/ReActions.jar
в этой версии косяк с делэями. Предположительно, если при react reload был рабочий дилэй, он зависает и всегда возвращает false флагам которые его проверяют. Лучше обрать эту версию из общего доступа.
 

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

Назад
Верх