#QUESTS 用來設計任務。本段最後以 -1 結尾。#QUESTS 區段中不可加註解。

#QUESTS
{
<questno:number> <minlevel:number> <maxlevel:number> \
<restrict:number> <questover:number>
<quest english name:string>
<quest chinese name:string>
{
<questindex:number> <rewardtype:number> \
<rewardvalue:number> {<prequest:number>} -1
}
-1
}
-1

基本資料

<questno:number> 任務的編號
<minlevel:number> 要解開這個任務的最小等級(進階等級 +50)
<maxlevel:number> 要解開這個任務的最大等級(進階等級 +50)
<restrict:number> 設定能解此任務之身份限制
<questover:number> 任務的結束子步驟
<quest english name:string> 任務的英文名稱
<quest chinese name:string> 任務的中文名稱

quest entry

<questindex:number> 這個子步驟的 index
<rewardtype:number> 解開這個步驟所能獲得的獎賞種類
<rewardvalue:number> 所能獲得的獎賞值
<prequest:number> 表示要獲得獎賞所必須先解開的子步驟。無則免填。在 rewardvalue 之後,-1 之前的所有號碼都將被視為 prequest。所以 -1 即標明這個 entry 的結束。

一個任務可以有任意數目的子步驟,不過為了整齊起見,請由 1 開始順序排列而下。子步驟的宣告是以 -1 結束,整個 #QUESTS 區段的宣告也是以 -1 結束。

#QUESTS宣告任務區段開始

1 1 50 128 5 questno 是 1,等級 1-50 ,不得為 DM ,最後一步是子步驟 5

quest 1~ 英文名稱

任務一~ 中文名稱

1 0 100 -1 子步驟 1,獲得經驗值 100,不須先完成任何子步驟

2 1 1 -1 子步驟 2,獲得 str 值 1,不須先完成任何子步驟

3 2 1 1 2 -1 子步驟 3,獲得 int 值 1,須先完成子步驟 1 和 2

4 3 -1 3 -1 子步驟 4,獲得 wis 值 -1,須先完成子步驟 3

5 -1 0 4 -1 子步驟 5,沒有任何獎賞,須先完成子步驟 4

-1 此任務之宣告結束

-1 QUESTS 區段結束

任務的實作

#QUESTS 僅是宣告任務的基本資料、完成條件和獎賞。配合 MOBprogram 和以下指令,便可設計出各種多變的任務。

語法

questsetval <victim> <quest-var> <value>
qset <victim> <quest-var> <value>
qadd <victim> <quest-var> <value>
questmark <victim> <quest-number> <quest-index>

qset 是 questsetval 的簡寫,用來設定 quest variable 的值。qadd 則是「自原來的 quest variable 的 value 再往上加」。quest variable 是自訂的,請使用你管轄範圍內的 vnum,以免和其他區域的任務相衝。

<victim> 玩家名(可用變數
<quest-var> 欲設定之變數編號
<value> 欲設定給這變數之值

questmark 則用來設定玩家進行任務之進度。

<victim> 玩家名(可用變數
<quest-number> 任務編號(定義於 #QUESTS 中)
<quest-index> 子步驟編號(定義於 #QUESTS 中)

要注意的是,qset 對應的是 Area Builder 自訂的 quest variable,而 questmark 對應的則是已經在 #QUESTS 中定義的任務編號和子步驟。舉例來說:

quest variable 的範例

>speech_prog hiya~
   qset $n 10001 1
endif

上例是將 $n 的 quest variable 10001 的值設定為 1,玩家不會接受到任何訊息;

questmark 的範例

>speech_prog hiya~
   questmark $n 10001 1
endif

而這則是設定 $n 已經解開了第 10001 號任務的第一個子步驟,也就是大家熟悉的「你剛開始一個任務,希望你能完成它」的瞬間。如果 #QUESTS 中有設定此步驟相應的獎賞,玩家就會看到「你因為完成這個步驟而獲得了…」的訊息和獎賞。如果是最後一步,就會出現「你已經完全解開這個任務了」的成功訊息。

quest variable 能讓我們做出更細膩靈活的任務,例如多線式劇情。quest variable 也並不一定要和 #QUESTS 一起使用。很多隱藏式的任務,或是區域內的一些特效,都是 quest variable 的巧妙運用。使用 MOBprogram 中的判別式,便可以檢驗玩家的 quest value 或任務進度,讓故事有不同的發展。