• 116阅读
  • 0回复

《传奇永恒》自动寻路 [复制链接]

上一主题 下一主题
离线任鸟飞
 

微信公众号:任鸟飞逆向
没有自动寻路已经逐渐成为当今游戏的发展趋势,"传奇风","暗黑风"的游戏越来越多,寻路也成了一些萌新的外挂作者头疼的问题。一提到这样的游戏,总有人说用a*即可,可是真正能熟练运用这一算法又有多少呢。
拿《传奇永恒》这款游戏来说,继承了原有的MIR2的大部分风格,想要寻路似乎麻烦了许多。可是当我们熟悉游戏之后会发现,其实这个游戏给玩家的寻路提供了便利的条件,在玩家点击地图的时候,我们的脚下会出现一排小箭头,指向目的地。既然有路径显示,那内存中自然会有存放,所以我们想办法将这些小箭头遍历出来。
这些箭头能给我们提供的信息很少,如果用CE来扫描,似乎没有什么可以入手的。唯一可以入手的只有箭头的数量。我们扫描试试看,因为无法准确的判断数量,所以用未知初始值扫描,增加或减少来过滤(如图)
最终我们得到一个绿色的地址,里面存放的数值和我们的箭头数量大致吻合(如图)
在OD中的数据窗口跟随地址,我们甚至不用下断点就可以很容易的在地址附近找到我们想要的遍历地址(如图)

回城到这个地址内部,发现这是一个结构体数组,而里面存放的恰好是我们寻路需要的坐标序列(如图)
而当我们每走到下一个箭头处的时候,经过坐标结构下总会有标志被改写,这样也防止我们走回头路(如图)
这种寻路的方式可以让我们省去很多的时间,只需增加一些绕过玩家和NPC的逻辑代码就可以达到a*等复杂算法的效果。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个