- Баллы
- 88
Данный пост будет посвящен плагину Denizen.
Citizens + Denizen это весьма мощная связка для того, чтобы делать задачи, квесты и многое другое! Я думаю, если ты это читаешь, то что такое citizens рассказывать не нужно, а Denizen, это дополнение возможностей к NPC! Все буду стараться рассматривать с примерами.
P.S. я сам только учусь. Буду рад дополнениями подсказкам!
Итак, все скрипты пишутся руками в текстовых файлах с расширением yml. Этот файл нужно открывать любым текстовым редактором. Советую Notepad++, т.к. там есть подсветка кода. Так же все конфиги должны быть в UTF-8 без BOM! Иначе весь русский текст у вас кракозябрами. Чтобы это сделать в notepad++, выбираем кодировки -> преобразовать в utf-8 без bom
Этого нам хватит, чтобы написать первый скрипт. Давайте напишем телепортиста.
Итак, создаем файл, я его назову teleport.yml, вы можете по другому
И начинаем писать
Так же denizen позволяет создавать свои предметы для крафта!
Давайте рассмотрим пример:
Все! Теперь при укладывании 3 стрел вверх мы получаем шрапнель.
Я создаю RPG сервер, и, среди кучи плагинов мне все же приглянулся Denizen своей гибкостью, так же он поддерживает формулы!
Итак, сервер у меня 1.8.8., поэтому и данный материал будет для 1.8.
Так же надеюсь, что информация, которую я тут буду писать, поможет другим людям делать более качественные и интересные сервера.
P.S. на момент написания версия Denizen for 1.8.1Jul 18, 2015
Итак, сервер у меня 1.8.8., поэтому и данный материал будет для 1.8.
Так же надеюсь, что информация, которую я тут буду писать, поможет другим людям делать более качественные и интересные сервера.
P.S. на момент написания версия Denizen for 1.8.1Jul 18, 2015
http://dev.bukkit.org/bukkit-plugins/citizens/ - это основа, без него denizen не будет работать
http://dev.bukkit.org/bukkit-plugins/denizen/ - сам плагин, по которому будет информация
http://dev.bukkit.org/bukkit-plugins/denizen/ - сам плагин, по которому будет информация
P.S. я сам только учусь. Буду рад дополнениями подсказкам!
Итак, все скрипты пишутся руками в текстовых файлах с расширением yml. Этот файл нужно открывать любым текстовым редактором. Советую Notepad++, т.к. там есть подсветка кода. Так же все конфиги должны быть в UTF-8 без BOM! Иначе весь русский текст у вас кракозябрами. Чтобы это сделать в notepad++, выбираем кодировки -> преобразовать в utf-8 без bom
npc assignment --set <имя скрипта> - задать скрипт выбранному npc
denizen reload config - перезагрузить конфиг
denizen reload scripts - перезагрузить только ваши скрипты
denizen reload -a - перезагрузить весь плагин
denizen reload config - перезагрузить конфиг
denizen reload scripts - перезагрузить только ваши скрипты
denizen reload -a - перезагрузить весь плагин
zap 'имя шага'- прыгнуть на какой-либо шаг
disengage - завершает скрипт
execute as_server 'команда' - выполнить от имени консоли
determine cancelled - отменяет последнее действие
determine <переменная или название предмета> - заменяет что-либо на указанную переменную или предмет
<параметры> to_console - вывести итог в консоль
random <число> - выполнить рандомное действие из списка
look <куда> - npc смотрит куда ему указано
chat 'текст' - выводит текст в чат
narrate 'текст' - выводит неоформленный текст в чат
playeffect <имя эффекта> <где> qty:количество - выводит эффект в нужном месте с определенным количеством
debug: false | true - выводить ли в консоль все исполнение скрипта. Указывается после type
disengage - завершает скрипт
execute as_server 'команда' - выполнить от имени консоли
determine cancelled - отменяет последнее действие
determine <переменная или название предмета> - заменяет что-либо на указанную переменную или предмет
<параметры> to_console - вывести итог в консоль
random <число> - выполнить рандомное действие из списка
look <куда> - npc смотрит куда ему указано
chat 'текст' - выводит текст в чат
narrate 'текст' - выводит неоформленный текст в чат
playeffect <имя эффекта> <где> qty:количество - выводит эффект в нужном месте с определенным количеством
debug: false | true - выводить ли в консоль все исполнение скрипта. Указывается после type
<npc.name> - выводит название npc
<npc.location> - считывает координаты npc
<player> - вернет ваш UUID номер
<player.name> - вернет ваш ник
<player.location> - считывает координаты игрока, который обращается к скрипту\npc
<player.health> - считывает кол-во здоровья у игрока
<player.health.max> - считывает максимальное кол-во здоровья у игрока
<context.material> - показывает блок, с которым произошло взаимодействие
<npc.location> - считывает координаты npc
<player> - вернет ваш UUID номер
<player.name> - вернет ваш ник
<player.location> - считывает координаты игрока, который обращается к скрипту\npc
<player.health> - считывает кол-во здоровья у игрока
<player.health.max> - считывает максимальное кол-во здоровья у игрока
<context.material> - показывает блок, с которым произошло взаимодействие
&& - означает и
|| - означает или
|| - означает или
<&co> - заменяет знак :
Все цвета указываются в скобках <>
<green> - зеленый
<red> - красный
<green> - зеленый
<red> - красный
on player breaks <имя блока> - если игрок разрушил этот блок, то что-то делаем
on player breaks block - если игрок разрушил любой блок, то что-то делаем
on player breaks block - если игрок разрушил любой блок, то что-то делаем
click trigger - срабатывает, когда на NPC щелкают правой кнопкой мыши(ПКМ)
chat trigger - срабатывает, когда в чате появляется определенная фраза или слово
chat trigger - срабатывает, когда в чате появляется определенная фраза или слово
Этого нам хватит, чтобы написать первый скрипт. Давайте напишем телепортиста.
Итак, создаем файл, я его назову teleport.yml, вы можете по другому
И начинаем писать
Код:
Teleport: #имя скрипта
type: assignment #говорим что это задание
debug: false #выключаем вывод в консоль
interact scripts: #скрипт, с которого начинаем
- 100 telep #указываем перезагрузку 100 секунд и название, с которого начинаем
telep: #название
type: interact #говорим что это задание
steps: #начинаем создавать шаги
"question*": #первый шаг, * на конце нужна, если в скрипте есть несколько вариантов
click trigger: #срабатываем только когда кликнули по NPC
script: #пишем тело скрипта
- random 2 #говорим, что будем использовать любой из 2 вариантов сообщений чата ниже
- chat 'Ты хочешь чтобы я тебя перенес со спавна?' #первый вариант
- chat 'Хочешь телепортироваться со спавна?' #второй вариант
chat trigger: #назначаем триггер чата, он отслеживает сообщения или слова
'Yes': #Имя триггера
trigger: '/Да/!' #Если в чат написали да(без разницы как: да, Да, дА, ДА)
script: #что делаем, если увидели да
- chat 'Хорошо! Сейчас только прочитаю заклинание.' #выводим сообщение от nps в чат
- narrate '<npc.name> что-то бормочет себе под нос...' #выводим простое сообщение в чат с именем npc
- playeffect cloud <player.location> qty:20 #задаем эффект на месте игрока с кол-вом 20
- playeffect cloud <player.location> qty:30 #задаем эффект на месте игрока с кол-вом 30
- playeffect cloud <player.location> qty:40 #задаем эффект на месте игрока с кол-вом 40
- playeffect flame <player.location> qty:50 #задаем эффект на месте игрока с кол-вом 50
- execute as_server 'tp @p 155 80 -87' #выполняем от имени консоль команду
- playeffect flame <player.location> qty:50 #задаем эффект на месте игрока с кол-вом 50
- chat 'Вы были телепортированы.' #выводим сообщение в чат от имени npc
- zap 'step:succes' #переходим на шаг с именем succes
'succes': #шаг с именем succes
click trigger: #ждем щелчка по npc
script: #начинаем скрипт
- zap 'step:question' #переходим на шаг question, то есть в начало. Это будет цикл, чтобы телепортом можно было пользоваться всегда.
Давайте рассмотрим пример:
Код:
sharp_arrow: #название. т.к. это не задание, можно начинать сразу так
type: item #тип : предмет
debug: false #выключили режим отладки
material: arrow #материал : стрела
display name: Шрапнель #отображаемое имя
lore: #текст у предмета
- <&c>Шрапнель #1-я строка
- <&c>страшная вещь! #2-я строка
recipe: #крафт в верстаке
- i@arrow|i@arrow|i@arrow #верх: стрела \ стрела \ стрела
- i@air|i@air|i@air #середина пусто \ пусто \ пусто
- i@air|i@air|i@air #низ пусто \ пусто \ пусто
Последнее редактирование:
