文字MUD游戏论坛-天下泥潭群英会-水泊梁山

文字MUD游戏论坛-天下泥潭群英会-水泊梁山 (http://www.aolai.org/forums/)
-   『 机器人制作及下载 』 (http://www.aolai.org/forums/f5/)
-   -   【求助】关于自动找怪的初级问题 (http://www.aolai.org/forums/t9349/)

dearwolf 2005-03-02 14:56

【求助】关于自动找怪的初级问题
 
在袁的任务时
“袁天罡将手中桃木剑向四方一划,对你说道:”和“近有xxx在xxx出没,为害不小,请速去收服!”
这两句话是在两行里面出现的
请问这种情况应该怎么触发?
怎么样根据上面一句话来捕获下面这句话的内容?

另外一个就是
在自动行走的时候,假如说我把所有的方向都写好了,让它来走,怎么样可以在碰到要找的怪物的时候,可以停下不再继续往前走?

谢谢大家了!

老酒 2005-03-02 16:11

回复: 【求助】关于自动找怪的初级问题
 
做两个触发,分别给予不同的组名,比如yuan和yuan1,默认都是关闭的。然后在你要怪的时候ask yuan about kill;#t+ yuan。这个打开的class yuan里的pattern就是{袁天罡将手中桃木剑向四方一划,对你说道:} 而它触发的命令是#t+ yuan1;#t- yuan。class yuan1里就是近有xxx在xxx了,而且在命令最后再跟一个#t- yuan1。
zmud处理收到的文本是一行一行比对触发的,所以顺序是先根据第一句触发打开另一个触发,然后再比对第二句,第二句同样触发成功后在命令最后将自己关闭,就可以避免再被下边出现的别人妖怪的信息触发了。

关于找怪的过程,你在要怪的时候应该抓下了怪的信息,假设你用g_name来存储怪的中文名,而你是用已经记录好的path来找怪。那么就在开始找怪后开启一个触发,触发行就是@g_name,命令行则是#stop,这样当出现你的怪的时候path行走就会停止了。

luoyiluoyi888 2005-03-02 17:09

回复: 【求助】关于自动找怪的初级问题
 
定老酒就是老酒!不是一班人,一定是2班的

dearwolf 2005-03-02 19:04

回复: 【求助】关于自动找怪的初级问题
 
天啊
老酒好厉害好厉害!
佩服死了!

dearwolf 2005-03-02 23:15

回复: 【求助】关于自动找怪的初级问题
 
老酒,再问你个问题吧,还是接着上面的问题的
就是我根据怪物的名字可以做触发了,比如看到这个怪物之后就对自己说一句faint,这样子可以
但是用#stop命令停止不下来,请问这是怎么回事呢?
比如说,我找高老庄的怪物就是
#13 s;#6 w;w;s;n;w;n;s;s;n;w;w;n;s;s;s;s;e;w;sw;ne;n;n;n;e;e;e;e;n;w;e;e;w;n;w;e;e;w;n;w;u;d;e;e;w;n;
它就会沿着这条路径一直走下来,一直走到头为止,中间一点都不停
请问这该怎么办呢?

dearwolf 2005-03-03 01:11

回复: 【求助】关于自动找怪的初级问题
 
还有一个问题
我写的机器人找怪的时候
是根据怪物的地点,然后say 地点,然后去找的
但是say 长安城西的时候,会把say 长安城一起触发出来
所以
有没有什么办法,在捕获“你说道:长安城西”的时候,不会触发“你说道:长安城”这样的pattern?

老酒 2005-03-03 01:39

回复: 【求助】关于自动找怪的初级问题
 
你这样作出的只是一个aliases,执行的结果就是走到最后一个地方,中间遇到怪也不可能停下来,#stop只对path起作用,对aliases无用。

所以首先你需要学会使用zmud的路径功能,也就是paths,在trigger的左边你就能找到这个按钮。

点开后共有三个分页分别叫做actions,settings和directions,现在选择directions进行设置。系统应该已经有了一些默认设置的directions,最好删除他们,当然你也可以看看已经有了哪些然后选择添加没有的,只要你能保证不搞错。添加的方法如下:比如我们来设置north,那么先选择new,然后在右边填写这个new directions的内容,Directions code为这个方向的代码,我们用a,Reverse code表示这个方向相反的方向(对于north来说就是south了),我们填写b,command则是这个directions代码所代表的方向,我们填上缩写和全称n|north,最后的map directions可以不用管它,通常我们是用不到的。这样一个directions就设置好了,重复上边的过程,我们刚才反方向代码填写的是b,所以设置b代表south,当然,它的反方向代码就是a了。依此类推,把mud里能遇到的各种方向,什么su,nw,ed包括up、down还有enter和out都成对的设置进去,26个字母基本够用了。

现在你应该设置好directions了,回到第一页actions,点start recording,然后开始行走你需要记录的路径,走完之后点开paths点stop就结束记录,zmud会弹出一个对话框让你给这个路径起个名字,起好后一个路径就生成了,这个路径会用一串你刚才设置好的代码来表示。比如你设置的a代表north,b代表south,c代表west,d代表east。那么你走过的路径为n;w;s;w;n;e,则path记录下来的就是acbcad。

你也可以选择在zmud命令行输入#mark开始path的记录,用#path xxx来结束并且把记录好的path命名为xxx。这些都可以在脱机情况下进行。比如你刚才的高老庄的路径,#mark;#13 s;#6w;w;s;n;w;n;s;s;n;w;w;n;s;s;s;s;e;w;sw;ne;n;n;n;e;e;e;e;n;w;e;e;w;n;w;e;e;w;n;w;u;d;e;e;w;n;#path gao
把这串运行后,就会生成一个叫做gao的path,里边记录着整个高老庄的路径。

这个路径应该是从+开始的,那么当你下次接到高老庄的怪时,站在+然后输入#sl .gao则zmud就会调运记录好的高老庄的路径开始行走了,找到怪的时候触发#stop就会停下。

那么path里每一步之间的时间间隔是多少呢,这个你可以自己设定,在path第二页的settings里timeout value,1000=1秒,如果你设置500,则你调用path的时候zmud会每0.5秒走一步直到当前path结束或者由#stop停止。

如果网络状态很好,这样找怪准确度是非常高的,不过有的时候我们的网络不是很好,卡的厉害,有可能好几秒无法接收到信息,但是zmud不管这些,它只会按照你设置的timeout value不断的输出路径,可能你看到自己的怪的时候都多走出好多步了。所以我一直选择不用timeout value来输出path,也就是设置timeout value为0。但是这样path就不能自己输出下一步路径,需要#ok来触发行走下一步。你可以设置两个触发,分别是{这里唯一的出口是*}和{这里明显的出口是*}触发的命令就是#ok,这样的效果就是每走出一步后,只有出现走到的房间的出口描述时才会触发走下一步,针对网络状态不好的情况可以比较准确的找到怪。

不论你使用上述两种方法的哪种,当走过的时候可以使用#ba来按照经过的path远路后退,如果你想全自动的准确找到怪,就需要利用好#ba,至于怎么用,自己动动脑子,算我最后给你留下一道思考题。

老酒 2005-03-03 01:44

回复: 【求助】关于自动找怪的初级问题
 
怎么坛子里贴长点的东西就报错啊。

老酒 2005-03-03 05:03

回复: 【求助】关于自动找怪的初级问题
 
关于第二个问题,这种触发方法是比较古老的,存在安全隐患。

解决方法很简单,把say 长安城后边加个句号,变成say 长安城。 触发里的你说道:长安城也改成你说道:长安城。不就解决了

低手 2005-03-03 09:43

回复: 【求助】关于自动找怪的初级问题
 
为老酒鼓掌

applaud


所有时间均为格林尼治时间 +9, 现在的时间是 20:10.

Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue


Content Relevant URLs by vBSEO 3.6.1