认真学习糖果文章
高级的根本看不明白了。简单的学点。1.另外Alias还可以带参数使用
实例一:#alias {chan} {wield sword;perform sword.chan %1 %2;unwield sword}
这样就制作一个alias,下面分别是4种使用结果
A: chan 相当于输入wield sword;perform sword.chan;unwield sword
B: chan wushi 相当于输入wield sword;perform sword.chan wushi;unwield sword
C: chan zhang san相当于输入wield sword;perform sword.chan zhang san;unwield sword
D: chan 1 2 3 相当于输入wield sword;perform sword.chan 1 2;unwield sword 3
可以看到,无论你带不带参数,带几个参数,zmud都不报错,他都按照他自己固定的理解来执行你的命令,2个参数以内的依次替换成%1 %2,多余的参数全部放在最后,没有就直接无视,相当的灵活。
*一直弄不好带参数。。。
2.比如:#tri {【%s气血%s】%s(%d)%s/%s(%d)%s~[(*)~%~]%s【%s内力%s】%s(%d)%s/%s(%d)} {#if (%1>500) {dazuo 500} {exert recover;dazuo 500}}
简单的判断一下气血值,如果大于500就dazuo 500,否则就先吸气然后dazuo 500
*修改下保卫dazuo以防内力增加。
3.%ctime还可用于萧峰,万安塔,胡一刀,护镖,护送和朝廷守门等任务,能接任务时由机器人自动提醒,具体在第七章中专门介绍
4.%i主要用于各种命令中,配合#number和#loop来使用,也用于专门针对数据库变量、record类型变量和list类型变量的命令中,这些命令主要有#loopdb,#forall等等
比如 #5 kill menggu bing %i等价于kill menggu bing 1;kill menggu bing 2;kill minggu bing 3;kill menggu bing 4;kill menggu bing 5
* #10 look yuebing %i ,上次zgbl说要做robot看,你看一个命令就ok.
5.%random产生一个0-99的随即数字,%random(1,5)产生一个1-5的随机数,结合#case命令来发送随机命令
#case @variable {cmd1} {cmd2} {cmd3} {cmd4} {cmd5}...可以根据@variable值的不同来发送不同的命令,比如@variable值为3,第3个括号中的命令cmd3会被执行,其他命令都不执行。
6.注意事项:#wa为单线流程,多个#wa同时执行时,后面的会替代前面。
试验A:在命令行里输入#wa 10000;hp,然后输入#wa 1,会发现hp被立刻执行了
7.注意:zmud 555在加载其他机器人时,不同的时间器之间会发生干扰,tick timer的3要素都会发生改变,所以建议Timeout Command中的值统一填为timer,并且新建一个alias timer来保存计时结束需要执行的命令串。
实例二:胡一刀接任务的时间间隔为10分钟,10分钟到了的时候由机器人提醒
tick timer中Timer Interval设置为600秒,Timeout Margin设置为5秒,Timeout Command设置为{#say 可以接任务了!}
#tri {胡一刀说道:『我收到消息,听说&hydaddress有盗宝人&dbrname~(&dbr~)找到了闯王宝藏的地图} {#tz}
实例三:用#wa来实现计时器的功能,这样你就拥有相当于2个计时器了。
#alias ticktimer {#wa 10000;hp;ticktimer}
如果你在命令行输入ticktimer,恭喜你,你有了另外一个计时器,每隔10秒就执行一次hp命令。如果你不修改ticktimer这个alias,它将永远不会停止,请用#alias ticktimer {}来停止这个时间器。
8.命令格式为#alarm hh:mm:ss {cmds}
其中hh:mm:ss为时:分:秒,时间前面可以加上"+"或者"-",hh、mm、ss前面也可以加上*或者直接用*代替,"+" "-" "*"这3个特殊字符的含义举例说明
建议:使用这个命令太频繁,机器人里会有很多已经触发过的alarm类型的trigger,但是这些trigger并没有删除掉,建议创建这个trigger的时候,统一取一个alarm的类名,这样就可以随时用#delclass alarm来删除所有的alarm类型的trigger.
实例五:胡一刀接任务的时间间隔为10分钟,10分钟到了的时候由机器人提醒
#tri {胡一刀说道:『我收到消息,听说&hydaddress有盗宝人&dbrname~(&dbr~)找到了闯王宝藏的地图} {#alarm +600 {#say 可以接任务了!}}
实例六:保卫时间自动上线
#alarm {2|6|10|14|18|22}:50:00 {#connect;@account.zhanghao;@account.mima}
#tri {【公告天下】保卫襄阳任务全部结束} {quit;#disconnect}
其中record类型变量@account中保存有帐号密码信息
#connect连接服务器,#disconnect从服务器断开
9. 防止发呆
实例一:跳楼机器人做起来很简单,但是从塔上跳下来之后会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;否则表示机器人中断,重新运转它
10. 自动连线
非常简单但是实用的一个办法。
zmud555和721的alias列表里都有atconnect这个alias,atconnect中的命令是空的。你可以修改这个alias里面的命令,在连接到服务器时自动执行,用这个alias来输入帐号密码非常方便。
zmud462中虽然没有atconnect这个alias,但是你可以自己新建一个atconnect,功能和555 721版一样。
注:每当连接到服务器时,atconnect里面的命令都自动执行,不需要另外的trigger或者命令来执行它。所以它不是常规的alias,你在新建常规alias的时候,也不要取名为atconnect。
尽量为你的每个机器人都添加自动连线和防止发呆功能,在双保险的情况,你的机器人连续挂几天不是什么难事。 汗颜
chat* pat liushuii 我也学习滴说。呼呼。有些东西还是不懂 * #10 look yuebing %i ,上次zgbl说要做robot看,你看一个命令就ok.
呵呵,我的意思是,月饼超过十个时这样就行不通了,zmud最多只支持#10,不过你还可以无耻点的#9 l yuebing 1%i……
这也可以精华啊
怪不得古书那么多注解训释. 这个这个,貌似可以设置一个循环的#var i 1
这是一个月饼。。。
look yuebing @i;
#add i 1
你身上没有这样东西
#var i 1
麻烦了点,不过你有100个月饼都可以看了 糖果是不是用zmud555的?
页:
[1]