侠客行java_MUDOS 侠客行100 MUDLIB 的一些摸索...
不知怎么回事,又想到MUD。是不是因為最近總搗鼓Fedora的Shell,情形和當年玩MUD有些相似?
當時在湖大玩的是湖南信息港的一個服務器。雖然叫“封神演義”,和封神卻半點關系也拉不上,只是最流行的“俠客行”的一個修改版而已。我當時就曾經去下載了“俠客行”MUDLIB的源代碼,黑燈瞎火之中找到一個Bug,居然在所謂的“封神”中也能使用,哈哈。
現在想舊夢重溫,自己架一個MUD服務器,自己一個人瞎玩,嘿嘿。就跑去網上找下載的地方。
發現大多數以前的MUD網站或關閉、或無人維修,情形慘淡。“泥巴”果然最后要歸于塵土,這是它的宿命。我當時在玩的時候,大概是2000年,已經是它的末期。非常蕭條,非常孤獨。然而我喜歡它清清白白的無聲世界。
嘗試了許多無效連接之后,好不容易找到一個現在還搞這些無人問津的東西的網站。下載了俠客行100海洋版。又跑到MUDOS的官網上,下載MUDOS的源代碼。頭痛就來了。
在Fedora下,MUDOS倒是很順利就編譯成功。到了架起服務器時,就失敗了。
問題在于MUDOS的默認的編譯選項沒有載入xkx100(俠客行)所需的部件。查找了許久,發現必須修改它的options.h文件(可以復制options.h為local_options,然后修改local_options):
#undef NO_ADD_ACTION : 大多數國內的MUDLIB(基本都基于ES2)都使用了Add_Action
#undef NO_WIZARDS : 以支持Wiz
#define PACKAGE_UIDS : 大多數國內的MUDLIB都使用這個作為安全系統。之后xkx100在服務器端上正常運行起來了。用客戶端連接時又有問題:
無法Login,輸入username之后,就出現提示符,再輸入就都是錯誤提示。查看logind.c,發現錯誤都在于input_to函數。例如原文件是這么使用:input_to(“get_id");我去查看了文檔,發現這樣也是合法。我將它改成了input_to((:get_id:));之后,再在前面加入函數的聲明,卻就正確地運行。
Login之后,無法save_object();提示沒有權限進行文件寫入操作。奇怪的是Data里面User的信息可以寫入,而寫Login的信息時就出錯。確實原因不明。用了一個笨辦法。在master.c里面,修改valid_write()全部返回1。
進入到游戲里面,走動時沒有自動提示周圍環境。查看move.c,里面在Object成功移動之后,用了command("look")。顯然這個命令沒有成功執行。我查了許久,發現這個命令本身沒有任何錯誤。直到今天,看了一篇關天NPC結構的文檔,才發現在command.c里面,一個主要的函數command_hook()前置了一個屬性private……。當時脫口而出:XX……。
這同時也是導致所有NPC無法說話,無法收徒,等等的原因。
此外,在我將全部文件都改為UTF-8編碼的時候,又制造了問題。semote無法使用,技能無法查看。這個問題比較明顯,就是data下面以前的兩個數據文件現在無法讀取了,格式錯誤。最好的解決辦法是找一個正解的數據文件,留著它的頭尾,再將無法讀取的文件的內容粘貼過去……這也是個笨辦法。不過我不知道究竟是怎么樣的格式,不得不這樣。
純粹是瞎搞。要是早些找到齊全點的資料,就不必白費許多功夫了。在這一點上,不得不承認老師的必要性。在開始時,他將為你節約大片時間……
總結
以上是生活随笔為你收集整理的侠客行java_MUDOS 侠客行100 MUDLIB 的一些摸索...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见排序查询算法Java代码实现
- 下一篇: Sqlserver内存管理:限制最大占用