luckygeb 发表于 2011-1-18 17:38:52

求教mushclient高手,如果两个触发器同时触发了,怎么处理啊?

如题,如果这两个触发器是同一类型,那不可能,可如果一个是timer一个是trigger,怎么办?我做的机器人经常跑乱,诸位高人,都是怎么解决的啊?

lzkd 发表于 2011-1-18 17:54:09

这个应该是你机器人的思路问题

luckygeb 发表于 2011-1-18 18:39:18

回小刀,举个最简单的例子

send("halt");
world.DiscardQueue();
world.DeleteTemporaryTimers();
world.DoAfterSpeedWalk(2,DoOtherThing);

如上的这个,写在一个一次性timer里,用以避免发呆的busy,并跳出开始DoOtherThing,trigger里有另一个触发器

<trigger enabled="y" group="learn" match="^(.*?)你发呆了一会儿,发现自己居然精神百倍!(.*?)$" regexp="y" send_to="12" sequence="100">
<send>world.DoAfterSpeedWalk(1,"(learn zhu for literate 50) (fadai)");</send>
</trigger>

现在从发呆室出发,要保证绝对可以做DoOtherThing,该怎么做?如果DoOtherThing之后再回来发呆以此循环,网络好些不容易测出,网络稍差很容易就一只发呆了,DoOtherThing做不了

littleknife 发表于 2011-1-18 18:44:31

写一个自定义的触发,或者其他触发来Doothering.
Set nextdo start---->设置环境变量 nextdo start--->触发Doothering.


send("halt");
world.DiscardQueue();
world.DeleteTemporaryTimers();
world.DoAfterSpecial(10,"Set nextdo start",10);


[ 本帖最后由 littleknife 于 2011-1-18 06:45 PM 编辑 ]

lzkd 发表于 2011-1-18 18:45:35

这个情况,你用以下思路可以解决.
因目前我的环境问题,无法给出代码,这个请见谅.

一般是---你发呆了一会儿,发现自己居然精神百倍---这句会引起一个触发.
你在那个触发前面再加一句,
把你timer的时间设置往后移动个20秒的样子(即延后20秒再运行timer,具体命令查手册)

这样,如果你的网络一直正常,你就可以一直正常触发,而不会使用到timer(因为他一直往后延嘛),如果网络出了问题,不能正常触发,则,timer可以解决问题

这只是一个思路,供参考
页: [1]
查看完整版本: 求教mushclient高手,如果两个触发器同时触发了,怎么处理啊?