北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4472|回复: 4

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

[复制链接]
发表于 2011-1-18 17:38:52 | 显示全部楼层 |阅读模式
如题,如果这两个触发器是同一类型,那不可能,可如果一个是timer一个是trigger,怎么办?我做的机器人经常跑乱,诸位高人,都是怎么解决的啊?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-1-18 17:54:09 | 显示全部楼层
这个应该是你机器人的思路问题
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-1-18 18:39:18 | 显示全部楼层
回小刀,举个最简单的例子

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

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

  
  world.DoAfterSpeedWalk(1,"(learn zhu for literate 50) (fadai)");
  


现在从发呆室出发,要保证绝对可以做DoOtherThing,该怎么做?如果DoOtherThing之后再回来发呆以此循环,网络好些不容易测出,网络稍差很容易就一只发呆了,DoOtherThing做不了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-1-18 18:44:31 | 显示全部楼层
写一个自定义的触发,或者其他触发来Doothering.
Set nextdo start---->设置环境变量 nextdo start--->触发Doothering.


  1. send("halt");
  2. world.DiscardQueue();
  3. world.DeleteTemporaryTimers();
  4. world.DoAfterSpecial(10,"Set nextdo start",10);
复制代码

[ 本帖最后由 littleknife 于 2011-1-18 06:45 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-1-18 18:45:35 | 显示全部楼层
这个情况,你用以下思路可以解决.
因目前我的环境问题,无法给出代码,这个请见谅.

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

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

这只是一个思路,供参考
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 07:45 PM , Processed in 0.009554 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表