首页
社区
课程
招聘
未解决 解析某游戏地图时出现的问题
发表于: 2024-2-7 15:45 1969

未解决 解析某游戏地图时出现的问题

2024-2-7 15:45
1969

两个问题,如下:(希望我描述的清楚。。)
一,CHUANQI MAP文件的格式是怎样的?
网上资料如下:MAP文件头52字节包含地图宽高等数据,头部52个字节后面的数据都是坐标点的地图信息数据,一个坐标点的地图信息占12字节。
我用ReadFile函数 读MAP文件的头部4个字节,是02BC02BC,对应地图的宽高(700X700),说明MAP文件确实能读出来。。。。
我从游戏内存找到的坐标地图数据里,记录了坐标(264,324)地图信息关键字节94EB(涉及是否通行),
我只想拿出MAP文件涉及坐标通行的数据。思路就是:
找到MAP文件里 (264,324) 对应的地图信息,比对94EB的位置,确认我要拿的数据的偏移。。。。
可是有个问题,他保存坐标的顺序不知道。网上有说,先存0列0行 再0列1行(按列存),也有说先存0列0行 再存1列0行(按行存),所以不知道MAP文件具体怎样存的。
我假定了4种情况:
左上角起始坐标为(0,0)且按行存;//MAP文件先存0行的坐标点信息
左上角起始坐标为(0,0)且按列存;//MAP文件先存0列的坐标点信息
左上角起始坐标为(1,1)且按行存;
左上角起始坐标为(1,1)且按列存;、
均被推翻。。。。。。。。。。。。。。
所以我格式哪里弄错了?有没有弄过的朋友看一下。据之前的论坛朋友说,CHUANQI地图MAP格式是公开的,可是我网上找的资料 测了下不行。。。

二,障碍物判断CALL取了下面2个位置的数据,拿去判断是否通行。取下述+28位置处的通行信息来判断通行,不是已经够了吗?为什么还要取2个位置的数据判断是否通行?
下面是我逆到的内存里地图数组的结构信息。
对象指针+(横坐标-[对象指针+0022A358])X34FX2+ ( 纵坐标-[对象指针+0022A35C] )X7X2+2C 存该点 地形信息 的地址(改变后,贴图会变)
对象指针+(横坐标-[对象指针+0022A358])X34FX2+(纵坐标-[对象指针+0022A35C])X7X2+28 存该点 障碍通行信息的地址(改变后,可通行变为不可通行)
为了描述清楚,有点拖沓 ,抱歉。。。。
有弄过的朋友帮助一下吗?


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

最后于 2024-2-7 15:49 被WYYZCAYQ编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我弄的“坐标点与 其在MAP文件中的偏移”的对应关系,如下(不知道是否有问题):
以起始坐标(0,0)且MAP文件先存0列的点(按列存) 为前提。
MAP文件首部+52
0列信息在MAP文件中的位置  MAP文件首部+52+0x (12xHeight)
1列                                        MAP文件首部+52+1x (12xHeight)
2列                                        MAP文件首部+52+2x (12xHeight)
....
J列                                         MAP文件首部+52+Jx(12xHeight)

定位J列 I行点在MAP文件中的位置
J列0行点信息在MAP文件中的位置  MAP文件首部+52+J x (12xHeight)+0 x12
J列1行                                           MAP文件首部+52+J x (12*Height)+1 x12
J列2行                                           MAP文件首部+52+J x (12xHeight)+2 x12
...
J列I行                                            MAP文件首部+52+J x (12xHeight)+I x12
2024-2-7 16:16
0
雪    币: 224
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
已经解决了。。。谢谢大家!
结论:是按列存储的。也就是先保存0列的坐标点地图信息,再1列。。。左上角坐标是(0,0)。。。
2024-2-7 19:00
0
游客
登录 | 注册 方可回帖
返回
//