作者neca (寻找一片海洋)
看板mud
标题[心得] Ubuntu + ES2lib 架站(2)
时间Thu Jan 24 18:21:25 2013
0、写在前头
原本理想的状况是,照本宣科之後一切都如同想像般美好,什麽设定都不需要,
只要把自己的权限提升到 admin,就可以在自己建立的世界当中胡作非为。先做出一
个妃子,再把它复制成三千甄嬛,从此就可以化身为四爷...(误
但是当电脑系统不断持续进步,程式也跟着演化的同时,我们拿到的MUDOS以及
MUDLIB并不一定如同十多年前般的水乳交融。相反地,反而如同後宫三千般的意外复
杂,有些旧式的写法已经不见容於新的MUDOS当中。
这就是为什麽我要写这篇赚赚P币的原因了,但是另一个原因是,经典赛快到了,
没有成本可以下注(爆
一、运行mudlib之後
0. 先定义一些用语:
启动mudlib == /mud/bin/driver /mud/bin/es2.conf &
停止/终止mudlib == killall driver
或是== ctrl +c (如果不是在背景执行的话, 也就是执行时没加 &)
1. 当我们成功的执行 /mud/bin/driver /mud/bin/es2.conf之後,可以试着用其他
的telnet tool连线到我们所架设的mud:
telnet xxx.xxx.xxx.xxx xxxx
或是直接用Ubuntu来连线:
telnet localhost xxxx
不意外的话,可以看到welcome画面(定义在/mud/mudlib/adm/etc/welcome)
2. 这时候,我们可以不急不徐的键入自己想要创的ID,因为自己是唯一又是第一,
想要取什麽5566、7788的,一切操之在己。
但是,就在这个取完ID的摩门特,按下enter之後,画面上竟然出现了"什麽?"
嗯?
"什麽?"
是系统问我什麽,还是我取错ID,叫做"什麽",还是说第一个帐号只能叫做"什麽?"
但是,我们一定不死心的又再敲下几个字母,例如重复刚刚的ID再输入一次,
系统画面仍然会回答我们"什麽?"
◢▆▅▄▃崩╰(〒皿〒)╯溃
▃▄▅▇◣
当你多按下几次回车键,就是所谓的enter键,只会多出几个">"符号,并不能让你
进入虚拟世界当四爷,我们就要回头找找看系统处理登入程序的原始码。
/mud/mudlib/adm/daemons/logind.c
*ps: 以後为了节省时间,/mud/mudlib 就省略不打,直接用 /adm /include
代表在/mud/mudlib底下的档案路径
3. /adm/daemons/logind.c 到底做了什麽事呢?
很好,我也不知道。
但是在古鸽泡了一整天之後,我终於看到了一些关键字。input_to这个函数的写法
已经过时了。
原本写法是 input_to("xxx", ob);
现在(指mudos为fluffos-2.4时)都要改成 input_to((:xxx:), ob);
input_to() 里头的 xxx, 指的是要呼叫的程序名称,
把要呼叫的名称都改用 (: :) 包起来。
这是不求甚解的做法。
想知道更多,请看
http://www.mudbuilder.com/simple/?t29.html
4. 好了,我们花了一堆功夫,将/adm/daemons/logind.c里头所有的input_to()
都改写完之後,应该是可以快快乐乐的去当四爷了吧。
这时请先把刚刚执行的/mud/bin/driver /mud/bin/es2.conf停止
如果按什麽按键都不动,只要按下ctrl+c 就停了
或是在Ubuntu里头再开个terminal,下这个指令"killall driver"
再执行一次启动程序 /mud/bin/driver /mud/bin/es2.conf
*懒人可以在 bash_profile里头加上alias
ex: alias runmud='/mud/bin/driver /mud/bin/es2.conf &'
& => 在Linux背景执行程序
再source ~/.bash_profile
再度启动之後,又看到令人雀跃的welcome画面,小心翼翼地敲下去自己的ID,
使用这个名字将会创造一个新的人物﹐您确定吗(y/n)﹖y
这次没有再出现"什麽?"了,喔耶,总算离化身四爷又近了一步。
可是,嗯,我知道大家最怕的就是”可是、但是、不过、but”,
输入资料到某些阶段的时候就出问题了,那万恶的”什麽?”又回到我们的面前。
唉,四爷再等下去恐怕都下档了。
5. 这次我们要来学习看错误讯息,在/mud/mudlib/log底下会产生几个档案:
debug.log ==> MUDOS(fluffos)执行时的错误
log ==> 编译时会产生的错误
preload.log ==> 不解释
这次因为是已经正常启动mudlib,因此直接看log档:
会发现一些在logind.c被编译时产生的 undefine error
这种语法错误让我们重新回到编写 logind.c
这时是因为我们刚刚改写过 input_to(),它会去加载同一文档内的区域函数,
但是在档案开头并没有宣告,所以编译时会认为它是错误的。
请把遗漏的、有看到undefine的函数名称,宣告在档案开始的地方:
ex: 你会在开头的附近看到有这个宣告:
private void init_new_body(object link, object user);
你就把所有缺少的函式宣告在这里。
等改写好之後,再砍掉原本执行的mudlib程序,再执行一次。
6. 当我们再度telnet到站台里的时候,一路通畅的让我们创建帐号,直到...
错误再度发生
to be continue...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.174.184
※ 编辑: neca 来自: 210.66.174.184 (01/24 18:23)
※ 编辑: neca 来自: 210.66.174.184 (01/24 18:29)
※ 编辑: neca 来自: 210.66.174.184 (01/24 18:29)
1F:推 laechan :辛苦啦 1.165.164.2 01/24 18:44
2F:→ kasase :input_to那边对我很有帮助,谢谢 140.112.30.81 01/24 20:42