體例說明 

區域檔案的所有資料都會包含一系列的數值,每個數值都有特別的形式(type),伺服器會從區域檔案之中讀取它所期望得到的值。

在數值(或字串)之前出現的空白字元(空白、換行、空行)都會被忽略掉,因此你可以依自己的喜好和需要編排檔案。

letter 字元 不包含空白字元的單一字元。
word 一串連續但不包含空白字元的字元。
string 字串 以 ~ 符號做為結尾,可以包含空白和換行,無長度限制。
number 數字 十進位的數值,可搭配使用 + - | 等運算元。
to_eol 到行末 從目前所在的檔案位置讀到行尾,多用來讀取註解。
\ 反斜線 為排版方便所作的斷行。實際上要和下一行合併。
{} 大括號 用來包含每個區段的所需元素。{} 中的元素可以重覆出現。

字串雖然沒有長度限制,但太長的話就可能會導致 crash。另外,\ 和 {} 只是說明用的符號,實際寫作時不要寫進檔案裡喔。至於 <value:type> 的詳細寫法,請另外參照各區的教學文件。

補充說明:DR 裡的數字分為 bit 和實際的數字兩種用途,前者如怪物的 act-flags,後者如怪物的等級。 | 在前者的情況下就是逐位運算元,在後者的情況下則是加法運算元。DR 裡的 bit 又可以用文字代替,為方便維護,請多利用文字縮寫記法。適用的有:

#ROOMS room-flags
#MOBILES act-flags, affected-flags
#OBJECTS wear-flags, extra-flags

檔案格式

#AREA <area-name:string>

#HELPS
{
<level:number> <keywords:string>
<help-text:string>
}
0 $~

#MOBILES
{
#<vnum:number>
<keywords:string>
<short-description:string>
<long-description:string>
<description:string>
<act-flags:number> <affected-flags:number> \
<alignment:number> S
<level:number> <hitroll:number> <armor:number> \
<hitnodice:number> d <hitsizedice:number> + \
<hitplus:number> <damnodice:number> d \
<damsizedice:number> + <damroll:number>
<gold:number> <exp:number>
<race:number> <unused:number> <sex:number>
}
#0

#OBJECTS
{
#<vnum:number>
<keywords:string>
<short-description:string>
<long-description:string>
<action-description:string>
<item-type:number> <extra-flags:number> <wear-flags:number>
<value-0:number> <value-1:number> <value-2:number> \
<value-3:number>
<weight:number> <cost:number> <cost-per-day:number>
{
E
<keyword:string>
<description:string>
}
{
A
<apply-type:number> <apply-value:number>
}
{
S
<trigger:number> <percentage:number> <level:number>
<action:string>
<value:string>
}
}
#0

#ROOMS
{
#<vnum:number>
<name:string>
<description:string>
<area:number> <room-flags:number> <sector-type:number>
{
D <door:number>
<description:string>
<keywords:string>
<locks:number> <key:number> <to_room:number>
}
{
E
<keywords:string>
<description:string>
}
{
L
<limit:number>
}
{
A
<prob:number> <restriction:number> <questvar:number> \
<value:number>
<trigger:string>
<acceptor:string>
<action:string>
<argument:string>
<description:string>
}
{
T
<prob:number> <level:number> <spell:string>
<description:string>
}
S
}
#0

#RESETS
{
* <comment:to_eol>
}
{
M <:number> <mob-vnum:number> <limit:number> \
<room-vnum:number> <comment:to_eol>
}
{
O <:number> <obj-vnum:number> <:number> <room-vnum:number> \
<comment:to_eol>
}
{
P <:number> <obj-vnum:number> <:number> <obj-vnum:number> \
<comment:to_eol>
}
{
G <:number> <obj-vnum:number> <:number> <comment:to_eol>
}
{
E <:number> <obj-vnum:number> <:number> <wear_loc:number> \
<comment:to_eol>
}
{
D <:number> <room-vnum:number> <door:number> \
<state:number> <comment:to_eol>
}
{
R <:number> <room-vnum:number> <last-door:number> \
<comment:to_eol>
}
S

#SHOPS
{
<keeper:number> <trade-0:number> <trade-1:number> \
<trade-2:number> <trade-3:number> <trade-4:number> \
<profit-buy:number> <profit-sell:number> \
<open-hour:number> <close-hour:number> <comment:to_eol>
}
0

#SPECIALS
{
* <comment_to_eol>
}
{
M <mob-vnum:number> <spec-fun:word> <comment:to_eol>
}
S

#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

#$