背景:
阅读文章

ZMUD机器人制作(精)

提高机器人稳定性和适用面

[日期:2013-12-11] 来源:mud游戏网  作者: [字体: ]
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挂机时更加方便,别人也更容易使用你的机器人.
【内容导航】
第1页:聊聊zmud和机器人 第2页:机器人的核心灵魂
第3页:variable和alias的初级应用以及if语句 第4页:机器人实例-打坐吐纳机器人
第5页:buttons﹑系统变量﹑function 第6页:Variable和Alias的更多应用
第7页:掌控时间 第8页:提高机器人稳定性和适用面
第9页:丰富你的机器人 第10页:机器人实例--朝廷守门机器人
第11页:Path的用法 第12页:variable和alias的进一步应用
第13页:遍历实现的一种方法 第14页:路径的逆转和简化
第15页:实际例子--解决乱入的2种办法
收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容       机器人  zmud 
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论