Перейти к основному содержимому

Создание NPC

webapp_banner.jpg

Настройки конфигурации

isEnabled

Задаёт, включён ли NPC.

KeyValuesDefault
isEnabledBooleantrue
Пример
isEnabled: true

name

Задаёт отображаемое имя NPC. Поддерживает Цветовые коды и ключи перевода для многоязычных серверов.

KeyValuesDefault
nameStringnone
Пример
name: "&aEnn Peecee"

create_npc_name.jpg


scale

Задаёт масштаб (размер) NPC.

KeyValuesDefault
scaleMultiplier1.0

При масштабировании 1.0 представляет размер по умолчанию. Чтобы сделать сущность больше, увеличьте значение (например, 1.2). Чтобы сделать сущность меньше, уменьшите значение (например, 0.8).

Пример
scale: 1.2

role

Задаёт роль NPC под именем. Только визуальная. Поддерживает Цветовые коды и ключи перевода для многоязычных серверов.

KeyValuesDefault
roleStringnone
Пример
role: "&c<Red Fellow>"

create_npc_role.jpg


profession

Задаёт профессию NPC, которая задаёт его скин, когда не используется маскировка.

KeyValuesDefault
professionProfessionNITWIT
Пример
profession: NITWIT

create_npc_profession.jpg


greetings

Задаёт список приветствий, которые NPC произносит при приближении игрока. Поддерживает ключи перевода для многоязычных серверов.

KeyValuesDefault
greetingsString Listnone
Пример
greetings:
- Hi there!
- Good day.

create_npc_greetings.jpg


dialog

Задаёт диалог, который NPC будет произносить, пока игрок находится рядом (в случае interactionType DIALOG это и будет диалогом). Поддерживает ключи перевода для многоязычных серверов.

KeyValuesDefault
dialogString Listnone
Пример
dialog:
- I like apples!
- Sure is hot.

create_npc_dialog.jpg


farewell

Задаёт прощальное сообщение NPC. Поддерживает ключи перевода для многоязычных серверов.

KeyValuesDefault
farewellString Listnone
Пример
farewell: 
- Until next time!
- Bye!

create_npc_farewell.jpg


canTalk

Задаёт, может ли NPC разговаривать.

KeyValuesDefault
canTalkBooleantrue
Пример
canTalk: true

activationRadius

Задаёт радиус, в котором NPC может обнаружить приближающегося игрока.

KeyValuesDefault
activationRadiusDouble3.0
Пример
activationRadius: 3.0

scripts

Задаёт Lua-скрипты, привязанные к этому NPC. Файлы скриптов загружаются из plugins/EliteMobs/npc_scripts/, и имена файлов должны совпадать точно, включая расширение .lua.

KeyValuesDefault
scriptsString Listnone

Скрипты NPC могут реагировать на хуки жизненного цикла, взаимодействия и близости, такие как on_npc_proximity_enter. См. Lua-скрипты NPC для полного API и примеров.

Пример
scripts:
- wave.lua

interactionType

Задаёт тип взаимодействия, которое будет выполнять NPC.

KeyValuesDefault
interactionTypeОсобое [1]none
Пример
interactionType: TELEPORT_BACK

noPreviousLocationMessage

Когда у NPC-телепортёра нет предыдущего местоположения, куда он может телепортировать игрока, он отобразит это сообщение. Принимает Цветовые коды и ключи перевода для многоязычных серверов.

KeyValuesDefault
noPreviousLocationMessageStringnone
Пример
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

create_npc_noteleportlocation.jpg


timeout

Задаёт количество времени в минутах, прежде чем NPC исчезнет навсегда.

KeyValuesDefault
timeoutDouble0 (никогда)
Пример
timeout: 0

questFileName

Задаёт задания, которые выдаёт NPC.

KeyValuesDefault
questFileNameString Listnone
Пример
questFileName:
- my_quest_one.yml
- my_quest_two.yml

disguise

Задаёт маскировку LibsDisguises, которую имеет NPC.

KeyValuesDefault
disguiseФормат LibsDisguisesnone
Пример
disguise: SKELETON

create_npc_disguise.jpg


customDisguiseData

Задаёт данные для кастомной маскировки LibsDisguises.

KeyValuesDefault
customDisguiseDataФормат LibsDisguisesnone
Пример
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

create_npc_custom_disguise.jpg


customModel

Задаёт кастомную модель ModelEngine, которую будет использовать NPC.

KeyValuesDefault
customModelStringnone
Пример
customModel: MY_MODEL_ONE

arena

Задаёт имя файла арены, для которой NPC откроет меню (требует interactionType ARENA_MASTER).

KeyValuesDefault
arenaFilenamenone
Пример
arena: my_arena.yml

command

Задаёт команду, которую выполнит NPC (требует interactionType COMMAND). Команды выполняются от имени игрока, а не от имени консоли. Не включайте ведущий слеш (/).

KeyValuesDefault
commandStringnone
Пример
command: say Look at me running a command, how cool!

create_npc_command.jpg


spawnLocation

Задаёт местоположение спавна NPC. Вам следует задавать это через команду /em place npc <npcfilename.yml>.

KeyValuesDefault
spawnLocationStringnone
Пример
spawnLocation: my_world,10,50,10,0,0

spawnLocations

Задаёт местоположения спавна NPC. Вам следует задавать это через команду /em place npc <npcfilename.yml>.

KeyValuesDefault
spawnLocationsString Listnone
Пример
spawnLocations: 
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0

instanced

Задаёт, должен ли NPC быть инстансовым (для использования в инстансовых подземельях). Когда установлено в true, NPC автоматически клонируется для каждого инстанса подземелья, и каждый клон существует в соответствующем мире инстанса.

KeyValuesDefault
instancedBooleanfalse
Пример
instanced: false

syncMovement

Задаёт, должно ли движение NPC синхронизироваться. Используется для контроля того, синхронизируются ли обновления позиции NPC.

KeyValuesDefault
syncMovementBooleantrue
Пример
syncMovement: true

Пример конфигурации NPC
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
questFileName:
- my_quest.yml #npc interactionType must be set to CUSTOM_QUEST_GIVER
disguise: SKELETON
customDisguiseData: #used when a custom libsdisguise is being set
customModel: MODEL_ONE
arena: my_arena.yml #npc interactionType must be set to ARENA_MASTER
command: say Hello World! #npc interactionType must be set to COMMAND (do not include the leading slash)
spawnLocation: my_world,584,55,127,90,10 #remember that NPCs use pitch and yaw to set where they are looking at. this is also automatically set when running the /em place npc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

create_npc_npc.jpg


Особое [1]

Ниже приведён список допустимых типов взаимодействия NPC:

TypeDescription
GUILD_GREETERОткрывает меню выбора бонуса навыка оружия
CHATПравый клик перебирает реплики dialog
CUSTOM_SHOPОткрывает меню кастомного магазина
PROCEDURALLY_GENERATED_SHOPОткрывает процедурно сгенерированный магазин
BARНе реализовано. Сообщает игроку, что функция скоро появится.
ARENAНичего не делает. Используйте ARENA_MASTER вместо этого.
QUEST_GIVERОткрывает меню процедурно сгенерированных заданий
CUSTOM_QUEST_GIVERОткрывает меню заданий для конкретного задания, заданного в questFileName
NONEБез взаимодействий
SELLОткрывает меню продажи
TELEPORT_BACKТелепортирует игроков обратно в последнее местоположение в мире, не относящемся к elitemobs, где они были
SCRAPPERОткрывает меню утилизации
REPAIRMANОткрывает меню ремонта
ENCHANTERОткрывает меню зачарования
REFINERЗАМЕНЕНО — сообщает игроку, что функция была заменена; администраторам предлагается удалить NPC
SMELTERЗАМЕНЕНО — сообщает игроку, что функция была заменена; администраторам предлагается удалить NPC
ENHANCERЗАМЕНЕНО — сообщает игроку, что функция была заменена; администраторам предлагается удалить NPC
UNBINDERОткрывает меню развязывания
ARENA_MASTERОткрывает меню арены для арены, заданной в arena
COMMANDВыполняет команду, заданную в command
SCROLL_APPLIERПрименяет элитные свитки предметов к предметам
ARROW_SHOPОткрывает меню магазина стрел
GAMBLING_BLACKJACKОткрывает азартную игру в блэкджек
GAMBLING_COINFLIPОткрывает азартную игру в подбрасывание монеты
GAMBLING_SLOTSОткрывает азартную игру в слоты
GAMBLING_HIGHERLOWERОткрывает азартную игру «больше/меньше»

Подробнее о том, что делают SCRAPPER и похожие типы взаимодействия, нажмите здесь.

Примечания о поведении NPC

У NPC есть несколько жёстко заданных вариантов поведения, которые нельзя настроить:

  • ИИ отключён: NPC не могут двигаться самостоятельно. Они остаются на своём месте спавна.
  • Отображение роли: текст роли отображается на невидимой подставке для брони над NPC на фиксированной высоте.
  • Перезарядка диалогов: NPC ждут 3 секунды между событиями речи, чтобы предотвратить наложение сообщений.
  • Жизненный цикл чанков: NPC исчезают, когда их чанк выгружается, и снова появляются, когда он перезагружается.