跳至主要內容

建立任務

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 的目標。(任務追蹤器中顯示的 Boss 實際名稱會是 test_boss.yml 裡所設定的 name:。)作為完成任務的獎勵,玩家會得到 1 個 Magmaguy's Toothpick。

建立自訂任務

isEnabled

設定任務是否啟用。

KeyValuesDefault
isEnabled布林值true
範例
isEnabled: true

customObjectives

設定任務目標。

KeyValuesDefault
customObjectives特殊 [1]

注意:如果你使用多階段 Boss 作為任務目標,那麼目標應該以第一階段作為對象。

範例

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

特殊 [1]

展開表格

自訂目標是使用以下這些值來建構的:

Key說明
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENA用來設定此目標代表的類型。KILL_CUSTOM 表示任務涉及擊殺特定的自訂 Boss,FETCH_ITEM 表示任務涉及取得特定的自訂物品,DIALOG 表示任務涉及與 NPC 交談,而 ARENA 表示任務涉及完成特定的競技場。
filename用來設定自訂 Boss 的檔名、玩家必須擊殺/取得的自訂物品、必須交談的 NPC,或必須完成的競技場。
amount用來設定必須擊殺的自訂 Boss 數量或必須取得的物品數量。若未指定,預設為 1。
dialog用來設定玩家交談對象 NPC 的對話內容。
name用來設定任務目標的名稱,無論是 NPC、自訂物品還是競技場。僅供顯示用途。
itemName僅與 FETCH_ITEM 搭配使用 —— 此設定會改變物品名稱在任務追蹤器中的顯示方式。它讓你能夠顯示一個與物品實際遊戲內名稱不同的自訂名稱。

請注意,每一個自訂目標的欄位都是以 : 分隔的!


customRewards

設定任務獎勵。

KeyValuesDefault
customRewardsEliteMobs 通用戰利品格式
範例
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
questAcceptPermission字串
範例
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

設定玩家必須擁有才能接受任務的多個權限。

KeyValuesDefault
questAcceptPermissions字串列表
範例
questAcceptPermissions: 
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

設定玩家完成任務後會獲得的權限,此權限會將玩家鎖定,使其無法再次進行該任務。若未指定,任務鎖定權限會自動產生為 elitequest.[filename]

KeyValuesDefault
questLockoutPermission字串elitequest.[filename]
範例
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

設定玩家在能夠再次進行該任務之前必須等待多久(以分鐘計)(運作方式是移除任務鎖定權限)。

KeyValuesDefault
questLockoutMinutes整數-1(永不重複)
範例
questLockoutMinutes: 60

name

設定任務名稱。可使用 Color Codes(顏色代碼)。

KeyValuesDefault
name字串[filename]
範例
name: "&aMy Great Quest Name"

questLore

設定任務的說明文字,會出現在遊戲內的任務選單中。

KeyValuesDefault
questLore字串列表
範例
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

設定在玩家繳交任務之前指派給玩家的權限。

如果你使用此設定來確保某個物品只在玩家有特定任務進行中時才掉落,你還需要在該物品的設定檔中設定相同的權限

KeyValuesDefault
temporaryPermissions字串列表
範例
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

設定接受任務時出現在聊天欄中的對話。

KeyValuesDefault
questAcceptDialog字串列表
範例
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

設定完成任務時出現在聊天欄中的對話。

KeyValuesDefault
questCompleteMessage字串列表
範例
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
questCompleteCommands字串列表
範例
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

設定玩家需要與其交談/互動以完成任務的 NPC 檔名。這不必是發出任務的同一個 NPC。

KeyValuesDefault
turnInNPC檔名
範例
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
trackable布林值true
範例
trackable: true

questLevel

設定任務的等級。這只是視覺上的參考,讓玩家能夠判斷任務的挑戰性有多高。這不會以任何方式修改 Boss、物品或其他等級。

KeyValuesDefault
questLevel整數0
範例
questLevel: 10

create_quest_level.jpg


questAcceptSound

設定接受任務時播放的音效。可以播放 Minecraft 音效,也可以播放來自資源包的音效。

KeyValuesDefault
questAcceptSound字串
範例
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

設定任務完成(繳交)時播放的音效。可以播放 Minecraft 音效,也可以播放來自資源包的音效。

KeyValuesDefault
questCompleteSound字串
範例
questCompleteSound: entity.player.levelup

create_quest_level.jpg


在地化支援

以下欄位支援為多語言伺服器提供在地化:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

這讓你能夠為伺服器上的不同語言提供翻譯。


權限

如上方表格所述,權限通常是 字串字串列表。但讓我們更詳細地說明你會如何使用這些權限來鎖定和解鎖任務。

假設你正在製作一系列你已規劃好的任務中的 quest_3,而你不希望玩家在完成 quest_2 之前就能接取 quest_3。我們會像這樣設定任務檔案:

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

透過將 questAcceptPermissions 設定為 elitequest.quest_2.yml,我們現在阻止了玩家在完成 quest_2.yml 之前接取 quest_3.yml。
透過將 questLockoutPermission 設定為 elitequest.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 刻)會重新產生一次。當池子刷新時,新的目標會取代舊的目標,讓玩家獲得一組輪替的任務選擇。
  • 動態地城調適: 當玩家以特定等級選擇進入動態地城時,他們所有的進行中動態任務都會調適以符合該地城的怪物等級。任務等級、目標與顯示名稱都會相應更新,讓任務與地城內容維持相關性。