用户工具

站点工具


zmud:hints:wait

#WA命令的妙用

在写zmud机器人时往往会遇到这种情况:希望立即提取某一个或一组数值(如气血值),再马上对这个数值进行判定,然后根据情况决定下一步的行动。最常见的例子就是少林跳楼涨dodge,跳下来之后必须马上决定是吸气呢还是继续跳呢还是去打坐或睡觉。对这种情况zmud的#WA命令提供了很好的解决办法。
#WA就是#WAIT的简略写法。许多人可能只知道#WA加个数值表示等待一定的时间,实际上#WA本身也可以单独用。在zmud 4.62中#WA表示等待下一行出现,在7.21版本中表示等待服务器端传输上个命令的output的结束,简单地说,就是等待提示符再次出现(在pkuxkx中提示符是>)。比如在命令输入hp;#WA;hi那么在462中显示结果为

hp

≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
hi
【 精神 】 100 / 100 [100%] 【 精力 】 0 / 0 (+ 0)
【 气血 】 100 / 100 [100%] 【 内力 】 0 / 0 (+ 0)
【 食物 】 0 / 400 [饥饿] 【 潜能 】 104
【 饮水 】 357 / 400 [缺水] 【 经验 】 2
≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡

你双手抱拳,作了个揖道:各位英雄请了!

在721中显示的结果为

hp

≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 210 / 220 [ 64%] 【 精力 】 0 / 0 (+ 0)
【 气血 】 130 / 140 [ 77%] 【 内力 】 0 / 1 (+ 0)
【 食物 】 0 / 400 [饥饿] 【 潜能 】 20032
【 饮水 】 0 / 400 [饥渴] 【 经验 】 7496
≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡

hi

你双手抱拳,作了个揖道:各位英雄请了!

从上两例可以看出来,4.62中#WA是等待确定的一行,而7.21中#WA是等待服务器端把上个命令的结果完整地输出。因此我们可以利用这点来有效地提取hp数值。下面7.21里一个简单的跳楼机器人:
#ALIAS tiaolou {enter;#6 u;out}
#TRIGGER {你已稳稳地站在地上。} {#WA 2000;hp;#WA;#IF @neili>1000 and @jing>300 and @qi>450 {tiaolou} {#IF @neili>1000 {exert regenerate;exert recover;tiaolou} {exert regenerate;exert recover;dazuo 500}}
#TRIGGER {你运功完毕,深深吸了口气,站了起来。} {hp;#WA;#IF @neili>1000 and @jing>300 and @qi>450 {tiaolou} {#IF @neili>1000 {exert regenerate;exert recover;tiaolou} {exert regenerate;exert recover;dazuo 500}}

这是个相当简化的跳楼机器人,在鼓楼小院输入tiaolou即开始运行。如果是在4.62中,则上面trigger的命令中#WA被替换成4个#WA,同样也可以确保读出当前的气血内力值。

相对来说,7.21中的#WA命令更为好用,因为它不会受到干扰,比如chat或rumor频道消息。
此外,在zmud 7.21中,#WA可以有更多的用途。比如当你内力值很高的时候(如一万多),如何一口气向师傅请教几千上万次?如果手动操作,要不就输入太多的命令系统拒绝执行,要不就是等待时间过多。721中的#WA可以循环,因此可帮你实现这个功能。下面是一个简单的一口气像书生请教一千次literate的例子。
#LOOP 1000 {learn shu sheng for literate 50;#WA;exert regenerate;#WA}
这一用法还将适用于内力值很高时在少林领悟。

zmud/hints/wait.txt · 最后更改: 2020/08/15 21:40 (外部编辑)