|
楼主 |
发表于 2015-5-13 23:43:16
|
显示全部楼层
回复 3# cmud
抱歉,我可能没说明白
整体框架我已经搭建起来了,至少走路这一部分。
实际上,整个地图我基本已经画完了,我目前收录了2758个节点,比如第2758节点内容如下:
[2758] = {
area = "神龙岛",
descriptions = {
[1] = "此处是赤龙门的卧室,屋中的布置很简单,只有几只大床靠墙放着,",
[2] = "供本门教众休息之用。",
},
exits = {
west = {
cmd = "w",
gto = 2756,
},
},
location = {
[1] = "",
[2] = "",
[3] = "赤龙门议事厅-----卧室",
[4] = "",
[5] = "",
},
name = "卧室",
},
目前已经做到了点对点直达,我需要做的是处理一些特殊路径的细节问题(其实也基本处理完了,去神龙岛只是比较复杂而已)
我单独有“跑路”模块,之后还要写“快速行走”模块和“遍历”模块
“跑路”模块:点对点直达,中间不做任何其他地方。实际上我是点到多个点的直达,自动行走到多个点中最近的一个点。这样利于去吃饭、喝水、买武器、取钱、做任务。因为可以自动找到最近的一个。
“快速行走”模块:点对多个点逐个直达。核心调用“跑路”模块,对多个点逐个直达,即从S地,向A、B、C、D......等地点以最短距离挨个直达,指令不停,不等反馈,并可以在每个地点的指令中加上其他指令。相当于
“跑路”{A、B、C、D};送信
“跑路”{B、C、D};送信
“跑路”{C、D};送信
“跑路”{D};送信
(假设A、B、C、D逐个越来越远,需要加的指令是送信)
以上整个指令不等反馈一气呵成的输入,这样方便在区域内找人、送信、找东西等
如果其他指令(比如送信)没有成功(比如如果目标busy,则送信不成功,我跑过了),同时会记录目标NPC(或者物品)的位置将会被记录,这样我一口气跑完,如果信没送到(或者人没杀到等等),那么可以直接知道目标当前位置,然后直接点对点的直接找到目标所在地,然后去做其他操作。
“遍历”模块:跟“快速行走”模块类似,但是每走一步,都判断一下,就是传统的遍历了。速度慢,但是有很多场合这么做更适合,比如有些任务NPC只要你从他身边走过却没理他,就算任务失败。
说远了,不过我目前已经早就到了开始研究细节的情况了。
机器人的总体框架还没写,我目前只写了“跑路”模块,包括画地图,而特殊路径处理,是属于“地图”中的一部分,或者说是“跑路”模块的一部分。 |
|