先讲讲Mud是什么东西吧?有必要么?没有。
来这里不知道什么是Mud的,请先退后一步,
进第九区Mud版,谢谢,:)。
跑一个Mud,需要两样东西,MudOs和 MudLib.
MudOs提供一些基本的功能,比如数据处理,
网络通信,MudLib用这些东西实现具体的
功能,所以如果没有Lib,MudOs就不能跑。
这个和虚拟机什么的是个区别,:P。
下面以Linux架设Mud为例来讲解。
首先,按上面所说,找到一个Lib,
和一个MudOs.在Linux下,可执行的
程序一般都要重新编译,所以更多能
找到的是MudOs的辕马(c),拿过来,配置
好options.h,就是编译时候的各种选项,
然后编译之,至于怎么编译 ,以后文章
再说吧。编译完成以后,在bin目录下会
有两个文件产生,一个是addr_server,
这个东西暂时不管他,删除了也可以。
另外一个是driver,这个就是我们要的
MudOs了(一直写成 MudOs而不是 mudos
是为了避免同志们再把windows下的mudos.exe
弄到linux下去,然后问为什么不可以执行...)。
有了这个driver,问题算解决了一半。
然后就去找一个能用的MudLib,这个网上多的
要命啦,比如www.yaguo.com,www.lywin.com,
www.mudking.com...还有什么www.mudnow.com
当一个下来,放在你的Linux主机上。比如你
的Linux主机上跑Mud的目录是:
/home/mudadm,那么就放到/home/mudadm/mymud下吧。
然后又是MudOs。MudOs怎么才知道上哪里去找
MudLib呢,又怎么知道这个Lib具体有那些特点呢?
/home/mudadm/bin下应该有个文件指给它看。
这个文件现在叫config.cfg(叫config.xxx也可以)
这个文件里定义了一堆东西,其中架Mud需要改的有
4个。
第一,MudLib所在的路径:
# absolute pathname of mudlib
mudlib directory : /home/mudadm/mymud
就是这样写了,打个pwd,没有错吧?呵呵。
hhxxj同志说这个路径没有错,但是MudOs
还是报错说Bad Mudlib path..什么的,
原因在于这个config.cfg文件肯定是从
windows传过去的,windows和Linux的文件格式
不同,所以那边的文件到这边就出现了非法字符,
而你more,vi什么都看不到,解决的办法,
现在有个简单的,zip tmp config.cfg
then
unzip -aa tmp.zip
选择覆盖原来的config.cfg,ok了。
非法字符没有了,再跑一遍:
./driver config.cfg,可以了么?
如果还不可以,再看另外三个选项(
这个时候已经不存在非法字符引起的问题了,
有错的话,就是你真的写错了)
# absolute pathname of driver/config dir
binary directory : /home/mudadm/bin
指明driver/config所在的目录
# the file which defines the master object
master file : /adm/obj/master
指明MudLib里Master_Ob对应的文件。
# the file where all global simulated efuns are defined.
simulated efun file : /adm/obj/simul_efun
指明MudLib里Simul_efun_ob所对应的文件
以上两个路径都是相对MudLib而言的。
之所以指出这两个选项,是因为现有的Lib
中,xkx类的往往是/adm/single/master(simul_efun)
而其它lib很多是/adm/obj...,当然,还有xo
什么的,忘记是哪个目录了,:P
这些都好了以后,再./driver config.cfg...
还有错么?贴出来,看看吧,呵呵。
多是常见的错误,这里说不完了,以后
慢慢来。。。
发信人: mudbuilder (mudbuilder), 信区: Mud_Builder
标 题: Re: Mud_Builder新手QA(一)
发信站: 一塌糊涂 BBS (Wed May 16 15:05:41 2001)
说两个事
第一 你说有人把mudos.exe考到linux下不能运行
其实你即使把for linux的driver 给ftp到一个新的机器页不能运行
必须先chmod +x driver一把 让他变成一个可执行档
第二
执行mud
最好不要./driver config.cfg酱紫
习惯用./driver config.cfg &会比较好
不然你推出shell的时候系统就把driver给dump了
而且 不要被mud shutdown那句话“请等待一分钟再从新连线”
给迷惑了
如果我们不在shell下做点什么 打死 driver页不会自动重起
(是不是开始怀念mudos.exe了)
一般我们会写一个监控程序不断监视看driver是不是翘了
举个例子:
将如下程序放在driver目录下
gcc -o startmud startmud.c一把
生成的可执行程序startmud可以用来启动和监视mud进程是否死掉并且重起
本来我打算写一个可以配置的,但是后来一直没有写完,就把有关内容去掉了
这个是缩水版
//startmud.c
#include < stdio.h >
#include < unistd.h >
#include < sys/types.h >
#include < sys/stat.h >
#include < fcntl.h >
int main(int argc, char** argv, char** env)
{
int logfd;
logfd = open( "mud.log", O_APPEND | O_CREAT | O_WRONLY, 0600 );
if (-1==logfd) {
perror("failed to open mud.log");
exit(1);
}
dup2( logfd, 1 );
dup2( logfd, 2 );
if (fork())
return 0;
setsid();
if (fork())
return 0;
strcpy( argv[0], "[mud daemon]" );
while(1) {
if (mudpid=vfork())
{
wait(NULL);
}
else
{
mudpid= execl("./driver", "driver", "config.cfg", NULL);//你
要的config
perror("execl failed");
exit(2);
}
sleep(3);
}
}