[email protected] 就行了
7.輸入 real name, 隨便輸入(像我是輸入 laechan)
然後就可登入一開始的登入用房間 /d/TMI/rooms/quad.c
more here 就可以看到該房間的檔案, data here 則可以看到
這個房間的物件資料, LPmud一般是..
exits: 出口, mapping 格式, key name 是方向, 接的是房間檔名
light: 房間亮度
long: 房間長敘述
short: 房間名
所以你可以用編輯器把這個房間改一改, 這樣你的 mud 就有了
一個最起始的登入用房間.
再來的話,cd /adm/daemons, 下 ls 指令, 你會看到一些檔案,
處理方才登入程序的檔案有兩個..
/adm/daemons/logind.c // 一般登入用檔案
/adm/daemons/newuserd.c // 新玩家專用檔案
它的意思就是,如果你是舊玩家,那從你進行登入、到成功登進
mud 的起始房間,大抵上都是由 logind.c 處理。
但如果 logind.c 判斷到你是未註冊的新玩家,它就會請 newuserd.c
來協助處理你的帳號新增流程(就是選性別, 種族那邊).
然後 data me, 你就可以看到自己的一些 data 資料, 一般欄位
是這樣的..
armor : 用來儲存你穿上裝備後的 armor 值資料. 比方某防具
shield 設定防御值 60, 那你裝備上它之後就是
armor["shield"]=60
capacity : 負重最大值, 基本上每一件物品都有 mass 重量設定,
總重不能超過這個 capacity 值.
cwd : 代表你現在按 cd. 指令會看到的目錄名(也就是你目前
所處的工作目錄
gender : 就是你的性別
id : 比方我選的 name 是 laechan, 那 id 這個欄位就是 ({"laechan"})
ip : 登入 ip. 因為我是 telnet localhost 5000, 所以 ip
欄位看到的就是 "127.0.0.1" 代表我是本地登入
last_location: 你上一個所處的房間在哪裡(wiz 指令 back 用的)
mass : 一般人物重量
max_sp : sp(精神力, 魔法力)的最大值
npc : npc 識別. 因為我是玩家不是 npc, 所以 npc = 0
race : 就是你的種族
reply : 若有玩家 tell 你什麼, 然後你 reply 回他, 回他的
訊息就會儲存在這個欄位
stat : 玩家的屬性數值, TMI-2 目前定義了幾種數值
([ "dexterity" : 17, "strength" : 13, "intelligence" : 16,
"constitution" : 15 ])
time_to_heal: 幾秒自我回復一次, 通常這個是由 /std/user.c 的
heart_beat 函數控制
weapon1 : 第一武器
weapon2 : 第二武器
.
.
.
一開始的資料欄位都是很單純的.
/cmds/std 則收集了一般玩家可以下的指令, 常見的 score, look,
alias, get, drop, passwd, i(inventory) 等都在這裡, LPmud 一
般的分法如下...
/cmds/adm 管理者才能下的指令
/cmds/file 一般巫師可以使用的檔案類指令
/cmds/ghost 玩家變成 ghost 狀態(比方陣亡時)可以用的指令
/cmds/object 與物件相關的指令(如物件移動的 gate)
/cmds/std 一般玩家可以使用的指令
/cmds/wiz 權限層級為 wiz 時可使用的指令
/cmds/xtra 權限層級為 elder wiz 時可使用的指令
定義權限的地方則放在 /adm/news/groups 檔案內, more 他可以
看到幾個東西
(root) cratylus
(admin) (root):cratylus
(adminaccess) (admin)
也就是說這個 mud 的最高管理者(root)它設定為 cratylus, 我
只要將它改成 laechan, 那我就是我自己 mud 的最高管理者.
再來管理者區(admin)的 (root):cratylus 它的意思, 就是root
當然是管理者的一員, 用 (root) 就代表把 root 區的所有人都
納進來的意思, : 則是分隔號. 除此之外我亦把 cratylus 也設
為管理者的意思.
而在這個 mud 裡頭, adminaccess 則是更次一級的管理者的意
思. 像聖殿的分法就是 root、adm_c、adm、deep、wizard
分法可以照自己的意思, 不過剛開始都先 follow 它的預設值即
可. 所以你只要把自己的 id 加進 root 區, 然後重開 mud, 這
樣你的角色就會自動變成最高級管理者,
接下來我們對我們的人物下 save, 再 quit, 則你的玩家檔案會
被存在 /data/std 目錄下, 有兩個檔案..
/data/std/connection/l/laechan.o // 儲存登入用資訊
/data/std/user/l/laechan.o // 玩家資料的實際儲存檔
底下是在 connection 目錄下的 laechan.o 檔
#/std/connection.c
name "laechan"
password "doeaeo`f!jehbnbo`nchhfgndd`fbggnhmfndjnji"
body "/std/user"
email "[email protected]"
real_name "laechan"
ip "127.0.0.1"
wizard 1
last_on 1311905037
password 即密碼的部份, 它儲存的是已編碼過的.
接著用編輯器打開 user 目錄下的 laechan.o, 然後找一行
"PATH":"/cmds/std:/cmds/object:/cmds/xtra:/cmds/file:/cmds/wiz"
這一行就是你登入 or 創造角色時, 系統自動配給你的
「你可以執行指令的範圍」
所以雖然一開始創建的角色不是 wiz,卻可以執行 wiz 指令,原因
就在於系統有把 wiz 區的指令配給你的緣故。
這是因為 /adm/daemons/newuserd.c 自動幫你做了 set("wizard",1);
的動作的緣故.
/adm/daemons/newuserd.c
static void get_real_name(string rn, object user, object body)
{
.
.
.
#ifdef AUTO_WIZHOOD
user->set("wizard", 1);
write("AUTO_WIZHOOD="+identify(AUTO_WIZHOOD)+"\n");
body->set("PATH", AUTO_WIZHOOD);
write("\t[You have been granted automatic wizard status]\n");
#endif /* AUTO_WIZHOOD */
.
.
}
中間那一段是說如果 /include/config.h 有定義 AUTO_WIZHOOD
的話,就執行 #ifdef ... #endif 之間的東西
user->set("wizard", 1); 設 wizard 標記
body->set("PATH", AUTO_WIZHOOD); 設 AUTO_WIZHOOD 到 PATH
但是 /include/config.h 所 #define AUTO_WIZHOOD 的東西卻是
空的(undefined), 既然是空的為何會執行上面?
原因很簡單, 因為就算是空的「仍然 #define 了 AUTO_WIZHOOD」,
所以 #ifdef AUTO_WIZHOOD 它就判斷為真.
這時候, 雖然 PATH 是空的, 可是因為有 wizard 參數, 玩家在登入
時就會再呼叫 /std/user.c 的 init_commands 函數
/std/user.c
static void init_commands() {
string path;
add_action( "cmd_hook", "", 1 );
path = query("PATH");
if (!path) {
if ( wizardp(this_object()) )
path = NEW_WIZ_PATH;
else
path = USER_CMDS;
set("PATH", path, MASTER_ONLY);
}
}
所以只要把 newuserd.c 的 #ifdef ... #endif 把他們整個
/* */ 掉, 就不會雞婆地把每個新創的玩家角色都設為 wiz
了。
到這裡至少..
一、你已經可以新增管理者角色.
二、每個在你 mud 新增的角色, 其權限就只會是玩家.
三、你已經知道如何改登入畫面、及玩家一開始登入的房間環境.
四、你也可以試著簡化 newuserd.c 的流程, 比方如果你的 mud
不需要玩家輸入 email 跟 real_name 的話, 那就可以讓
newuserd.c 跳過這兩個輸入流程.
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.83.16.91
現在開始創建一個新角色.
1.登入自己的 mud.
2.輸入一個 id, 例如我是輸入 laechan, 然後按 y.
3.這時會出現一個給新玩家的訊息, 這個訊息存在 /adm/news/nplayer_intro
4.輸入密碼, 然後再輸入一次做為確認
5.選性別(我選 male), 選種族(我選 human)
6.輸入 email, 輸入