tonii 发表于 2009-8-15 09:09:25

一个简单的问题,关于#WA

#var i 1;
#while (@i<10) {#wa 2000;#say @i;#add i 1}
按正常理解应该是每2秒say一个数字,单执行后等待2秒全部say出来了
怎么会这样?版本zmud462

tonii 发表于 2009-8-15 09:47:07

版本问题,彻底对462死心了,转投721去也

sghjjj 发表于 2009-8-15 10:18:52

while的缺陷,while里有#wa就不正常了
721估计也是这样吧
所以我都是用嵌套替代while,可以达到你的目的

tonii 发表于 2009-8-15 11:06:56

用721试验可以
另一个问题请教楼上:
#wa 5000;#say ok;#wa 1等待了5秒显示而不是立即显示,为何?
不是说后一个会替代前一个吗?在462和721都如此,555打不开无法试验

zgbl 发表于 2009-8-15 11:09:10

替代那是你wa输进去了,前面在wa 5000中后面的wa 1还没开始执行,当然不行
你如果输入#wa 5000;#say ok然后马上#wa 1就可以
一起输的话,zmud的判断是前一个指令执行完毕后再执行下一个,相当于你#wa 5000,五秒过后后输入#say ok然后输入#wa 1的效果

tonii 发表于 2009-8-15 11:18:59

462中可以
721里还是等待5秒
烦恼啊,有时候需要等待完毕执行下一个命令,有时候需要立即执行,这两者不知道能不能同时实现。
另佩服一下楼上二位,对zmud的理解已经深不可测了ttk_05

sghjjj 发表于 2009-8-15 12:13:42

要分2次输入#wa 5000;#say ok;#wa 1
先输入#wa 5000;#say ok
然后输入#wa 1
就替代了

sghjjj 发表于 2009-8-15 12:17:37

这些其实说不上是zmud的优点还是缺点了
总之,熟悉了命令的脾气,然后利用它
本来#wa互相替代是一个缺点,也是可以拿来利用的,某些时候做机器人的时候很方便

tonii 发表于 2009-8-15 12:40:43

拜读了楼上的巨作试着自己写机器人,发现问题很多,主要是还不熟悉,比如
快速行走时#if (%mod(@step,5)=0) {#wa @time;go} {go}
遍历搜索时#wa @longtime;go;   {这里*的出口是} {#wa 1}
就卡在这里,462快速行走命令#wa @time完一次性发出,遍历搜索正常;721快速行走正常,遍历搜索每次都等#wa @longtime完才执行下一个命令,异常烦躁啊

sghjjj 发表于 2009-8-15 13:20:06

其实就是#wa命令在数次版本中都变化较大,如果你用555就2个都正常了,赫赫
另外2个版本想办法解决吧,addoil
页: [1] 2
查看完整版本: 一个简单的问题,关于#WA