8.1 防止发呆
实例一:跳楼机器人做起来很简单,但是从塔上跳下来之后会busy 1.5秒左右.大部分时候1.5秒以后就可以继续跳楼了,但是由于网络的原因,有时候2秒都不能保证busy结束.
如果#wa 2500;enter;do 6 up;out固然比较保险,效率却很低.
2.5秒跳一次和1.5秒跳一次从效率上来说差别太大.
#tri {你已稳稳地站在地上。} {#t+ busy;#alarm +6 {enter;do 6 up;out};#wa 1500;enter;do 6 up;out}
#tri {你的动作还没有完成,不能移动。} {#t- busy;#wa 2000;enter;do 6 u;out} {busy}
这个trigger不仅能解决busy问题,同时还能解决up的时候被系统跘住的问题,机器人最多发呆6秒就能继续工作
在#alarm +6 {enter;do 6 up;out}未触发之前,再一次建立#alarm +6 {enter;do 6 up;out},这个时间触发器会被重置,触发器中的命令暂时不会执行,所以不用担心会出现多次跳楼的情况。
在侠客岛读石壁也可以用类似办法来防止机器人中断,同时设置好自动连线,除非服务器掉线超过10分钟才可能会从侠客岛上掉下来.
类似办法同样也可以用于打坐吐纳,钓鱼,读书,领悟等各种机器人中
防止发呆的一般做法:
步骤一: 一般一个机器人正常运转时,都会循环出现各种信息,可以将这些信息做成trigger,触发命令中加入#add idle 1
步骤二: #alias Testidle {#alarm +@time {#if (@idle>0) {#say 运行情况良好;#var idle 0} {#say 机器人已经中断;let it run};testidle}}
对@idle进行定时判断,如果@idle大于1,表示运行情况良好,变量归0;否则表示机器人中断,重新运转它
8.2 自动连线
非常简单但是实用的一个办法。
zmud555和721的alias列表里都有atconnect这个alias,atconnect中的命令是空的。你可以修改这个alias里面的命令,在连接到服务器时自动执行,用这个alias来输入帐号密码非常方便。
zmud462中虽然没有atconnect这个alias,但是你可以自己新建一个atconnect,功能和555 721版一样。
注:每当连接到服务器时,atconnect里面的命令都自动执行,不需要另外的trigger或者命令来执行它。所以它不是常规的alias,你在新建常规alias的时候,也不要取名为atconnect。
尽量为你的每个机器人都添加自动连线和防止发呆功能,在双保险的情况,你的机器人连续挂几天不是什么难事。
8.3 提高适用面
一个机器人可能只适用于某个id或者某个门派,需要更改很多变量才能适用于另外的id和门派。可是从大量的variables中寻找要改的变量不仅浪费时间,而且容易漏掉一些变量。如果你不是机器人的制作者,可能都不知道要怎么改。这个时候机器人的适用面就非常窄了,而且别人用起来也不容易,不能算是一个好用的机器人。
有3个命令可以用于解决这个问题,分别是#pick,#pr,#yesno
实例二:在我发布的555版领悟机器人中第一个按钮中的命令
n=1
#pr level "你要领悟或者练习到多少级"
//弹出一个对话框,提示你输入一个数字,这个数字被赋值给level,达到了修改领悟等级的目的,并且别人可以通过“你要领悟或者练习到多少级”这句话很清楚的知道要输入什么内容
#wh @n {#pick {p:添加要领悟或者练习的武功} {o:1} {添加基本功夫:#exe @action1
#exe @action2} {添加特殊功夫:#exe @action1
#exe @action6
#if %ismember(@skill,@tsskills)=0 {#exe @action3
#exe @action4
#exe @action5}} {*添加完毕:#var n 0}}
//这个命令要复杂一些了。#pick弹出一个选项框,可以提供很多选项来选择
//{p:添加要领悟或者练习的武功}为这个选项框设定一个名字或者称为"title"
//{o:1}表示这个选项框为单选框,去掉这个则默认为复选框
//{提示信息:命令}设置这个选项框的选项,当鼠标点击选择这个选项时,命令被执行
//{*添加完毕:#var n 0}}提示信息前面加入了*,表示这个选项为默认选项
//上面#pick总共设置了3个选项,只有当选择最后一个选项时,#while的循环中止,整个命令结束,否则反复弹出选项框,用来反复添加基本功夫和特殊功夫
实例三:如果你的机器人有自动连线功能,那么制作一个按钮来修改帐号密码等信息就很必要了
#button 0 {修改帐号} {#pr account.zhanghao "你的帐号";#pr account.mima "你的密码" "*"}
这里#pr account.mima的时候,多用了一个可选设置"*",当你在对话框中输入密码时显示****,也算是一个有趣的功能吧.
实例四:万安塔简化识别码的输入
#tri {你向鹿杖客打听有关『进塔』的消息。} {#pr answer "识别码";exert powerup;answer %upper(@answer);perform busy wushi}
#alias jinta {ask ke about 进塔}
在万安塔门口输入jinta,就自动弹出一个对话框询问你识别码,对照图片在对话框中输入小写的识别码,自动回答大写的识别码,同时powerup和busy武士
#yesno "question" {yes-command} {no-command}
这个命令用来弹出一个对话框询问你一个问题,如果你点yes,那么yes-command被执行,否则no-command被执行
做机器人的时候尽量考虑到门派的差异以及帐号密码的不同,然后制作一些按钮来修改这些信息,不光自己在用不同id挂机时更加方便,别人也更容易使用你的机器人.