| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Stop wasting time looking for files and revisions. Connect your Gmail, DriveDropbox, and Slack accounts and in less than 2 minutes, Dokkio will automatically organize all your file attachments. Learn more and claim your free account.

View
 

MUDLIB各目錄功能詳解

Page history last edited by PBworks 13 years, 8 months ago

      現在大部分中文MUD都是在東方故事(esII)基礎上發展起來的,其目錄結構基本一樣,也有個別MUD為了標新立異對個別目錄換了個名字以示不同,但其實質沒有什麼變化。

 

 

    這個做的最可惡的是xkx,把一個好好的daemon目錄換成了一個不土不洋的kungfu,裡邊卻還是skill,condition這些洋名,簡直讓人faint!我實在看不出這種修改有什麼好處,除了添麻煩(xkx對一些命令的漢化,什麼cha,du...也是如此)。不過,也有一些是為了系統更合理而修改的。

 

 

 

    對MUDLIB目錄的解釋已經有許多版本了,基本也沒什麼區別,下邊是我的解釋,以我自己整理的一份MUDLIB為基礎,如果有目錄不同的地方適當貫通就是了。

 

/adm 這裡是最基本,最底層的程序,是整個MUD的控制樞紐。這個目錄只有admin權限可以修改。

 

/adm/daemons 守護程序目錄。守護程序是指遊戲中頻繁調用的控制類程序,MUD里各種基本功能都是由這些程序控制的。這些程序一般在遊戲一啟動就自動載入內存。

 

 

    按照unix下文件命名習慣,這裡的程序多以d.c結尾,比如combatd.c就是控制戰鬥的程序。另外由於這些程序調用非常頻繁,一般都做了宏定義(查看/include/globals.h),例如/adm/daemons/combatd.c

定義為COMBAT_D,在其它程序里可以適用這些宏定義代替這些文件名。

 

 

 

/adm/etc 系統配置目錄,此目錄定義為CONFIG_DIR 這裡放的是遊戲的系統文檔文件,比如遊戲的歡迎畫面,巫師列表,BAN掉的IP記錄等。

/adm/obj 這裡只有兩個文件,但卻是整個MUD最重要的東西。

 

 

master.c:這是MudOS主控物件,也就是整個MUD的總司令。

 

 

simul_efun.c:防真函數加載精靈,這是MUD啟動時第一個要載入的東西。所謂efun,是指系統函數,也就是mudos中定義的函數。這些函數不必做任何說明可以在MUD的任何程序里直接調用,而且由於他們是預先定義的,也就是mudos早已經知道他們是做什麼的,所以比其它在MUDLIB里定義的函數執行效率要高。但他們的缺點是修改非常不方便,對任何一個efun函數的修改必須重新編譯mudos才能生效。因此,在MUDLIB中又有了防真函數的定義,也就是simul_efun,這些函數的作用跟efun完全一樣,不同的是他們定義在UDLIB中,可以隨時修改,但必須重新啟動遊戲才能生效。

 

 

順便講一下一個MUD啟動的過程,MUD啟動的初始化過程分以下幾步:

 

 

1.載入防真函數simul_efun

2.載入主控物件master,這裡是調用master的create()函數將其載入內存。

3.載入需要預先載入的守護程序,這裡調用master的preload()函數,需要預先載入的文件定義在/adm/etc/preload里。

4.MUD進入多用戶狀態,允許玩家登錄。

    以上過程必須正確無誤的執行完,否則遊戲無法正確啟動。

    master.c和simul_efun.c這兩個文件只能在遊戲啟動時由mudos自動載入,不可以在遊戲中用update的方法載入,而且這兩個物件也不允許非ROOT權限的物件摧毀(destruct)它,因為他們的摧毀就等於遊戲關閉 。

 

/adm/simul_efun 防真函數目錄,這裡放的是定義各類防真函數的文件,這些文件由SIMUL_EFUN_OB(也就是/adm/obj/simul_efun)來載入內存。

 

 

 

/cmds 遊戲命令目錄,這裡放的是遊戲中可以使用的各種命令,只有admin才可以修改這個目錄

/cmds/adm 只有(god)可以使用的命令

/cmds/adm 只有(admin)可以使用的命令

/cmds/arch 只有(arch)以上才可以使用的命令

/cmds/wiz 只有(wizard)以上才可以使用的命令

/cmds/app 只有(wizard)以上才可以使用的命令

/cmds/imm 只有(immortal)以上才可以使用的命令

/cmds/usr 只有普通玩家(player)以上才可以使用的命令

/cmds/std 所有生物(npc and player)都可以使用的命令命令目錄採用子集格式,權限高的命令完全包含權限低的命令,比如天神可以使用所有遊戲命令,普通玩家只能使用/cmds/usr和/cmds/std目錄下的命令。

 

 

 

/data 遊戲數據目錄,只有arch以上權限才可以修改這個目錄

/data/board 各個留言板的數據

/data/login 玩家登錄數據

/data/user 玩家檔案,呵呵,這裡記錄的是每個玩家的所有勞動成果

/data/npc 一些特殊npc的數據,比如商店老闆

/data/daemon 重要的系統數據,比如emote詞,英漢翻譯詞典

/data/mail 玩家信件

 

 

/feature 標準繼承函數。只有admin才可以對這個目錄進行修改這些函數是非常重要的,是MUD里各種物件,包括玩家,NPC,物品,房間等的各種功能的標準定義,這些函數反映了整個MUD的與眾不同之處,一個好的MUDLIB必然要對這些函數進行優化。而要設計新的程序,必須對這個目錄所有文件有所瞭解。

 

 

/obj 系統物件,這是經常在MUD里被調用的各種物件。這個目錄下的物件被覆制後跟調用他的物件具有相同的euid,也就是說具有相同的權限,所以,這裡的一個 npc如果經admin編譯後複製出來,也具有了admin權限。這點非常重要,有些物件必須具有跟玩家相同的euid才能正常使用,比如符紙。而出於安全考慮,這個目錄下的物件不可以隨便複製。只有arch以上才可以修改此目錄。

 

 

/obj/board 遊戲中各個留言板

/obj/npc 一些特殊的NPC

/obj/sheet 各種符紙

/obj/weapons 兵器

/obj/misc 其它亂七八糟的東西,比如信箱等

 

 

/quest 遊戲里各種任務quest的文件,此目錄需要wizard以上權限才可以修改

 

 

 

/binaries 文件編譯過程生成的二進制文件,此目錄ROOT權限才可以修改

 

 

 

/d 區域目錄,遊戲的地圖門派和NPC存放的地方。此目錄wizard以上權限可以修改。這裡是整個MUDLIB最簡單最常用的東西,也是玩家可以直接接觸到的東西。玩家所呆的任何一個房間都應該對應這個目錄下的一個文件,房間里每個NPC也都對應一個文件。這個目錄下存在許多子目錄,分別對應遊戲的不同區域 (domain)。

 

/open 系統公開目錄,任何人都具有寫權限。

 

 

/include 頭文件目錄,只有admin可以修改。這裡放的是遊戲中各個文件所需要的頭文件,其中以下幾個特別重要:

 

 

    globals.h:全局定義的頭文件,這是一個特殊的頭文件,他不需要在任何一個文件里被調用,但是這裡定義的所有變量可以在任何一個文件里直接使用。這裡一般用來定義非常重要的或者許多地方需要調用的變量。對這個文件的修改必須重新啟動遊戲才可以生效。command.h:這裡定義的是各個權限等級所能夠使用的命令目錄,所以,除了admin,應該絕對禁止任何人修改此文件。

 

 

 

/include/race 種族的頭文件

/include/net 網絡功能的頭文件

 

 

 

/open 系統臨時目錄,任何人都具有寫權限。

 

 

/u 巫師工作目錄,存放各個巫師開發過程的半成品。這裡的子目錄名只能為各個巫師的euid,而只有對應euid的人才有對相應目錄的修改權限。比如一個目錄是lion,那麼只有lion這個ID或者比lion權限高的人

才可以修改它下邊的內容。

 

 

/clone 物品目錄,存放遊戲中需要經常複製的各種物品,wizard以上權限可以寫。

 

這個目錄下的物品一般被其他地方複製(clone)出來,但他們的euid是固定的,不會隨調用它的物件的不同而改變,這就是這個目錄和/obj目錄的最大不同。此目錄arch以上等級可以修改

/clone/armor 裝備

/clone/drug 藥品

/clone/fruit 水果,水果跟食物的不同是吃了可以同時加食物和飲水,而且有些水果具有養顏美容之功效。

/clone/liquid 容器,象酒袋茶壺一類

/clone/money 顧名思義,人見人愛的東西

/clone/user 玩家物件,包括login.c(link_ob)和user.c(body),

 

 

 

此目錄只有admin可以修改

/clone/books 各種秘籍

/clone/food 吃的

/clone/gift 各種禮物,一般是好東東

/clone/weapon 兵器

/clone/misc 其他雜物,比如屍體,頭顱。

 

 

/daemon 呵呵,這個目錄為什麼叫這個名字我一直沒明白,看下邊的說明吧。此目錄只有arch以上可以修改。

/daemon/skill 遊戲中所有的技能

/daemon/condition 人物各種狀態,比如中毒,恢復等。

/daemon/class 這個應該理解為「組織」或「工會」,是ESII從外國MUD里保留下來的東西,不過隨著中文MUD的發展,工會的概念逐漸被淡化,其含義已經跟以前完全不同,現在他的意思有點象「身份」,比如道士,和尚,喇嘛,官兵,老百姓。。。。個人有個人的身份。很多情況下,這個跟門派類似,但又不完全相同。這裡存放的是各種不同身份的人所具有的特殊東西,不過現在一般用來存放各種特殊技能的特殊用法(perform)

 

 

 

/doc 文檔。 遊戲中的各種文本文件,arch以上可以修改

/doc/help 各種幫助文件

/doc/efuns 各種系統函數的用法

/doc/story 各種背景故事

 

 

/log 系統日記,記錄遊戲過程各種重要事件,是巫師處理糾紛和剔除bug的主要依據來源。一個好的巫師應該養成經常看系統日記的習慣。本目錄只有ROOT權限可以修改。

 

 

/std 標準對象目錄,遊戲中各種標準物件,只有admin可以修改遊戲里其他物件都需要繼承這裡的相應文件。

/std/armor 裝備物品的標準繼承,比如衣服,盔甲等

/std/board 留言板

/std/char 生物的標準繼承,MUD里的生物包含兩種:玩家(player)和非玩家(npc)他們都需要繼承/std/char/char.c這個對象,他們與其他物件的區別是具有心跳(heartbeat)。

/std/drug 藥品的標準繼承,其實這個現在一般不用了,這部分功能都放到了/feature的相應文件里,保留這個是為了跟舊的系統兼容。

/std/item 物品的標準繼承

/std/room 房間的標準繼承

 

 

    有人曾問房間和物品到底有什麼區別?說實話,這個問題還真不好說,這兩個物件基本結構差不多,也沒有什麼可以區分的特徵。現在的常用判斷方法是房間是沒有環境(environment)的,但也不是所有物品

 

(包括生物)都有環境,所以,呵呵,這個問題還有待MUD程序的進一步完善,現在基本上無法判斷。

 

/std/skill 技能的標準繼承

/std/weapon 武器的標準繼承

/std/misc 其他物件,比如錢,符紙。

 

 

    值得注意的是,/std這個目錄跟一般MUDLIB的結構不太一樣,一般MUDLIB並沒有如此歸類存放,大家可以根據自己的認識加以判斷。

 

 

    以上是根據我的理解對各個目錄的解釋,未必是權威的說法,只是為了讓大家有所認識,如果有什麼錯誤請指正。

 

 

    作為剛入門的新巫師,準確理解各個目錄的作用是非常重要的,必須知道哪個目錄下的東西是做什麼的,哪個目錄你可以去改,哪個目錄你不能動。一般來說,要成為一個合格的巫師,至少要花半月時間來「讀」程序,瞭解整個MUDLIB的結構,瞭解各個文件的作用(未必要完全看懂,但至少應該知道他是干什麼的),這樣不至於再以後的程序開放過程中不知道什麼功能該如何實現,從而走許多彎路。

 

 

    當你瞭解了整個MUDLIB後就可以試著自己寫程序了,一般你只能在自己的工作目錄里寫東西。剛開始不妨試著寫一個簡單的房間,然後試著寫一個簡單的npc,然後試著把這個npc放到這個房間里。。。。。。這樣逐漸提高,你很快就成為一個合格的巫師了。

 

 

 

writen by lion@hero at 2000.10.4

 

Comments (0)

You don't have permission to comment on this page.