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

文字MUD游戏论坛-天下泥潭群英会-水泊梁山 (http://www.aolai.org/forums/)
-   『 机器人制作及下载 』 (http://www.aolai.org/forums/f5/)
-   -   n年没来,挣声望,机器心得之二(kz quest机器) (http://www.aolai.org/forums/t14963/)

f_lilin 2009-01-23 01:48

n年没来,挣声望,机器心得之二(kz quest机器)
 
还是n年前写的,这个和上篇发的网站应该都关了,发出来给大家个参考。是kz 全自动quest机器,要用数据库,地图,zmud7.21,运行时的图片还是发不了,跟以前论坛好象不太一样了。
----------------------------------------
万能的版主啊,发了两篇心得,给加点声望吧!!!!!
---------------------------------------
主机down掉了啊,闲得无聊,发个quest机器思路吧,可能是思路有问题,昨天用了3个小时,把所有npc都放到了地图里,不知道这样是对还是错。
1.关键命令和函数
#LOOP range command 在range内,执行command
例如:#loop 1,5 {give letter to horse %1}

%pos(string1,string2) 判断string1是否在string2里
例如:
QuestNpc="张果老(Zhang guolao)"
RoomNpc="小毛驴(Xiao maolu)张果老(Zhang guolao)李白(Li bai)"
则%pos(@QuestNpc,@RoomNpc)返回yes

%roomnote([vNum], [s])返回或设置房间号为vNum的notes。
例如:#show %roomnote() 显示当前房间的notes。

%concat(string1,string2...)这个就不用说了吧,就是把string1和string2连起来。

2.思路
我现在的想法是遍历地图,把所遇到的Npc全部存在map的Notes里,送物时,用#loop循环搜索map里所有room的notes,例如附图,判断符合的room,把id存起来,但这样会有三个问题:
a.地图上的Npc有很多会走动,存在room里可能要送物时,Npc已经走了。
b.存的Npc的名字可能在送物时已经更新变名字了,比如tongtian的chen。
c.loop速度较慢,搜索一遍现在要估计要3秒左右,远比利用数据库慢。
想来想去,想了几个很笨的方法:
针对a,可以先去map存的room送,如果没有,靠map定出Npc所在的zone,再采用path的方式把这个zone找一遍,应该就可以解决了。
针对b,我只能在更新后,再把名字不同的Npc再放到room notes,保证这个地方的Npc名字,map里全都存在,如果没有源码,这个工作量就大了,不做了。
针对c,在room notes里存的npc名字,不能用task机器介绍过的mapquery来搜索,所以速度慢,我想了一个方法,就是把room的关键字段放到一个数据库里,比如roomid,roomname,roomnote,roomzone等存到数据库里,利用query来搜索,速度就快了。存数据库的方法,用#loop,把地图所有房间循环一遍,用#dbput把房间字段放进数据库,这个我就不做了,我就用map慢慢搜吧。

3.关键触发
triggers:千里眼对你说:你来得正好,我这儿刚好有一封信要送给(%x)~((*)~)。
commands:
QuestNpcName=%1 //取Npc名字
QuestNpcId=%2 //取Npcid
QuestNpc=%concat(@QuestNpcNmae,@QuestNpcId) //npc全名
#loop 1,2390 {#if (%pos( @QuestNpc, %roomnote( %i))) {QuestRoomId=%concat( @QuestRoomId, %i, "|")}} //就是在房间号1-2390里,把所有的room notes里包括QuestNpc全名的房间号全部存在QuestRoomId里,用"|"间隔。
QuestRoomLoop=1
#walk %item( @QuestRoomId, @QuestRoomLoop) //走到对应的第一个房间
give letter to @QuestNpcId //送物

其它的触发自己写吧,就是第一个房间id相同名字不同的,送给第%i个,要不就是没人了,就到第2,3,4,5,6个房间之类的。

4.总结
从我昨天当机前用的情况来看,全自动效率不是很高,比如tianzhu,找了n个房间npc都没在,再用path找,还不如我到第一个房间没有,手动来回走几步就行了。半自动效率还不不错的,固定的npc送得很快,搜索时间3秒,送物不到1秒。另外谁有还更好的思路贡献出来?改进一下更好了。
谢谢大家又看我啰嗦了这么多。


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

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

站长 fengyue


Content Relevant URLs by vBSEO 3.6.1