首页
社区
课程
招聘
未解决 某网游查找 地图信息结构 出现的问题
发表于: 2024-2-3 19:26 2548

未解决 某网游查找 地图信息结构 出现的问题

2024-2-3 19:26
2548

首先我不是伸手党。。。。下面说下我的整个流程。。
我的思路:
游戏是某热血CQSF(复古版,无内置自动寻路函数)。
我是先找到移动CALL,参数有人物朝向,走跑标识,对象指针,目的地坐标等等。
在移动CALL内,根据返回值,筛选,找到了障碍物判断CALL。
传入人物附近的坐标,障碍物判断CALL能正确返回 是否通行的结果。
但是离人物很远的坐标,这个CALL 直接返回0。
这个障碍物CALL不能用,因为我要拿整个比QI地图的地图结构数据。。
然后我想障碍物判断CALL,内部肯定要获取地图信息,来判断该点是否通行。
我进CALL找地图信息数组结构,找是找到了,结果我发现,经测试我改变某点的地图信息值,可以让该点从通行 变为 不通行。
坑爹的来了,比如我的位置在A(255,332),它是可通行的,当人物离这个点近的时候,找到的地图信息数组结构里的确 正确显示了该点的信息(是否通行,该点的地面装饰),但是一旦你人物离这个点A(255,332)远了,地图信息结构里该点的信息直接被清0,这也解释了之前离人物很远的的那些坐标,被传入障碍物CALL,都是返回一个值。
你地图数组结构99%都是0,就离人物近的那一小块,能正确看到周围的地图信息,那我如何遍历?
没办法,继续找,找个极限距离,走过去,点A地图数组信息被清0,回来一步,点A数组信息被写入正确地图信息。然后对点A地图信息的位置下写入断,断下写入点A正确地图信息的执行流。断到的位置肯定拿到了点A的地图信息才写入的,往上找,看怎么拿到的地图信息,最终,我找到了一句指令:
call 004082D8 注释:->->KERNEL32.ReadFile
不知道怎么往下。。。
我该怎么去遍历那个比QI地图?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 1525
活跃值: (3422)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
传奇的地图结构是公开的
2024-2-3 21:30
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这种2d游戏它的地图很简单 首先是分为图片素材和地图数据。  图片素材就是画面看到的山 水 树木 岩石, 这些素材被保存在游戏的资源包里比如pak文件。地图数据是被加载到数组里的数据,被单独保存在.map文件里。
2024-2-4 03:01
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不记得这个数组是一维的还是二维的了 如果是二维的那么 它就是根据人物的坐标x y去引用二维数组里的元素,如果是一维数组它会将人物的X Y坐标进行make(x,y)换算成一维数组索引 然后去到数组里引用元素。
2024-2-4 03:05
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
数组里的元素可能是一个结构体 也可能是一个结构指针
比如:
mapinfo = Map[x,y]
mapinfo.objList //当前地图位置有那些对象 例如人物和物品 或者怪物
mapinfo.collision //如果值等于0x8000 不可通行   
mapinfo.lighting //是否有灯光
mapinfo.xxxxxx
mapinfo.xxxxxx
mapinfo.xxxxxx

我上面这个是举个粒子 希望能帮助到你
2024-2-4 03:14
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你需要自己将map加载到自己的程序 这样就可以解析全部的地图数据,游戏一般是做了优化处理的 比如离的远的物体游戏不会加载 等你走近了游戏引擎才会加载,这个很多不懂开发 喜欢玩游戏的人都知道。
2024-2-4 03:18
0
雪    币: 1282
活跃值: (4570)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
程序内部一定有判断距离加载地图的代码,读入地图文件的地方下断追一下,然后改掉距离判断试试能不能加载全图
2024-2-4 05:31
0
雪    币: 698
活跃值: (4564)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
https://bbs.kanxue.com/thread-215042.htm
自己解析map用a星
2024-2-4 14:37
1
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
tmflxw 传奇的地图结构是公开的
@tmflxw   我百度不到传奇地图数据的信息。。。我其实就是想生成地图里 坐标点是否为障碍物 的数组。。
2024-2-4 17:31
0
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
木志本柯 你需要自己将map加载到自己的程序 这样就可以解析全部的地图数据,游戏一般是做了优化处理的 比如离的远的物体游戏不会加载 等你走近了游戏引擎才会加载,这个很多不懂开发 喜欢玩游戏的人都知道。
@木志本柯  游戏里我好像就是某个点信息里的字节改成了8000,该点变成了不可通行,好像是用一个二进制位来标识是否通行的。。。我没有能力 将MAP加载到自己的程序。你的意思是说,用一些WINDOWS API 打开那个MAP类型的文件,查看信息吗?
2024-2-4 17:37
0
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
R0g 程序内部一定有判断距离加载地图的代码,读入地图文件的地方下断追一下,然后改掉距离判断试试能不能加载全图
@R0g  进去都不是常用的的指令了,我能力有限。但可以试试。
2024-2-4 17:43
0
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
叶惠 https://bbs.kanxue.com/thread-215042.htm 自己解析map用a星
@叶惠  对。我想生成 地图障碍物 的数组,完成寻路功能。你给的那个贴子是关于 什么LUA接口制作脚本的。。。不懂那个。。。
2024-2-4 17:44
0
雪    币: 4747
活跃值: (4306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
WYYZCAYQ @木志本柯 游戏里我好像就是某个点信息里的字节改成了8000,该点变成了不可通行,好像是用一个二进制位来标识是否通行的。。。我没有能力 将MAP加载到自己的程序。你的意思是说,用一些WINDOWS ...
外挂这种事你去找易语言的资料 易语言最多了这方面
2024-2-4 18:19
0
雪    币: 40
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
特别好,学习一下
2024-2-4 19:02
0
雪    币: 6172
活跃值: (4952)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
15
叶惠 https://bbs.kanxue.com/thread-215042.htm 自己解析map用a星
抓住大佬。
2024-2-4 19:04
0
游客
登录 | 注册 方可回帖
返回
//