想要较好地把 zMUD 使用起来,事实上的确需要一定的编程基础, 不过要求不高,一般的 Basic 概念即可。最重要的,是我们能对 用计算机模拟我们思考解决问题的方法有一个简单的认识。
在前几篇文章中,已经介绍了 zMUD 编程的几个基本例子,其中包 括了变量的定义、信息的抓取以及变量的赋值等几个方面的内容, 但是其中并未谈及细节的道理(为什么要这样用)。我的想法这些答 案的详细说明其实都包含在 zMUD 的帮助中,实际上只要去查看它 的function和command的帮助清单就行了(虽然不是中文,略感不便 )。在下面只是把变量的简单道理讲一下,方便更多zMUD的新手。
为了更加易懂快速上手,文章中的理论概念基本上我都使用实际的 例子解释,即使道理一时想不通,也不怕,知道怎么去做就行了。
1. 为什么要使用变量 变量的引入,是因为我们在 MUD 中接触到的信息基本上都是不断在 变化的,为了实时处理这些信息,我们通过变量的应用,可以把很多 编程的概念溶入 mud play 中,使我们能够通过简单的界面操作从而 自动、精确地完成 MUD 中一些复杂、繁琐的动作。
例如,前面“自动卖花”的设计中,我们使用了一个变量 WH_ChineseName 来存储对方的中文姓名,这样在后面我们才能再通过 WH_ChineseName 进一 步获得买花对象的英文 ID, 并存储到变量 WH_IdName 中,最后才可能最终 使用 give 命令把花递到对方的手上。如果没有变量的引入,这过程是完成 不了的。
2. 怎么定义变量 变量包括两个组成部分: 变量名和变量值。一个变量的使用必须首先定义过 变量名才行。变量名可以随便自己取,通过 zMUD 顶部按钮“Variable”来 定义是简单的方法。例如我们前面文章中定义的WH_ChineseName, WH_IdName, WH_Class 等等, 其名称上都是自己随意定的。定义一个新的变量时,我们一 定要明确定义该变量的目的:即用它来做什么? 例如我们很明确 WH_ChineseName 是用来存储对方中文名字的,而 WH_IdName 是用来存储对方英文 ID 的等等。
变量使用的一个忠告是:尽量能从变量名上反映出该变量的含义。如果我们把 WH_ChineseName 改为 abcd,可想而知我们无法从 abcd 看出它用来做什么用 而 WH_ChineseName 却一目了然。
变量使用的另一个忠告是:尽量把变量从变量名上分类。因为可能我们会用到 很多变量,最后混杂在一起时,只会给自己找麻烦。就象 WH_ChineseName 和 WH_IdName 一样,字面上我们已经知道他们是用于 WH (问候) 的,编写其他 类设计时,就不会搞混它们。
3. 怎么给变量赋值 zMUD 中,变量可以直接赋值,并且变量不分字串、数字变量等概念,你给它 们什么它们就是什么。例如: WH_ChineseName=东方英雄,WH_IdName=hero, WH_Class=1。 在从triggers中获取信息时,变量可以参数形式赋值。
例如: 屏幕上显示“东方英雄想向你购买「flower」”时,如果定义:
pattern: (%x)想向你购买「(%x)」。
command: WH_ChineseName=%1;WH_Object=%2
则表示 把 pattern 中抓取的第一个参数赋值给 WH_ChineseName,把第 二个参数赋给 WH_Object。 这样“东方英雄”字串便自动放到了变量 WH_ChineseName 中,“flower”字串则放到了变量 WH_Object 中。这 里 pattern 中的第一个(%x)表示抓取字串“想向你购买”前面的任意字 符串作为第一个参数,而第二个(%x)表示抓取字串“想向你购买”后面的 任意字符串作为第二个参数。command 中的 %1 表示拿出第一个参数,同 样 %2, %3... 则顺序表示拿出第二、第三...个参数。
对于有关 %x, %1.. 等以及其他更多参数符的说明,请自己参考 zMUD 的 help,这里不多讲。
4. 怎么把变量使用起来
在“自动卖花”的设计中有下面一个 triggers:
pattern: (@WH_ChineseName)(%s)= (%x)
command: #if (@WH_Class=1) {WH_IdName=%3;say 10 silver 一朵。;thank @WH_IDName} {WH_IdName=%3;give flower to @WH_IDName;gongxi @WH_IDName}
我们可以看到,变量使用的时候,只要不是赋值,变量名前面就应该加 上符号“@”,这样, zMUD 就会自动使用变量对应的值了。
5. 总结 到这里,应该可以明白,利用基本的编程思想,基于 zMUD 为我们 提供的 Variable 和 Triggers 功能,我们的确可以在 zMUD 中针 对 mud play 的具体要求来编写一些小程序,而这些程序的编写并 不想想象中那样复杂,只是需要我们更多地了解 zMUD 到底为我们 提供了什么手段来实现,我们要做的其实只是把编程思想溶入到这 些手段中即可。
好了,如果大家有更多探讨的兴趣,可以研究一下 zMUD 的帮助, 可能的话把心得寄给我,在此给大家共享你的成果。
想要较好地把 zMUD 使用起来,事实上的确需要一定的编程基础, 不过要求不高,一般的 Basic 概念即可。最重要的,是我们能对 用计算机模拟我们思考解决问题的方法有一个简单的认识。
在前几篇文章中,已经介绍了 zMUD 编程的几个基本例子,其中包 括了变量的定义、信息的抓取以及变量的赋值等几个方面的内容, 但是其中并未谈及细节的道理(为什么要这样用)。我的想法这些答 案的详细说明其实都包含在 zMUD 的帮助中,实际上只要去查看它 的 function 和 command 的帮助清单就行了(虽然不是中文,略感 不便)。在下面只是把变量的简单道理讲一下,方便更多 zMUD 的 新手。
为了更加易懂快速上手,文章中的理论概念基本上我都使用实际的 例子解释,即使道理一时想不通,也不怕,知道怎么去做就行了。
1. 为什么要使用变量 变量的引入,是因为我们在 MUD 中接触到的信息基本上都是不断在 变化的,为了实时处理这些信息,我们通过变量的应用,可以把很多 编程的概念溶入 mud play 中,使我们能够通过简单的界面操作从而 自动、精确地完成 MUD 中一些复杂、繁琐的动作。
例如,前面“自动卖花”的设计中,我们使用了一个变量 WH_ChineseName 来存储对方的中文姓名,这样在后面我们才能再通过 WH_ChineseName 进一步获得买花对象的英文 ID, 并存储到变量 WH_IdName 中,最后才可能最终使用 give 命令把花递到对方的手上。 如果没有变量的引入,这个过程是完成不了的。
2. 怎么定义变量 变量包括两个组成部分: 变量名和变量值。一个变量的使用必须首先 定义过变量名才行。变量名可以随便自己取,通过 zMUD 顶部按钮 “Variable”来定义是简单的方法。例如我们前面文章中定义的 WH_ChineseName, WH_IdName, WH_Class 等等, 其名称上都是自己随 意定的。定义一个新的变量时,我们一定要明确定义该变量的目的: 即用它来做什么? 例如我们很明确 WH_ChineseName 是用来存储对方 中文名字的,而 WH_IdName 是用来存储对方英文 ID 的等等。
变量使用的一个忠告是:尽量能从变量名上反映出该变量的含义。如 果我们把 WH_ChineseName 改为 abcd, 可想而知我们无法从 abcd 看出它用来做什么用,而 WH_ChineseName 却一目了然。
变量使用的另一个忠告是:尽量把变量从变量名上分类。因为可能我 们会用到很多变量,最后混杂在一起时,只会给自己找麻烦。就象 WH_ChineseName 和 WH_IdName 一样,字面上我们已经知道他们是用 于 WH (问候) 的,编写其他类设计时,就不会搞混它们。
3. 怎么给变量赋值
zMUD 中,变量可以直接赋值,并且变量不分字串、数字变量等概念, 你给它们什么它们就是什么。 例如: WH_ChineseName=东方英雄,WH_IdName=hero, WH_Class=1。
在从triggers中获取信息时,变量可以参数形式赋值。
例如: 屏幕上显示“东方英雄想向你购买「flower」”时,如果定义: pattern: (%x)想向你购买「(%x)」。 command: WH_ChineseName=%1;WH_Object=%2 则表示 把 pattern 中抓取的第一个参数赋值给 WH_ChineseName, 把第二个参数赋给 WH_Object。
这样“东方英雄”字串便自动放到 了变量 WH_ChineseName 中,“flower”字串则放到了变量 WH_Object 中。这里 pattern 中的第一个(%x)表示抓取字串“想向你购买”前面 的任意字符串作为第一个参数,而第二个(%x)表示抓取字串“想向你购 买”后面的任意字符串作为第二个参数。command 中的 %1 表示拿出第 一个参数,同样 %2, %3... 则顺序表示拿出第二、第三...个参数。
对于有关 %x, %1.. 等以及其他更多参数符的说明,请自己参考 zMUD 的 help,这里不多讲。
4. 怎么把变量使用起来
在“自动卖花”的设计中有下面一个 triggers: pattern: (@WH_ChineseName)(%s)= (%x) command: #if (@WH_Class=1) {WH_IdName=%3;say 10 silver 一朵。; thank @WH_IDName} {WH_IdName=%3;give flower to @WH_IDName; gongxi @WH_IDName} 我们可以看到,变量使用的时候,只要不是赋值,变量名前面就应该 加上符号“@”,这样, zMUD 就会自动使用变量对应的值了。
5. 总结
到这里,应该可以明白,利用基本的编程思想,基于 zMUD 为我们提 供的 Variable 和 Triggers 功能,我们的确可以在 zMUD 中针对 mud play 的具体要求来编写一些小程序,而这些程序的编写并不想 想象中那样复杂,只是需要我们更多地了解 zMUD 到底为我们提供了 什么手段来实现,我们要做的其实只是把编程思想溶入到这些手段中 即可。
好了,如果大家有更多探讨的兴趣,可以研究一下 zMUD 的帮助,可 能的话把心得寄给我,在此给大家共享你的成果。 现在有很多玩家还不大清楚循环的意义,我想就这个问题给大家解释一下。
首先你得先跟师傅学点武功,这就不多说了。我请你键入 enable force $1 ,$1 是指你所在门派的特殊 force 的英文代码, 比如方寸山的弟子所学习的特殊 force 就是小无相功,相应的英文名 称是 wuxiangforce。
然后键入 enable, 系统就会出现下面的提示:
> 以下是你目前使用中的特殊技能。
> 内功 (force) : 小无相功 有效等级:xxx
键入hp就会出现:
气血: 100/100 (100%) 内力: 0 /0 (+0)
精神: 100/100 (100%) 法力: 0 /0 (+0)
如果这个时候键入 exercise 10 的话,系统就会提示你:
> 你坐下来运气用功,一股内息开始在体内流动。
> 你行功完毕,吸一口气,缓缓站了起来。
> 你的内力增强了!
这个时候再键入hp,就会出现
气血: 90/100 (100%) 内力: 1 /1 (+0)
精神: 100/100 (100%) 法力: 0 /0 (+0)
注意到了吧?内力增加了!(当然了,吸气时是有busy time的)。
请大家注意,内力的增加所消耗的是气血值。 如果你反复的键入exercise $1($1代表大于10的数字,因为打坐 最少需要10点的气血),你的内力就会慢慢的长起来。
需说明一 下,exercise $1 所增加的是左边的数值,而右边的数值代表最 大值。具体说明见 help newbie。 当你的内力最大值(右值)达到了一定的数量后(大约2,30就行), 键入exert recover 则出现:
> 你深深吸了几口气,脸色看起来好多了。
这时键入hp,你会发现气血值恢复了。
在MUD中,内力是个非常重要的指标,大家通过看help可能也都 有所了解。内力越高,你的气血的最大值(右值)就越高,enforce 后打人的伤害度也就越高,内力高了,还可以用内力恢复你已经减 少了的气血(exert recover)和精神(exert refresh),假如你的内 力是无限的,那么读书(study book)学习(learn)不就非常快了吗! 就可以不用站着干等着精神和气血慢慢地自动恢复了(因为读书和 学习都是要消耗许多气血和精神的)。
但是问题来了,谁也不可能 拥有无限的内力呀。怎么办呢?好,循环以后,这个问题就好办了。 当enable force 达到了60,也就是有效等级达到60,就可以认为 是循环了。为什么呢,因为:你的enable force越高,打坐 (exercise)能够得到的内力的点数(左值)就越多。相反的, 你能够用内力恢复气血(exert recover),也就是吸气所消耗 的点数就越少,当enable force的有效等级达到或超过了一个 临界值时,打坐所增加的内力点数就可以超过恢复所消耗的内 力点数,也就是吸气-打坐这么一个循环后,内力有所增加, 这就代表了循环了(也叫正循环)只要你不停地打坐-吸气,内 力就可以一直地增加!
我还是给大家举个例子吧:
输入 hp
> 气血: 200/ 200 (100%) 内力: 200 / 200 (+0)
> 精神: 100/ 100 (100%) 法力: 0 / 0 (+0)
exercise 200
然后 hp
> 气血: 0/ 200 (100%) 内力: 400 / 200 (+0)
> 精神: 100/ 100 (100%) 法力: 0 / 0 (+0)
然后:exert recover,
hp后出现
> 气血: 200/ 200 (100%) 内力: 300 / 200 (+0)
> 精神: 100/ 100 (100%) 法力: 0 / 0 (+0)
看到了吗?内力增加了100点!嘿嘿! 因此,大家就可以用多出来的内力学习,读书,当打架时被 NPC或者player打的快没气时exert recover了。如果想长内 力,就可以不停的打坐-吸气,那么内力就会很快的长上去 了。
但是请大家注意,enable 到了60 出现正循环可能不是 很准,因为打坐所增加的内力值是随机出现的,所以enable 越高越好。 对于一个新玩家来说,越快争取正循环,对以后的发展越有好 处,循环是很重要的,应该把循环作为玩MUD的首要任务。