Mud 版 (精华区)

发信人: man (车站), 信区: Mud
标  题:  Zmud编程方法简明教程一
发信站: 紫 丁 香 (Mon Aug 24 23:10:14 1998), 转信


Zmud编程方法简明教程(猫头鹰 Catbird)

由于各种软件都在不断地、频繁地升级,所以要选一个大家都通
用的Zmud版本不是一件容易的事。Zmud 5.22a刚刚出台,可能使
用的人不会太多,而我认为Zmud4.62可能是目前使用最广的,所
以我选用Zmud4.62作为这个教程的依据版本。其它版本的用法也
是大同小异的。

本教程初步计划分如下几个部分:

1。入门(讲述Zmud编程的基本要素)
2。实战(讲解机器人的应用实例)
3。深入(介绍Zmud的高级应用)

1 入门-Zmud编程的基本概念。

与Telnet等初级工具相比,在玩泥巴(MUD)时,Zmud显示出强大
的编程功能,利用Zmud的编程功能,我们可以根据MUD反馈回来的
信息作出各种各样的复杂动作,从而简化我们的操作,让我们可以
更轻松地畅游泥巴世界。

Zmud编程的基本要素如下:

Alias/Macro key/Variable/Trigger/button

1.1 Alias 别名,可以将任何命令定义成你喜欢的形式。
用一句通俗的话说就是:它可以将一条或多条复杂的命令用几个
字母代替。
比如:buy jitui from xiao er可以定义一个别名:mjt,
这样以后你只需键入mjt,即可完成buy jitui from xiao er的
动作。

1.1.1 定义别名的方法有三种:

1.1.1.1 最简单的方法:使用快捷键:Ctrl+A。
在命令行里输入要定义别名的命令,然后按“Ctrl+A”,再键入
自己命名的别名即可。比如:在命令行里输入“buy jitui from er”,
然后,按“Ctrl+A”,再键入“mjt”,这样就给“buy jitui from 
er”定义了一个别名“mjt”。

1.1.1.2 使用“#ALIAS”命令。
语法:#ALIAS ALIASNAME {COMMAND}
比如上例可以通过在命令行里输入“#ALIAS mjt {buy jitui 
from xiao er}”来完成别名的定义。

1.1.1.3 使用别名定义窗口。
你可以通过选择Zmud主菜单“View/Aliases”或者按菜单项的
“Aliases”按钮来打开别名定义窗口,并对所有已定义的别名
进行修改,添加或删除的操作。

1.1.2 使用参数。
另外,Alias 还可以使用参数,这让我们的操作有了灵活性。
比如你可以这样定义:#ALIAS k {kick %1;hammer %1;nip %1},
于是你键入k mixuer就相当于键入了
“kick mixuer;hammer mixuer;nip mixuer”,不过千万
不要写太多命令(小心频道被关),而且最好把“mixuer”
换成“jokey,hero,koko,pqpq,sjmao,great,fangcj...” ,
只要别换成“tianya/tygk”就行,*snicker。
注:别名只能用于一条命令的开头,只有这样别名才能被解
释执行。比如:
say mjt 不会被解释成say buy jiutui from er,因为mjt这
个别名不是处于这条命令的开头。

1.2 Macro key 宏定义键。
将命令定义成键盘上相应的键或者组合键。

1.2.1 定义的方法。
从Zmud的顶部菜单中选择“Action->Define Macro Keys”,
按下组合键“Ctrl+K”,Zmud会弹出一个小窗口,提示你键
入要定义的键,按下要定义的键之后,Zmud会要求你输入在
这个键上要表示的命令,再键入你希望的命令,一个宏定义
键就定义完毕了。

1.2.2 在定义宏定义键时要注意的问题。

1.2.2.1 不要使用Zmud保留的键名。比如:Ctrl+K,Ctrl+A等等,
因为你的定义不能覆盖Zmud的已有的定义。

1.2.2.2 不要使用Windows等操作系统保留的键名,比如:
F10,|ALt+A等,因为这样会影响你对操作系统的操作。

1.2.2.3 不要使用箭头等编辑键。但当NUM LOCK 灯亮时小
键盘上的键就不是编辑键,你可以使用它们作为宏定义键。

1.2.3 当你键入宏定义键时,宏定义键代表的文本并不输入
到命令行中。我们可以利用这个特性做一些富有技巧性的事,
比如:如果你想迅速移动到东方,并且拣起地上的东西,可
以这样做:
定义数字键 6为“east”的宏,然后先在命令行中输入“get
all”,按6之后,敲回车键“Enter”即可用 2个键迅速的实
现“east;get all”两步操作。

1.2.4 宏定义链。
在定义宏的时候在命令后加一个“~”,那么当你键入这个键
时,命令并是马上执行,而是先输入到命令行中去,并且把光
标停留在这条命令的末尾。这样你就可以输入另一个宏定义键,
于是就构成了宏定义链,这样可以减少你输入的键数。比如:
如果我们定义了两个宏定义键:
F8 open door~
小键盘的8 north
这样当我们输入“F8,8”的时候,命令“open door;north”
就被执行了,我们仅仅按了两个键,是不是特方便?

注:其实在我们使用Zmud的时候,Zmud 已经为我们定义好了
一些宏定义键,象我上面提到的“north,east”等方向键等等,
你可以通过按“Ctrl+k”来查看修改这些宏定义键。

1.3 Variable 变量。变量相当于编程语言中的变量。 
一旦定义可以用于命令的任何位置。 

1.3.1 定义的方法。 

1.3.1.1 在命令行中使用命令#VAR。比如:#VAR food jitui, 
就定义了一个变量,并将值“jitui”赋给了变量“food”。 

1.3.1.2 通过变量窗口。 
选择Zmud的顶部菜单中的“View->variables”,或按菜单项 
“variables”,都可以打开变量窗口。在“Variable”中添 
入要定义的变量的名字,可以同时指定变量的初值(Value), 
默认值(Default)。这样一个变量就定义完毕。比如:上例中 
的变量在变量窗口中可以这样定义:在“Variable”中添入 
“food”,在“value”中添入“jitui”,即可完成变量“food 
”的定义和赋值。 

1.3.2 变量的引用方法。 
在变量名之前加一个“@”,即可引用这个变量的值。比如: 
我们用“@food”即代表了jitui,“eat @food”即完成“eat 
jitui”的动作。变量的价值在于:当我们改变变量“food”的 
值时,我们不必改变命令“eat @food”,比如:当“food”的 
值变成 “gourou”时,我们一样可以用“eat @food”完成吃 
的动作。 

1.3.3 系统变量。 
Zmud为我们提供了一些系统变量,这些变量以“%”为前导, 
它们可以象普通变量一样引用,只是它们以“%”为前导,而 
不是“@”。这些变量较少用到,也许我会在以后的高级应用 
中进一步解释。 
注:在退出Zmud时,系统并不要求你保存已定义的变量,如 
果你想保存这些变量,那么在退出Zmud之前你必须先保存好 
这些变量。 

1.4 Trigger 
我不知道该叫它什么,触发?扳机?...我看还是叫“动作” 
比较恰当。也就是说,它能够根据发生的不同情况执行相应 
的命令。哇~这正是我们想要的!这是Zmud的最基本而有用的 
功能!也是做机器人的基础。打瞌睡的快醒醒,瞪大你的眼 
睛,竖起你的耳朵,:) 

1.4.1 定义的方法。 

1.4.1.1 利用命令行 #TRIGGER (或者 #ACTION)。 
语法:#TRIGGER {pattern} {command} 
比如:#TRIGGER {你气喘嘘嘘,看起来状况并不太好。} 
{exert recover} 
这样,当屏幕上出现“你气喘嘘嘘,看起来状况并不太好。” 
信息时,你定义的Trigger就会触发,产生“exert recover” 
的动作,这样你就可以自动恢复气血了。当然在command 
中可以使用已定义的变量(valiable)或别名(alias)。 

1.4.1.2 通过动作定义窗口。 
从Zmud的顶部主菜单中选择“View->Trigger”,就会打开 
动作定义窗口,所有已定义的Tigger都会显示在这个窗口 
中,所以我们可以随意地修改它们,当然也可以添加或者删 
除。在窗口中有这么几个项:Class,Pattern,Command。 
Class是动作的类,你可以将相关的动作放在一个类里。 
Pattern是模式的意思,也就是说你期望屏幕上出现的信息, 
你可以从屏幕上直接粘贴这些信息。Command是当你的pattern 
跟屏幕上出现的信息吻合时将产生的动作。另外还有几个按钮 
“Enable class”让选定的动作起作用,“Disable Class” 
则让选定的动作暂时失去作用。“Testing” 可以测试你定义 
的动作是否正确。“Options”中是关于动作的一些设定,我 
会在以后进一步说明。 

1.4.2 对Tigger的控制。 
在通过命令行定义Trigger时,可以再加一个参数,如下: 
#TRIGGER {pattern} {command} classname 
这个classname就是你要为这个Tigger起的类名。这样在命 
令行中,我们可以通过“#t+ classname”来打开一个类(相 
当于在窗口中按“Enable class”按钮),也可以用 
“#t- classname”来关闭一个类(相当于在窗口中按下按 
钮“Disable Class”)。 

注:匹配符。 
* 可以代表一个或多个字符,也可以代表空格。 
? 可以代表一个字符。 
%d 代表任何十进制的数字(0-9)。 
%w 可以代表任何拉丁字母(a-z) (a word)。 
%a 可以代表任何拉丁字母或阿拉伯数字(a-z,0-9)。 
%s 可以代表空格或跳格键 (spaces, tabs)。 
%x 可以代表任何非空格字符。 
[range] 代表规定范围内所列出的任何数量的字符。 
^ 强制从一行的开头进行匹配。 
$ 强制从一行的结尾进行匹配。 
(pattern) 将已匹配的串存入变量里,变量可以是 %1到 %9。 
~ 将下面的字符作出注释,防止它被匹配,实际就是将它忽略。 
{val1|val2|val3|...} 匹配任何已指定的字串。 
{^string} 不匹配选定的字串。 
也许你不太明白上面的解释,不必着急,在以后的讲座中, 
我会结合实例进一步解释。 

1.5 button 按钮。 
通过点击按钮可以执行相应的命令,也可以显示某个参数的 
值,还可以方便地控制Trigger的开启或关闭等。按钮可以使 
我们的操作更加直观、方便。 

1.5.1 按钮的类型。 
按钮可以分成两种:点击按钮和开关按钮。当你用鼠标按下 
“点击按钮”时,命令被执行,当你释放鼠标时,命令被释 
放。而点击“开关按钮”,按钮将在“ON”和“OFF”之间循环。 

1.5.2 定义的方法。 
从主菜单中选“Action->Make buttons”或者“View->Buttons” 
都将弹出按钮的编辑窗口。如果选定“Toggle”,将定义 
一个“开关按钮”。“Off Caption”指定“OFF”状态时按 
钮上显示的文本;“On Caption”指定“ON”状态时按钮 
上显示的文本;“Off Command”指定按钮ON时执行的命令; 
“On Command”指定按钮OFF时执行的命令。“Variable”可 
以定义按钮所需的变量。如果不选定“Toggle”,将定义一 
个“点击按钮”。只需在“Off Caption”和“On Command” 
中添入相应的内容即可。 

1.5.3 按钮的高级属性。 
在按钮的“Advanced”设置里你可以指定、修改按钮的许多特性。 
比如:按钮的颜色,改变按钮的尺寸、位置,为按钮指定一 
幅图片等等。 

例子: 
自动study机器人的设计: 

1。变量的定义: 
book 要study的书或物品名 
st_value 用于study的心神值 
st_back 用于恢复心神的内力值 
st_loop 用于正循环的气血值 

2。triggers的设计: 
class: 
study 
pattern: 
内力 :(%s)(%1)/(%s)(%d) 
commands: 
#if (%1<@st_back); 
{#wa 3000;exercise @st_loop1;#wa 3000;exert recover;hp}; 
{#wa 3000;study @book @st_value;#wa 500;exert refresh;hp} 

3。button的设计: 
Off caption:study off 
on caption: study on 
on commands:#prompt book;#t+ study;hp 
off commands:#t- study 
(这仅仅是一个例子,如果要用于实际当中,还要做一些改 
动。)这一节我介绍的只是Zmud编程中的基本要素,也许枯 
燥一点,但了解这些基本要素是很有必要的。有了这些基本 
要素,我们就可以利用他们构造出各种各样的自动操作,也 
就是我们常说的 robot(机器人)。下一节我会结合实际, 
专门讲几个例子探讨一下robot的制作方法。 


--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: public.hr.hl.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.717毫秒