Citizens - создание NPC с квестами
Как создать интерактивных NPC с квестами при помощи Citizens и Denizen
Что такое Citizens?
Citizens — это мощный плагин для создания NPC (Non-Player Characters) на серверах Minecraft. С его помощью можно создавать живых персонажей, которые могут выполнять различные действия: торговать, давать квесты, охранять территорию и многое другое.
Скачать Citizens можно с официальной страницы SpigotMC
Что такое Denizen?
Denizen — это дополнительный плагин для Citizens, который добавляет возможность создания скриптов. С его помощью можно программировать поведение NPC: диалоги, квесты, реакции на действия игроков.
Скачать Denizen можно с официальной страницы SpigotMC
Установка Citizens и Denizen
Шаг 1: Скачайте Citizens.jar и Denizen.jar
Шаг 2: Поместите оба файла в папку plugins
Шаг 3: Перезапустите сервер
Шаг 4: Проверьте установку командой /npc help и /denizen version
Важно! Denizen требует наличия Citizens. Устанавливайте оба плагина вместе.
Создание базового NPC
Основные команды Citizens
Создать NPC:
/npc create [имя] - создать NPC с именем
/npc create Торговец - пример
Удалить NPC:
/npc remove - удалить выбранного NPC
Выбрать NPC:
/npc select - выбрать NPC, на которого вы смотрите
Переместить NPC:
/npc tp - телепортировать NPC к вам
/npc move - переместить NPC на место, куда вы смотрите
Настройка внешнего вида NPC
Изменение скина
/npc skin [ник_игрока] - установить скин игрока
/npc skin Notch - пример
Или использовать URL скина:
/npc skin --url [URL]
Изменение типа NPC
По умолчанию создается человек, но можно создать любого моба:
/npc type [тип]
/npc type zombie - создать зомби
/npc type villager - создать жителя
/npc type cow - создать корову
Экипировка NPC
/npc equipment - открыть меню экипировки
Или через команды:
/npc equip helmet [предмет] - надеть шлем
/npc equip chest [предмет] - надеть нагрудник
Базовое взаимодействие
Текст при клике
Самый простой способ добавить взаимодействие:
/npc text add "Привет, путник!"
/npc text add "Хочешь купить зелье?"
NPC будет говорить эти фразы по очереди при каждом клике.
Удалить текст:
/npc text remove [номер]
/npc text clear - удалить весь текст
Команды при клике
Можно заставить NPC выполнять команды:
/npc command add heal /heal <p>
/npc command add feed /feed <p>
<p> заменяется на имя игрока, который кликнул.
Создание диалогов с Denizen
Теперь самое интересное - создание квестов и диалогов!
Пример простого диалога
Создайте файл в plugins/Denizen/scripts/dialog.yml:
quest_npc_dialog:
type: assignment
actions:
on assignment:
- trigger name:click state:true
interact scripts:
- quest_dialog
quest_dialog:
type: interact
steps:
1:
click trigger:
script:
- narrate "Привет, <player.name>!"
- narrate "Я торговец из соседнего города."
- narrate "Не хочешь помочь мне с одним делом?"
- flag player quest_started
- zap 2
2:
click trigger:
script:
- if <player.has_flag[quest_started]>:
- narrate "Принеси мне 10 пшеницы, и я награжу тебя!"
- else:
- narrate "Спасибо за помощь!"
Привязка скрипта к NPC
После создания скрипта:
/ex reload
/npc assignment --set quest_npc_dialog
Пример простого квеста
Создадим квест “Собрать 10 пшеницы”:
wheat_quest:
type: interact
steps:
offer_quest:
click trigger:
script:
- narrate "Мне нужно 10 пшеницы!"
- narrate "Принесешь?"
- flag player wheat_quest_active
- zap check_wheat
check_wheat:
click trigger:
script:
- if <player.inventory.quantity[wheat]> >= 10:
- narrate "Отлично! Вот твоя награда!"
- take item:wheat quantity:10
- give diamond quantity:5
- flag player wheat_quest_active:!
- zap offer_quest
- else:
- narrate "У тебя всего <player.inventory.quantity[wheat]> пшеницы."
- narrate "Нужно еще <[10].sub[<player.inventory.quantity[wheat]>]>!"
Полезные команды
Список всех NPC:
/npc list
Информация о NPC:
/npc info
Сделать NPC неуязвимым:
/npc vulnerable false
Изменить имя NPC:
/npc name [новое_имя]
Разрешить/запретить столкновения:
/npc collidable false
Частые проблемы
1. NPC не реагирует на клики
- Проверьте, что скрипт загружен:
/ex reload - Убедитесь, что назначен assignment:
/npc assignment
2. Скрипт выдает ошибки
- Проверьте отступы в YAML (используйте пробелы, не табы!)
- Посмотрите ошибки в консоли сервера
3. NPC исчезает после перезагрузки
- Убедитесь, что сохранение включено в config.yml плагина Citizens
4. Несколько игроков не могут одновременно взаимодействовать с NPC
- Это нормально для некоторых типов скриптов
- Используйте флаги игроков вместо глобальных переменных
Дополнительные возможности
Citizens поддерживает множество дополнений:
- Sentinel - боевые NPC и охранники
- Citizens Trader - торговля с NPC
- BetonQuest - расширенная система квестов
Полезные ссылки
С Citizens и Denizen вы можете создать уникальный игровой опыт на вашем сервере! От простых торговцев до сложных квестовых цепочек.