メインコンテンツまでスキップ

クエストの作成

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

クエストの UI がこのように表示されない場合は、/em alt を使って一致するように変更できます。

このクエスト例では、プレイヤーに test_boss.yml を 1 体倒すという課題が与えられます。(クエストトラッカーに表示されるボスの実際の名前は、test_boss.yml に設定された name: になります。)そしてクエスト達成の報酬として、Magmaguy's Toothpick が 1 つ与えられます。

カスタムクエストの作成

isEnabled

クエストが有効かどうかを設定します。

KeyValuesDefault
isEnabledBooleantrue
isEnabled: true

customObjectives

クエストの目標を設定します。

KeyValuesDefault
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]

テーブルを展開

カスタム目標は以下の値を使って構成します:

KeyDescription
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENAこの目標がどの種類を表すかを設定するために使用します。KILL_CUSTOM はクエストが特定のカスタムボスを倒すものであることを示し、FETCH_ITEM はクエストが特定のカスタムアイテムを入手するものであることを示し、DIALOG はクエストが NPC との会話を含むものであることを示し、ARENA はクエストが特定のアリーナの攻略を含むものであることを示します。
filenameプレイヤーが倒す/入手すべきカスタムボスやカスタムアイテム、会話すべき NPC、攻略すべきアリーナのファイル名を設定するために使用します。
amount倒すべきカスタムボスの数、または入手すべきアイテムの数を設定するために使用します。指定しない場合は 1 になります。
dialogプレイヤーが会話する NPC のセリフを設定するために使用します。
nameクエスト目標の名前(NPC、カスタムアイテム、アリーナのいずれか)を設定するために使用します。表示目的のみです。
itemNameFETCH_ITEM でのみ使用 – この設定はクエストトラッカーでのアイテム名の表示方法を変更します。アイテムの実際のゲーム内名称とは異なるカスタム名を表示できます。

すべてのカスタム目標フィールドは : で区切られることに注意してください!


customRewards

クエストの報酬を設定します。

KeyValuesDefault
customRewardsEliteMobs 共通ルート形式none
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

プレイヤーがクエストを受注するために必要なパーミッションを設定します。

KeyValuesDefault
questAcceptPermissionStringnone
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

プレイヤーがクエストを受注するために必要なパーミッション(複数)を設定します。

KeyValuesDefault
questAcceptPermissionsString Listnone
questAcceptPermissions: 
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

クエスト達成時にプレイヤーが取得し、そのクエストを再び実行できないようにロックするパーミッションを設定します。指定しない場合、クエストロックアウトパーミッションは elitequest.[filename] として自動的に生成されます。

KeyValuesDefault
questLockoutPermissionStringelitequest.[filename]
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

プレイヤーが再びそのクエストを実行できるようになるまで待たなければならない時間を分単位で設定します(クエストロックアウトパーミッションを削除することで機能します)。

KeyValuesDefault
questLockoutMinutesInteger-1(決して繰り返さない)
questLockoutMinutes: 60

name

クエストの名前を設定します。カラーコード を受け付けます。

KeyValuesDefault
nameString[filename]
name: "&aMy Great Quest Name"

questLore

ゲーム内のクエストメニューに表示されるクエストのロア(説明文)を設定します。

KeyValuesDefault
questLoreString Listnone
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

クエストを提出するまでプレイヤーに付与されるパーミッションを設定します。

この設定を使って、プレイヤーが特定のクエストを進行中のときにのみアイテムがドロップするようにする場合は、アイテムの設定ファイルでも同じパーミッションを設定する必要があります。

KeyValuesDefault
temporaryPermissionsString Listnone
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

クエスト受注時にチャットに表示されるダイアログを設定します。

KeyValuesDefault
questAcceptDialogString Listnone
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

クエスト達成時にチャットに表示されるダイアログを設定します。

KeyValuesDefault
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 を使用します。

KeyValuesDefault
questCompleteCommandsString Listnone
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

クエストを達成するためにプレイヤーが会話/対話する必要がある NPC のファイル名を設定します。これは、クエストを渡した NPC と同じである必要はありません

KeyValuesDefault
turnInNPCFilenamenone
turnInNPC: my_cool_quest_npc.yml

クエスト付与者

クエストをプレイヤーに渡す NPC に割り当てるには、クエストファイルではなく NPC ファイルを設定する必要があります。

NPC 設定ファイル(~/plugins/EliteMobs/npcs/)に、以下を追加します:

questFileName: my_quest.yml

複数のクエストを付与する NPC の場合:

questFileName:
- quest_one.yml
- quest_two.yml

NPC の設定に関する詳細は、NPC 作成のドキュメントを参照してください。


trackable

クエストがクエストトラッカーを使用するかどうかを設定します。

KeyValuesDefault
trackableBooleantrue
trackable: true

questLevel

クエストのレベルを設定します。これはプレイヤーがクエストの難易度を把握できるようにするための視覚的な目安にすぎません。ボス、アイテム、その他のレベルを変更することは一切ありません

KeyValuesDefault
questLevelInteger0
questLevel: 10

create_quest_level.jpg


questAcceptSound

クエストが受注されたときに再生されるサウンドを設定します。Minecraft のサウンドの再生と、リソースパックからのサウンドの再生の両方が可能です。

KeyValuesDefault
questAcceptSoundStringnone
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

クエストが達成(提出)されたときに再生されるサウンドを設定します。Minecraft のサウンドの再生と、リソースパックからのサウンドの再生の両方が可能です。

KeyValuesDefault
questCompleteSoundStringnone
questCompleteSound: entity.player.levelup

create_quest_level.jpg


ローカリゼーションサポート

以下のフィールドは、多言語サーバー向けのローカリゼーションをサポートしています:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

これにより、サーバー上のさまざまな言語向けに翻訳を提供できます。


パーミッション

上記の表で述べたように、パーミッションは通常 String または String List です。しかしここでは、クエストをロック・アンロックするためにこれらをどのように使用するか、もう少し詳しく説明します。

たとえば、あなたが計画した一連のクエストの中で quest_3 を作成しているとし、プレイヤーが quest_2 を終える前に quest_3 を受注できないようにしたいとします。その場合、クエストファイルを次のように設定します:

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

questAcceptPermissionselitequest.quest_2.yml に設定することで、プレイヤーが quest_2.yml を終える前に quest_3.yml を受注できないようにしました。
questLockoutPermissionelitequest.quest_3.yml に設定することで、プレイヤーがすでにそのクエストをトラッカーに持っている場合、またはすでにそのクエストを終えている場合に、そのクエストを再び受け取れないようにしました。これにより、プレイヤーがクエストを繰り返すことができなくなります。

プレイヤーが一連のクエストを完了した後にのみ利用可能になるクエストを作成したい場合は、クエストファイルを次のように設定します:

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

正しいクエストが進行中のときにのみ、プレイヤーが特定のアイテムを入手できるようにしたい場合は、temporaryPermissions を使ってそれを実現できます。クエストファイルで temporaryPermissions を使ってパーミッションを作成し、アイテムファイルで permission を使って一致するパーミッションを作成します。

たとえば、クエストファイルを開いて以下を追加します:

temporaryPermissions: 
- elitequest.my_cool_item.yml

次にアイテムファイル、この場合は my_cool_item.yml を開いて以下を追加します:

permission: elitequest.my_cool_item.yml

両方のファイルのパーミッションが一致するようになり、これでプレイヤーが正しいクエストを進行中のときにのみアイテムがドロップするようになります。

ダイナミッククエスト

ダイナミッククエストは、EliteMobs によって自動的に作成・更新される、手続き的に生成されるクエストです。設定ファイルで定義されるカスタムクエストとは異なり、ダイナミッククエストは手動でのセットアップを必要とせず、各プレイヤーの進行状況に適応します。

仕組み

  • クエストティア: プレイヤーのダイナミッククエストティアは戦闘レベルから導き出されます: tier = combatLevel / 5 で、1〜20 の範囲にクランプされます。たとえば、戦闘レベル 45 のプレイヤーはティア 9 のダイナミッククエストを受け取ります。クエスト自体(およびその報酬)はプレイヤーの実際の戦闘レベルに合わせてスケールされ、これは 1〜100 の範囲にクランプされます。
  • ティアごとに 3 つのクエスト: 20 のクエストティアそれぞれに対して、システムは一度に正確に 3 つのランダムなクエスト目標を生成します。プレイヤーには、現在のティアに一致する 3 つのクエストが提供されます。
  • 自動更新サイクル: ダイナミッククエスト目標のプールは 60 秒ごと(1200 ティックごと)に再生成されます。プールが更新されると、新しい目標が古いものと入れ替わり、プレイヤーに入れ替わり立ち替わりのタスクの選択肢が提供されます。
  • ダイナミックダンジョンへの適応: プレイヤーが特定のレベル選択でダイナミックダンジョンに入ると、進行中のすべてのダイナミッククエストがダンジョンの Mob レベルに合わせて適応します。クエストレベル、目標、表示名がそれに応じて更新され、クエストがダンジョンのコンテンツに対して引き続き適切なものになります。