找回密码
 注册/Sign up
搜索
查看: 4033|回复: 1

[教程] 客戶端的地圖文件探索

[复制链接]

发表于 2019-9-9 19:21:53 | 显示全部楼层 |阅读模式
本帖最后由 fantastic 于 2019-9-9 19:33 编辑

最近一個骨灰級的老玩家向我提問:
網上流傳一個工具能夠分析當前迷宮的出入口資訊是怎麼做到的
本來沒想通, 後來這個玩家給我發了個圖是這個工具的樣貌,
我馬上想到查看客戶端的地圖文件是怎麼保存的, 我們將在下面帶大家解開這個謎題...

20170518_b293fe9901fa12e7b2f6HkMIbeoFJUS5.jpg



下面我們將進入一個迷宮開始分析:




測試目標地圖: 31*48
出口水晶(7,14)---> 文件中的物理地址6854D 數據為03 測試對象為: 黃色傳送水晶
NPC及寶箱數據尚待確認 用地面資料:2來找也可以

文件大小(8948-20(文件首))/3 = 2976
8948-2976 = 5972(求得地面資料:3 的起始地址)
6854-5972 = 882 //

(1,1) (2,1).....................(31,1) -->31組數據 (往東走1步x+1 往西走1步x-1)
(1,2) (2,2).....................|
(1,3) (2,3).....................|
(1,14),(2,14)...(7,14)
// 2*31*(7-1)+14=386*2=上面的882 來到(7,14)


模擬搜索數據, 並計算樓梯座標:
第一步: 獲取當前地圖編號 獲取當前程序路徑 獲取當前程序路徑的Map\1\{地圖編號}.dat文件 並獲取迷宮W及H值 上例為W:=31; H:=48;

第二步: 獲取地圖文件大小8948後扣除常量20(文件首大小)再除以3(分割成三等分)得2976
第三步: 文件大小減去我們求得的2976 得5972為地面資料:3的起始點
第四步: 從文件5972至文件尾搜尋 如果發現03獲取該位置並到第五步
第五步: (獲取03的位置)6855-5972=882 // (882/2) mod 62 =14 (Y座標), (386-14)/62=6 6+1=7 (X座標)

#註 對於4.0以後的地圖 這個標記是0A 1C



20170518_b3811246344676974a7ePwLrfXhFJ3Wy.jpg

20170519_eafc46de1734bc0035837Prs3Ww82WUS.jpg

20170519_c53b2c1e712f92d9d12ezL1n17HuH52U.jpg



carbon.png


评分

参与人数 1金币 +2 收起 理由
Zack + 2

查看全部评分

 楼主| 发表于 2019-9-9 19:28:26 | 显示全部楼层
實用代碼
carbon (1).png
您需要登录后才可以回帖 登录 | 注册/Sign up

本版积分规则

手机版|cgmsv引擎论坛

GMT+8, 2026-6-21 10:56 , Processed in 0.032786 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表