2.1 触发triggers
一个机器人什么都可以没有,就是triggers不能没有,所以称它为机器人的灵魂一点没错.机器人都是靠triggers来作出反应的.
你可以从菜单里打开你的triggers,也可以点击那个手枪的图标来打开triggers.然后点击new来新建一个trigger,你会发现trigger有四个要素:Pattern﹑Commands﹑Enable/Disable和Class。
Zmud根据Pattern的内容来做出反应,简单点说只要你的屏幕上出现了跟Pattern一致的内容,Commands里的内容就作为命令发送出去了。Enable表示这个trigger是激活状态,Disable表示trigger不激活,处于无效状态。Class表示这个trigger所属的类,可以通过操作整个类来达到一次性同时操作多个trigger的目的。
另外trigger还有Options和Test,Zmud721中还有States
Test是用来测试触发的,实际用处不大,trigger制作熟练了很少会测试。
Options里默认的勾上的几个选项就是平时用到的。没勾上的几个除了alarm之外用处都不大,alarm我会在以后讲到;Temporary是用来建立一个一次性trigger,用完就扔的那种,命令是#temp,但是我更喜欢用#t+ #t-来达到这个目的;Expression是建立一个表达式trigger,没什么用;颜色触发也不像期待中的那样强大,有兴趣可以自行研究。
2.2 字符串匹配
简单点说就是通过几个特殊的符号来代表具有某些共同之处的一类信息。只被用于Pattern。
zmud提供的字符号串匹配有:
* 通配任何数字、字符或空白
%d 通配任何数字(0-9)
? 通配任何单个字符
%s 通配任何空白(spaces,tabs)
%w 通配任何字母(a-z)
%a 通配任何数字和字母(等于%d+%w)
%n 通配任何以+或-开头的数字
%x 通配任何非空白
%p 通配一个方向
[range] 通配任何在range范围内的字符
^ 表示一行的开头,想要你的trigger在一行的开头才有效,就在最前面加上这个
$ 表示一行的结尾。
(pattern)将括号里面的内容依次存放在参数%1~%99里
{val1|val2|val3|……} 通配val1,val2或者val3
还有一个特殊字符就是~,用在特殊字符前面。因为有些特殊字符被zmud理解为其他意思了,所以为了通配这些特殊字符,前面要加~
比如~{通配{ ~?通配? ~~通配~
在命令行输入#say %def,默认显示为#;@!%.:~>&,再加上括号{}()[],这些都是有特殊含义的特殊字符了,要匹配这些字符,前面都要加上~
关于字符串匹配,主要就是这些了,而真正常用的就几个,上面标记为蓝色的是我用过的,这些就够了,其余的一次都没用过。所有的这些都可以在zmud帮助文档里查到。
实例一:#tri {□手持一个圣火令~(Shenghuo ling~)} {#say 明教武士}
//#tri表示用命令新建一个trigger,第一个花括号里的内容作为Pattern,第二个花括号里的内容作为Commands
//这里用到~(来通配(
实例二:#tri {【%s气血%s】%s(%d)%s/%s(%d)%s~[(*)~%~]%s【%s内力%s】%s(%d)%s/%s(%d)} {#show %1 %2 %3 %4 %5}
//依次显示出你的气血 气血最大值 受伤状况 内力 内力最大值
//如上面讲过的,()的作用是把里面的内容按顺序依次保存在临时参数%1~%99里
上面2个例子分别用到了zmud提供的2个命令#say和#show,功能差不多颜色不同,都只是在屏幕上显示某些内容用的,这些内容不作为命令发送给服务器执行,但是zmud会用这些内容来触发trigger,所以做机器人的时候可以用这个来做触发,好处可以自行体会。
建议:做Pattern的时候不要手动输入,因为中文英文半角全角各种特殊字符还有空格符,你的手动输入很可能不正确,等整个机器人做成功了查错又不容易。所以尽量用粘贴的,然后先把里面的空格全部换成%s,把所有的特殊字符前面都加上~,要怎么通配的就换成什么通配,最后看要不要顶行触发或者结尾触发,这样一般不会有错了。
2.3 Class和#t+ #t-的用途
Class有好几个用途,比如为了方便Import,点击Settings->Import->settings,然后选择一个机器人,再选择一个Class点击Add-OK就可以把另外一个机器人里面所有归为某个Class的triggers,variablde,alias等都添加到当前机器人里面。如果删除某个Class,那么该Class下的所有元素全部删除。
#t+和#t-分别是激活和关闭某类trigger。#t+和#t-都是针对Class的名字来操作,所有的variable,alias,trigger,button都可以取一个class名字,但是只有trigger才有Enable/Disable状态,所有#t+/#t-只对trigger有效。这2个命令被广泛的应用与机器人制作中,非常重要。
实例三:某些trigger只希望它在特定的时候激活,其他时候都处于关闭状态,用来防止误触发,这时候用#t+ #t-是最适合不过的了。
#tri {你向林震南打听有关『*镖』的消息。} {#t+ job}
#tri {林震南说道:「你上次运镖太辛苦了,下去休息休息吧。」} {#t- job;#wa 5000;ask lin about job} {job}
//这里第2个trigger设置了一个class:job,平时都处于disable状态,只有当你向林要任务的时候才开启,并且在trigger触发之后立刻关闭。
如果你不这样做,当别人来要任务也要不到的时候会出现同样的触发信息从而误触发。游戏里好多机器人同时跟林要任务,互相干扰,结果就变成要任务比赛了。那么恭喜你,你的机器人是个流氓,刷屏!