zmud实战
2007/5/13 23:54:49

2.实战--robot实例讲解。 
  做机器人的步骤可以分如下几步: 
  (1)分析动作; 
  (2)定义别名(Alias); 
  (3)定义变量(Variable); 
  (4)定义动作(Trigger); 
  (5)定义按钮(Button); 
  (6)测试 
下面我将结合实例讲解一下robot的制作过程。 
  由于前人已有的机器人的例子太多了,在选择例子 时,很难跟别人不同,我只是选择一些常用的例子, 我的目的只是针对新手。 
  2.1 自动应答。 
  robot的最大特点是可以根据发生的事件自动作出 相应的动作。如果有人狠狠地踢了你一脚,你会有 什么反应?狠狠地回踢一脚?哇哇叫痛?可怜巴 巴地哀求?还是满不在乎地自嘲?... 下面的这 个例子就是针对这种情况而做的,其实对于尚武 一族来说,这个robot毫无价值,而对聊天族可 能是有力的工具。
  如果有人,比如小鬼对你做 了这个动作:小鬼对你说:来了,欢迎! 如果你知道是小鬼在跟你说话,那么你可以直接用: 你说道:谢谢你,小鬼! 可是如果要做一个机器人,自动应答,怎样获知 对方是谁呢?等等,有一个问题必须首先说明一 下!一个玩家在西游记里有两个名字:一个英文 名字,一个中文名字。在做动作时,动作的对象 是英文名字,所以你要针对某个人物做出动作, 必须获得对方的英文名字(id),比如 chat* hammer xxx,tell xxx ... ,give xxx sth 等等。在屏幕上显示的玩家名字是中文的,英文名字 只是用于命令中。
  在这个例子中,我们只是跟对方说 话,所以,我们可以在say 的内容中写上对方的中文 名字,而不用semote做动作,这样我们只需知道对方 的中文名字就足够了。 怎样获得对方的中文名字呢?我们可以利用Trigger 和variable(变量)来实现,利用Trigger 通配符匹 配的特点我们可以将屏幕上显示的我们需要的字符放 到系统的变量中(从%1到%8),从而更进一步将我们 从屏幕上匹配到的值(%1--%8,最多一次可以获得8 个)送到我们定义的变量中,就完成了从屏幕上抓取 信息的目的。
  如下: 
1. 定义变量 我们要取得对方的中文名字,所以要定义一个变量存 放这个中文名字。为此按照第一节中介绍的方法,打 开变量定义窗口,点击new 按钮准备定义一个新变量, 依次添入: Varliable: name Value : 空 Default : 空 这样我们就定义了一个名叫name的变量,我们没有给 它赋值,也没有指定它的缺省值。 
2. 定义Trigger--yingda1 按照第一节中介绍的方法,打开定义Trigger的窗口。 点击new按钮,依次添入: Class yingda1 定义类别yingda1 Pattern (%x)对你说:来了,欢迎! 获取对方的中文名字 Command name=%1;say 谢谢你,@name!   (%x)的作用是将屏幕上这个位置的字符送给系统预留 的变量%1,Command中语句name=%1的意思是将从屏幕 上获得的字符(%x)的值送给变量name,此例中所获 得的字符就是对方的中文名字。@name 的含义是取出 name的值,注意:引用变量的方法是在变量名的前面 加一个“@”。这里“@name” 代表的就是“%x”所 取得的值。这个robot非常简单,相信即使是初学者 也不会觉得难于理解。 
3. 补充--修正一个小bug。 这儿还有一个小问题,有时屏幕上在一行的开头会 有一个“<”,这样当我们用(%x)抓取信息时,会把 这个“<”一起抓下来,结果会变成这个样子: 你说道:谢谢你,<小鬼! 名字的前面多了一个“<”,这真是讨厌!不过你还 记得上一节中提到的“~”吗?在(%x)前面加上“~<” 就会把这个讨厌的符号忽略掉,这样上面的Pattern 可以改成: ~<(%x)对你说:来了,欢迎! 这个例子可以再做一下延伸。 
  如果你想用Tell来跟对方交流,那么你就需要对方 的英文id了。
  怎样获得对方的英文id

下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms