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

Создание квестов

webapp_banner.jpg

Пример квеста

EliteMobs поставляется с предустановленным файлом test_quest.yml, который будет проанализирован здесь как простой формат квеста для следования.

Пользовательские квесты находятся в папке ~plugins/EliteMobs/customquests!

test_quest.yml

isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

create_quest_quest.jpg

Если ваш интерфейс квестов не выглядит так, вы можете изменить его с помощью /em alt.

Этот пример квеста даст игрокам задачу убить 1 test_boss.yml. (Фактическое имя босса, отображаемое в трекере квестов, будет name:, установленное в test_boss.yml.) И в качестве награды за выполнение квеста они получат 1 Зубочистку Magmaguy.

Создание пользовательских квестов

customObjectives

Устанавливает цели квеста.

КлючЗначенияПо умолчанию
customObjectivesSpecial [1]none

Примечание: Если вы используете многофазного босса в качестве цели, то целью должна быть первая фаза.

Примеры

KILL_CUSTOM:

customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM

DIALOG:

customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG

FETCH_ITEM:

customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM

ARENA:

customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

create_quest_objective.jpg

Special [1]

Развернуть таблицу

Пользовательские цели создаются с использованием следующих значений:

КлючОписание
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENAИспользуется для установки типа цели. KILL_CUSTOM означает, что квест включает убийство определенного Custom Boss, FETCH_ITEM означает, что квест включает получение определенного Custom Item, DIALOG означает, что квест включает разговор с NPC, а ARENA означает, что квест включает прохождение определенной арены.
filenameИспользуется для установки имени файла Custom Boss, Custom Item, которого игрок должен убить / получить, NPC, с которым нужно поговорить, или арены, которую нужно пройти.
amountИспользуется для установки количества Custom Bosses, которых нужно убить, или предметов, которые нужно получить. По умолчанию 1, если не указано.
dialogИспользуется для установки диалога NPC, с которым разговаривает игрок.
nameИспользуется для установки имени цели квеста, будь то NPC, пользовательский предмет или арена. Только для визуальных целей.
itemNameИспользуется только с FETCH_ITEM – Эта настройка изменяет отображение имени предмета в трекере квестов. Она позволяет отображать пользовательское имя, отличное от фактического внутриигрового имени предмета.

Обратите внимание, что каждое поле Custom Objective разделяется : !


customRewards

Устанавливает награды за квест.

КлючЗначенияПо умолчанию
customRewardsUniversal EliteMobs loot formatnone
Пример
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

create_quest_rewards.jpg

Примечание: Если вы не указываете customRewards, система квестов автоматически сгенерирует награды на основе уровня квеста. Качество наград масштабируется в зависимости от сложности квеста и включает как валюту, так и предметы. Для точного контроля над наградами всегда явно указывайте customRewards.


questAcceptPermission

Устанавливает разрешение, которое должен иметь игрок, чтобы принять квест.

КлючЗначенияПо умолчанию
questAcceptPermissionStringnone
Пример
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

Устанавливает разрешения, которые должен иметь игрок, чтобы принять квест.

КлючЗначенияПо умолчанию
questAcceptPermissionsString Listnone
Пример
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

Устанавливает разрешение, которое игрок получит после завершения квеста, что заблокирует ему возможность снова выполнить квест. Если не указано, разрешение на блокировку квеста автоматически генерируется как elitequest.[filename].

КлючЗначенияПо умолчанию
questLockoutPermissionStringelitequest.[filename]
Пример
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

Устанавливает, сколько минут игроку придется ждать, прежде чем он сможет снова выполнить квест (работает путем удаления разрешения на блокировку квеста).

КлючЗначенияПо умолчанию
questLockoutMinutesInteger-1(никогда не повторится)
Пример
questLockoutMinutes: 60

name

Устанавливает имя квеста. Принимает Color Codes.

КлючЗначенияПо умолчанию
nameStringnone
Пример
name: "&aMy Great Quest Name"

questLore

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

КлючЗначенияПо умолчанию
questLoreString Listnone
Пример
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

Устанавливает разрешения, назначенные игроку до тех пор, пока он не сдаст квест.

Если вы используете эту настройку для обеспечения выпадения предмета только когда у игроков активен определенный квест, вам также нужно настроить Same Permission в конфигурационном файле предмета.

КлючЗначенияПо умолчанию
temporaryPermissionsString Listnone
Пример
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

Устанавливает диалог, который появляется в чате при принятии квеста.

КлючЗначенияПо умолчанию
questAcceptDialogString Listnone
Пример
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

Устанавливает диалог, который появляется в чате при завершении квеста.

КлючЗначенияПо умолчанию
questCompleteMessageString Listnone
Пример
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

create_quest_complete.jpg


questCompleteCommands

Устанавливает команды, которые будут выполнены при завершении квеста. Поддерживает плейсхолдеры: $player для имени игрока и $getX, $getY, $getZ для координат местоположения игрока.

КлючЗначенияПо умолчанию
questCompleteCommandsString Listnone
Пример
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

Устанавливает имя файла NPC, с которым игрокам нужно поговорить/взаимодействовать для завершения квеста. Это не обязательно должен быть тот же NPC, который выдал квест.

КлючЗначенияПо умолчанию
turnInNPCFilenamenone
Пример
turnInNPC: my_cool_quest_npc.yml

Quest Givers

Чтобы назначить квест NPC, который будет выдавать его игрокам, вам нужно настроить файл NPC, а не файл квеста.

В файле конфигурации NPC (~/plugins/EliteMobs/npcs/) добавьте:

questFileName: my_quest.yml

Для NPC, которые выдают несколько квестов:

questFileName:
- quest_one.yml
- quest_two.yml

Смотрите документацию по созданию NPC для получения дополнительной информации о настройке NPC.


trackable

Устанавливает, будет ли квест использовать трекер квестов.

КлючЗначенияПо умолчанию
trackableBooleantrue
Пример
trackable: true

questLevel

Устанавливает уровень квеста. Это только визуальная подсказка, чтобы игроки могли определить, насколько сложным будет квест. Это не влияет на уровень боссов, предметов или других элементов.

КлючЗначенияПо умолчанию
questLevelInteger0
Пример
questLevel: 10

create_quest_level.jpg


questAcceptSound

Устанавливает звук, который воспроизводится при принятии квеста. Возможно воспроизводить как звуки Minecraft, так и звуки из ресурс-пака.

КлючЗначенияПо умолчанию
questAcceptSoundStringnone
Пример
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

Устанавливает звук, который воспроизводится при завершении квеста (сдаче). Возможно воспроизводить как звуки Minecraft, так и звуки из ресурс-пака.

КлючЗначенияПо умолчанию
questCompleteSoundStringnone
Пример
questCompleteSound: entity.player.levelup

create_quest_level.jpg


Localization Support

Следующие поля поддерживают локализацию для многоязычных серверов:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

Это позволяет вам предоставлять переводы для разных языков на вашем сервере.


Permissions

Как упоминалось в таблицах выше, разрешения обычно являются Strings или String Lists. Но давайте более подробно рассмотрим, как вы будете использовать их для блокировки и разблокировки квестов.

Предположим, что вы создаете quest_3 в серии квестов, которые вы запланировали, и вы не хотите, чтобы игроки могли взять quest_3 до того, как они закончат quest_2. Мы настроили бы файл квеста следующим образом:

questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml

Установив questAcceptPermissions на elitequest.quest_2.yml, мы теперь предотвратили возможность игроков взять quest_3.yml до того, как они закончат quest_2.yml.
Установив questLockoutPermission на elitequest.quest_3.yml, мы предотвратили возможность игроков получить этот квест, пока у них уже есть этот квест в трекере или если они уже выполнили этот квест. Это останавливает игроков от возможности повторить квест.

Если вы хотите сделать квест, который станет доступным только после того, как игроки завершат серию квестов, то вы настроите файл квеста следующим образом:

questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml

Если вы хотите, чтобы игроки могли получать определенные предметы только когда у них активен правильный квест, то мы можем сделать это с помощью temporaryPermissions. Мы создадим разрешение в файле квеста, используя temporaryPermissions, затем создадим соответствующее permission в файле предмета, используя permission.

Например, мы откроем наш файл квеста и добавим следующее:

temporaryPermissions:
- elitequest.my_cool_item.yml

Затем мы откроем файл предмета, в нашем случае my_cool_item.yml, и затем добавим следующее:

permission: elitequest.my_cool_item.yml

Оба файла теперь имеют соответствующие разрешения, что теперь должно сделать наш предмет доступным для выпадения только когда у игроков активен правильный квест.