秋林拾叶【mud.Gameivy.COM】 >> 论坛 >> ┈┋MUD 交流区┋┈ >> 武林群侠传 >> 机器人分享区 >> Zmud编程方法简明教程
Zmud编程方法简明教程 ivy,2005-07-03 09:33:39


与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 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_loop;#wa 3000;exert recover;hp};
{#wa 3000;study @book @st_value;#wa 500;exert refresh;hp}

解释:这个command的意思是,如果内力的左边值小于用于恢复的值,那么就练内力;否则,就读书,并用内力恢复精神。
3。button的设计:
Off caption:study off
On caption: study on
On commands:#prompt book;#t+ study;hp
Off commands:#t- study
(这仅仅是一个例子,如果要用于实际当中,还要做一些改动。)
这一节我介绍的只是Zmud编程中的基本要素,也许枯燥一点,但了解这些基本要
素是很有必要的。有了这些基本要素,我们就可以利用他们构造出各种各样的自
动操作,也就是我们常说的 robot(机器人)。

 97 1 8: 此主题共有1帖 此页1帖 每页12帖 

[查看完整模式]

LeadBBS 4.0 耗时0.008秒 query:2