2009年12月12日 星期六

Mud setup note

因為架設 Mud 好像沒啥人教...(因為我找不到0rz)
所以自己弄了好久
先記下來 免的以後忘記要在摸索一遍
以下程序做出來的 Mud
可能會後門一堆
所以自己玩玩就好 千萬不要拿來公開架站
除非你真的都檢查過沒問題

以下大部分都是網路上找來的資料
加上我的實驗結果

OS: CentoS 4.4
Mudos: v22.2b14
Mudlib: ES2_lib.v1.3b

先把 Linux 架起來
然後安裝 GCC Bison
yum -y install gcc
yum -y install bison

然後到網路上抓 Mudos 和 Mudlib
編輯 Mudos 的 options.h
cp v22.2b14/options.h v22.2b14/options.h.bak
vi v22.2b14/options.h

找到關於 MALLOC 的設定部份,確認相關的選項如下:
#define SYSMALLOC
#undef SMALLOC
#undef BSDMALLOC
#undef WRAPPEDMALLOC
#undef DEBUGMALLOC
#undef SBRK_OK
#undef DO_MSTATS
#undef DEBUGMALLOC_EXTENSIONS
#undef CHECK_MEMORY

找到關於 crypt 的設定部份
#define CUSTOM_CRYPT
如果你用的 MudLib 有很多地方用到 array 作為變數名稱
#undef ARRAY_RESERVED_WORD
如果你用的 MudLib 有很多地方用到 ref 作為變數名稱
#undef REF_RESERVED_WORD
如果你用的 MudLib 有很多地方用 static 這個關鍵字
#undef SENSIBLE_MODIFIERS
如果你用的 MudLib 需要用到 add_action() 這個函式
#undef NO_ADD_ACTION
如果在你用的 MudLib 裡,有用到 seteuid() 或 getuid() 等 uids 相關的外部函式
例如 seteuid(getuid(this_object())) 則需確認 PACKAGE_UIDS
#define PACKAGE_UIDS
若你用的 MudLib 有用到 wizardp() ,而且 MudLib 裡面的 simul_efuns 沒有定義 wizardp() 這個函式,則需要在確認關於 NO_WIZARDS 的設定。
#undef NO_WIZARDS
設定區域變數的個數限制原始是 25 ,將 25 改成你想要的值
#define CFG_MAX_LOCAL_VARIABLES 25
這一項作用不明 不過我有設@@"
#define AUTO_SETEUID

再來就是Build Mudos
./build
然後
gmake install
他會把 Mudos 的執行檔 driver 放在 v22.2b14 的目錄外面
建一個 bin 的目錄裡面

把 es2.conf 複製到前述的 bin 目錄
cp mudlib/adm/etc/es2.conf bin/es2.conf

修改 es2.conf
vi es2.conf
修改 Mudlib 位置 與 Mudos 執行檔 driver 的位置
# absolute pathname of mudlib
mudlib directory : /home/es2/mudlib

# absolute pathname of driver/config dir
binary directory : /home/es2/bin


最後就是執行
./driver es2.conf

這樣做下來 應該就可以動了
剩下就是除蟲(bug)了

PS. ES2_lib.v1.3b 裡面沒有包技能在裡面
所以打架會好像沒反應
去找個 unarmed.c 放進去應該就會有反應了

沒有留言:

張貼留言