背景:
阅读文章

《巫师入门教程》

见习篇

[日期:2007-09-10] 来源:谁与争锋/叮当  作者:非凡公子 [字体: ]

   学习真是一件枯燥无味的事件,听得不耐烦了,赶快让我上机操作吧!
   好的,这一章,我们就来让你去开始进行一段见习工作了。我们的Mud系统使用的是仿Unix的指令和文件结构。如果有人已经对Unix有所了解的话,那是最好。没用过Unix也没关系,就象LPC虽然是一种很简单其实它与Dos十分地相似,我们只要记住它们最明显的一个区别就是文件路径是用"/",而不是"\"。下面的许许多多的命令还是让我们会时不时地想起DOS下的种种命令。

pwd: 显示你目前所在的当前目录
cd: 进入某一目录,..是上一目录,/是到根目录,什么都不加直接回车就是到你自己的的工作目录;
ls: 列出指定目录下的所有文件,就象是Dos的dir一样;
rm: 删除一个文件;
mv: 重新命名一个文件;
cp: 复制一个文件;
md: 创建一个目录;
rd: 删除一个目录(空的目录)。删除这个目录下的所有文件请加 -d参数;
more: 按页显示一个文件在你的当前屏幕;
cat: 显示整个文件;
tail: 显示一个文件的结尾几行,对于太大的文件,一般只能用它;

      对于写程序来说,最好的当然是在专门的可以识别C的编辑器上写,既方便、错误也会少得多,因为它们对于一些固定的函数、变量都会用特殊的颜色突出显示,尤其对于初学编程的巫师来说,多一个字母、少一个符事情的事情可以大大减少了。但是巫师更多的是在线处理一些问题、故障,大多数时候是要通过在线编辑----也就是edit命令进行程序修改,甚至小程序的在线写作。下面就着重讲一讲MUD所提供的编辑功能的使用。

1. 指令格式为:edit <档名>,只加文件名,默认为当前目录,加here,表示编辑你当前所处的房间, 回车后即进入线上编辑系统。
2. 如果这是一个已经有的档案,你可以使用 z 或 Z 来看档案。z表示一次显示20行,Z表示一次显示40行。为了编辑方便,最好在开始时用 n 表示每一行在开头处显示它的行数,再用一次 n 取消行数显示;
3. 还有一种方法 ,就是直接打入行数,则会跳至那行的内容上;
4. 如果你开始没打 n ,却想知道现在是第几行请打 = , 想知道内容请打 p ;
5 如果想直接到档案的结尾可输入 $;
6. 五种编辑命令 a i c m d :
  a = 从此各行之下插入编辑;
  i = 从此行之上插入编辑;
  c = 修改此行并插入编辑;
m = 把本行移到特定的行号去
d = 删除;
这些命令也可以和行数结合使用。如 :
  7a = 在第7行后插入编辑;
6i = 在第6行前插入编辑;
4c = 直接编辑第4行;
  5,8m1 = 将第 5~8 行移至原第 1 行之下。
3d = 删去第 3 行 ;
  2,10d = 删去第 2~10 行;
7. 如果这是一个新命名的档案, 这里面当然是没有行数了,一般你应该用 a 来开始编辑第一行;
8. 如果你对某一行或某几行编辑完毕后, 请在编辑结尾的次列开头处打 . 即可退出行编辑状态;
9. 如果想存档请打 x 表示存档退出。 否则请打 q 或 Q 表示放弃编辑退出。
10.其余功能可打 h 参考。由于有的MUDOS汉化不太好,下面列出 h 的中文注释:

/ 前向查找你后面所跟着的字符,比如/酒袋
? 后向查找你后面所跟着的字符
= 显示当前行是第几行
a 在当前行后新增加一行
A 类似'a'命令,但是将翻转自动缩进模式
c 将当前行内容覆盖掉输入新编辑内容
d 删除指定范围的行
e 退出当前档案, 开始编辑另一档(档案改变过未存盘无效)
E 类似'e'命令,但是文件被修改过也有效
f 显示或改变文件名
g 查找匹配行并对其执行相应命令
h 帮助文件(就是显示你现在看到的这些信息,可能是英文)
i 在当前行前面插入一行
I 排版整个代码 (Qixx version 1.0)
j 合并行,系统默认是将后续行连接到当前行
k 标记当前行- later referenced as 'a
l 显示指定行(可显示控制字符)
m 移动指定行(或几行)到指定位置
n 行号显示切换开关
O 同命令'i'
o 同命令'a'
p 输出指定范围行
q 退出编辑器
Q 退出编辑器,即使文件已经被修改且未存盘
r 在文件尾或指定行后读进另一文件
s 查找并替换(只对当前行第一个查找的字符串进行替换)
set 查询,改变和保存编辑器的设定值
t 复制指定行到指定位置
v 搜索并对不匹配行执行指定命令
x 保存文件并退出
w 将编辑的内容写到当前文件或指定的文件里
W 类似'w'命令,但是是将编辑的内容附加到指定或当前文件后
z 显示20行,可用参数 . + -
Z 显示40行,可用参数 . + -

      前面一章讲过,当你成功地编写了一个程序后,只是意味着这个程序已经在硬盘了,只有在别的使用者调用到它的时候,才会被呼叫出来,进入内存。文件本身是否有错误,将首先会在这时被发现。对于巫师来说,消极地等待别人去调用它时再去发现有没有错是十分不明智的,这时最好的就是先update它。
    update <文档名>
    注意了:如果系统显示:“重新编译 ***.c:成功!”的信息,并不就表示你的这个程序就完全正确了,它只是表示你的程序的基本语法没有错误,如果程序里还有一些由其它的条件或文件才能触发呼叫的函数的话,还有有可能存在一些隐患,保险的做法就是按照设计时的条件把它们一一触发,进行尝试,直到完全通过。比如象一些NPC里有是否接受拜师的函数,你则想法不同的条件的人去拜它试试,把每一种可能都试过,看看是否执行正常。有的房间里加了add_action(),你则一一试试这些add_action(),看一下后果。
      如果文档中有错误,一般系统会唰地一下子出来一大串的错误信息,对于新巫师来说,只要去看看第一行的出错内容就行了,后面的很多错误都是由前面的带来的。还有许多信息还显示其它的与一些重要的系统文件也出错,也大抵是如此,首先还是找出关于这个文档里的第一个出错的行数,再到这个文档里去查找,仔细查看该行数,以及前后几行,有没有少写多写括号、漏记多添逗号、定义变量类型错误等等,如果显示出错的行数在最后一行,甚至更后的话,那就要看看是不是函数声明出错,或者定义了无效的函数。每改一次,再update一次,直至编译成功。有关于各种出错信息的意思和处理办法,还是要在实践中多多尝试,但是,在此要忠告各位新巫师,如果你所工作实习的MUD是一个正在开放中的MUD,希望对于没有任何把握的文件的编译工作最好先在自己的单机版进行,有些恶性的错误严重时会导致整个游戏宕机。

      接下来就是任何一个新巫师一上任就十分感兴趣的命令----call!call就是直接呼叫(执行)函数的意思。在某种程度上,它就象征着巫师手中的神杖。这个对于玩家来说威力无比的功能,既是一种巫师利器,更是一种危险器械。因此,在大多数的MUDLIB中都对于call的命令的使用进行了记录,以备天神的查看和监督。call的命令格式如下:
      call <物件>-><函数>(<参数>, ...... )
      从其理论上来说,它可以呼叫任何没有被protect的函数。具体我们可以看这个程序: /adm/daemons/emoted.c d 在这个程序里面有一个这样的函数:
string *query_all_emote()
{
      return keys(emote);
}
      那么。我们就可使用call命令直接呼叫它:
call /adm/daemons/emoted.c->query_all_emote()
        ~~~~~~~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~
                  (物件)                     (物件的函数)
      由于这个函数本身没有要传参数,就不用再加参数了。那么执行后,程序本身就会返回一个字符串的数组回来。而显示在我们屏幕上面的内容就是所有的emote的英文名字。
  在实际工作中,上面的这种用得还是很少的,大部分的修改和查看我们都可以用more或edit去完成,但是对于尤其象玩家档案这些以.o形式储存的文件用edit编辑则有些费劲了,所以这时使用call的命令来得更为方便些。
      巫师们常常会call me(或者id)->set("combat_exp",10000)
  在这里,me就是自己,其实它对应着一个物件程序:/obj/user.c,后面的set()也是系统放在一个文件里最基本的函数。后面的括号里面便是这个set函数的参数。它的意思就是在me这个物件里执行set()函数,通过set()函数将combat_exp这个参数设为10000。如果。要改变别的人,就可以在call后面加上这个人的id。set()这个函数可以执行什么呢?其实很简单,打开一个复杂一点的NPC,它里面所具有的参数,我们一般都能用call命令进行。
      call命令可以调用的函数非常多,一般由你call的物件有关。但在一般使用中,我们大多使用三种函数,一是set,也就相当于我们做程序中的set一样,你可以set这个物件任何可以set的参数;第二个就是query,用它可以查看你所call的物件有没有这个参数,这个参数内容是什么?第三个就是delete,顾名思义,它正与set相反,用以删除物件上的这个参数。其它一些固定的函数,例如武功的set_skill,设定姓名的set_name等等就不一一叙述了。

【内容导航】
第1页: 第2页:观念篇
第3页:上手篇 第4页:理解篇
第5页:见习篇 第6页:补遗篇
收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容      
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论