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

返回   文字MUD游戏论坛-天下泥潭群英会-水泊梁山 > 西游之旅 > 『 机器人制作及下载 』

『 机器人制作及下载 』 如何从开始简单的数组、触发,到复杂的路径、地图、数据库等等。如何考虑周全的制作全自动的机器人让它能够24小时不停的帮你练功。

发表新主题 回复
 
LinkBack 主题工具 主题评分 显示模式
旧 2009-01-23   #1
中级会员
级别:3 | 在线时长:30小时 | 升级还需:20小时级别:3 | 在线时长:30小时 | 升级还需:20小时级别:3 | 在线时长:30小时 | 升级还需:20小时
 
f_lilin 的头像
 
注册: 04年10月16日
来自: 中国
帖子: 60
声望力: 21
声望: 26 f_lilin 初领妙道
现金:522两梁山币
资产:2220两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
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秒。另外谁有还更好的思路贡献出来?改进一下更好了。
谢谢大家又看我啰嗦了这么多。
帅哥 f_lilin 当前离线  
回复时引用此帖

发表新主题 回复

添加到书签

主题工具
显示模式 对此主题评分
对此主题评分:

发帖规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用


相似的主题
主题 主题作者 论坛 回复 最后发表
北京站kz 水缸的水被下毒了 dianwena 『 梁山论剑 』 14 2004-09-09 15:53


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


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

站长 fengyue

Content Relevant URLs by vBSEO 3.6.1