2011-12-03 | #1 |
高级会员
注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 20
声望:
50
现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
MudLib是什么?
发信人: cloner (!!!!!!!), 信区: Mud_Builder 标 题: Mud_Builder新手QA(一) 发信站: 一塌糊涂 BBS (Tue May 15 10:16:22 2001) 先讲讲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); } } |
|