Lomu
Активный участник
- Баллы
- 61
Перевод Tutorial'a по плагину Denizen
Обозначения:
п\ - примечание переводчика, дополнение, команда
синий цвет текста - скрипт
Привет всем! Спасибо за использование Denizen. Ищете с чего начать? Читайте!
Итак, что же такое Denizen? Лучше всего это классифицируется, как платформа для создания скриптов. Denizen использует сценариии, и различные другие компоненты, предоставленные Denizen API. Я рекомендую пользователям начать с малого, и медленно двигаться вперед, открывая перед собой новые возможности.
Denizen взаимодействует с NPC? Да, правда. Denizen наиболее известен как способ создания NPC способных выполнять скрипты написанные вами. Это довольно просто, и для этого есть куча классных спецификаций, команд и тегов, которые можно использовать.
Вот небольшой пример который я назвал "Печенье". Обычно я комментирую скрипт, но этот представлен без каких-либо пометок.
Cookies:
type: assignment
interact scripts:
- 100 Cookie Handler
Cookie Handler:
type: interact
steps:
'Spreading the Word*':
click trigger:
script:
- random 3
- chat 'I like cookies!'
- chat 'MMmm.. cookies are favorite!'
- chat 'Cocoa and wheat me freak!'
chat trigger:
'Cookies':
trigger: 'I love /cookie/s!'
script:
- chat 'Me too!'
- narrate '<npc.name> gives you some cookies.'
- give i@cookie qty:6
- zap 'step:Cookies given'
'Cookies given':
click trigger:
script:
- chat 'How were the cookies?'
- zap 'step:Spreading the Word'
Это простой сценарий, который создает NPC любящего печенья. Назвать его можно как угодно, но я считаю, что смешно будет назвать его 'Notch'. Создать NPC, который будет использовать этот сценарий, невероятно просто.
п\ /npc create <name>
п\ /npc select (если NPC не выбран)
Теперь привязываем скрипт к NPC следующей командой:
/npc assigment --set cookies
п\ после --set идет название вашего скрипта
При нажатии на NPC скрипт будет активирован. Печенья конечно крутая вещь, но не приносят никакой пользы, это лично мое мнение. Что насчет лекаря? Следующий скрипт будет лечить вас, если ваше здоровье на низком уровне.
Basic Healer:
type: assignment
interact scripts:
- 100 heal me, bro!
Heal me, bro!:
type: interact
steps:
"Need a heal?*":
click trigger:
script:
- if '<player.health>' < '<m:<player.health.max> / 2>' {
- look <player.location>
- chat 'Woah dude, you are <player.health.formatted>! You could use a heal!'
- chat 'Just give me another click to get some power!'
- zap "Healin'" duration:30s
} else {
- look <player.location>
- chat 'Nice an healthy. Keep it up!'
}
"Healin'":
click trigger:
script:
- ^zap 'need a heal?'
- ^engage
- chat "Here goes nothin'!"
- playeffect instant_spell <npc.location> qty:25
- playeffect heart <player.location> qty:25 offset:1
- heal <player>
- disengage
Как привязать скрипт к NPC? Выбираем NPC и вводим команду:
/npc assigment --set 'basic healer'
п\ если название скрипта состоит более чем из двух слов,выделяйте их кавычками
Скрипты можно использовать не только для NPC. Наверное я говорил вам уже это, но Denizen имеет и некоторые другие типы сценариев, которые выходят далеко за рамки основного функционала, не используя NPC.
Один из моих любимых простых сценариев, который делает игрока невидимым, когда он крадется. Это простой скрипт, но при этом он прекрасно показывает возможности Denizen.
Rogue:
type: world
debug: false
events:
on player starts sneaking:
- playeffect <p.location> magic_crit qty:10
- invisible <player> state:true
on player stops sneaking:
- invisible <player> state:false
Даже маленькие скрипты могут полезны для вашего сервера. Иногда скрипты Denizen могут заменить Bukkit-плагины, оператор который поможет нам в этом выполняет команды от имени сервера. У вас есть плагин который выполняет команды каждый раз в определенное время? Замените его скриптом Denizen.
Auto Save Event Handler:
type: world
debug: false
events:
on 5:00 in world:
- announce 'Autosaving...'
- execute as_server 'denizen save'
- execute as_server 'citizens save'
- execute as_server 'save-all'
Используйте Denizen для простого решения сложных задач. Если вы знакомы и используете Citizens, то скорее всего знаете о команде /butcher которая плохо относится к мобам типа NPC.Она убирает их тоже, что не очень хорошо. Давайте напишем свою '/butcher' команду.
Safer Butcher Handler:
type: world
debug: false
events:
on sbutcher command:
- narrate 'Removing all mob entities within 15 blocks... your NPCs are safe!'
- foreach <player.location.find.entities.within[15]> {
- if <%value%.is_mob>
remove %value%
}
п\ Являясь владельцем сервера Minecraft я ни разу не встречался с подобной командой. Но всем известна команда которая убирает мобов в определенной области. В таком случае она заменяет ее.
п\ Также хочу отметить, что скрипты с типом 'world' не надо ни к чему привязывать. Вы просто отправляете их в папку scripts.
СС
Ссылка на оригинал: http://dev.bukkit.org/bukkit-plugins/denizen/
На этом перевод значимой части туториала заканчивается. Некоторые слова были заменены синонимами, также некоторые 'фразочки' автора туториала были убраны за ненадобностью. Смысловая нагрузка не потеряна, а объем текста уменьшен.
Если вы хотите, чтобы я разобрал детально некоторые скрипты пишите в комментарии. Если требуется разъяснение каких либо команд, я жду вас там же. Личные просьбы - в лс.
Спасибо за внимание, ваш Lomu.
Последнее редактирование: