找回密码
 点一下
查看: 1175|回复: 6

请问如何得到一个地图的checksum值呢?

[复制链接]
发表于 2009-1-9 11:39:33 | 显示全部楼层 |阅读模式
如题。。。

用什么方法得到呢?
发表于 2009-1-9 11:48:31 | 显示全部楼层
随便开一局,把replay保存下来,replay里就有地图的checksum,至于replay里的checksum怎么得到,请看
http://www.islga.org/bbs/read.php?tid=16007
回复

使用道具 举报

 楼主| 发表于 2009-1-9 11:51:53 | 显示全部楼层
我开始是通过rep来得到checksum的,可发现同一个地图上的多个rep,得出的checksum值完全不同,很纳闷。。。

下面是我用来获取rep头部分的php代码,看下有什么错误吗?

<?php

$filename = "w3g1.w3g";//要解析的文件
$handle = fopen($filename, "rb");//打开文件
$data = fread($handle, filesize ($filename));//以二进制读取文件


$th = @unpack('a28intro/Vheader_size/Vc_size/Vheader_v/Vu_size/Vblocks/a4ident/vminor_v/vmajor_v/vbuild_v/vflags/Vlength/Vchecksum', $data);

//解压数据包 用法 unpack ( string format, string data )


//print_r($data); 显示二进制读取的文件
//echo "<br />上面是未解压的数据<br />";
print_r($th);

fclose($handle);
?>
回复

使用道具 举报

发表于 2009-1-9 12:03:28 | 显示全部楼层
我完全不懂php哦,每次得到不同可能是你弄错了?

checksum应该是在 4.4 [GameSettings]里。你这个是读了head里的checksum?
回复

使用道具 举报

 楼主| 发表于 2009-1-9 12:06:58 | 显示全部楼层
引用第3楼actboy168于2009-01-09 12:03发表的  :
我完全不懂php哦,每次得到不同可能是你弄错了?

checksum应该是在 4.4 [GameSettings]里。你这个是读了head里的checksum?


是噢。。。要读取   0x0009 | 4Byte | 地图效验  //TODO: 算法呢?      这里啊?

那我试试-  -


难道就没有工具直接可以得出一个文件的checksum值?
回复

使用道具 举报

发表于 2009-1-9 12:23:22 | 显示全部楼层
好像没有,不过war3share的源码里有这个算法

http://www.islga.org/bbs/read.php?tid=23190
回复

使用道具 举报

 楼主| 发表于 2009-1-9 13:49:58 | 显示全部楼层
汗...

自己写那个php只能解出header部分的数据,game部分不知道该怎么解...

另外,那个war3share源代码里,那么多文件...不知道那个是计算checksum的...


继续求助...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-25 06:50 , Processed in 0.035789 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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