用户登录  | 
首 页技术文章软件发布广告价格
当前位置:传奇游戏服务端下载站传奇站长论坛资源网站程序技术文章文章资讯传奇架设教程传奇架设技术

详细解读私服文件(3)图象数据存储方式

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-10-03 14:55:22
首先呢,我打开了一个WIL文件看了一下,感觉没有头绪。然后我打开了一个WIX文件,在两个文件的文件头,我发现了这样的文字。#ILIB v1.0-WEMADE Entertainment inc(这个是WIL文件头)#INDX v1.0-WEMADE Entertainment inc(这个是WIX文件头)。从这个上面我们可以看出,WIL就是LIB的意思,也就是库的意思。WIX就是INDEX的文件,也就是索引的意思。这样,我们就初步知道了,数据是存放在WIL中的,数据索引是存放在WIX中的。

如果你还不知道索引呢(什么??你不知道索引。。晕4),我就给你讲一下哈。索引就是类似地址簿的东西,你从索引中查找数据所在的地址(这个地址不是内存地址,而是文件里面的地址)。那么通过这个地址,你就可以在库中找到数据了。

好了,现在我们知道了数据索引存放的地方,那么,我们就开始找到这些索引吧。
我们用HEDIT打开两个WIX文件进行比较,我们发现在OFS=36之前的数据都是固定的,那么,我门就看后面的数据。我找了一个比较小的WIX文件。然后从OFS=36的地方选择。这里用的是DNITEMS的WIX。我发现,选择的字节数是1656,而我们清楚,一个文件位置一般是用4个字节存放,也就是说,这里总共可能有的图象数是1656/4 = 414个,用计算器算出他的16进制是0x19E,这时,我们就在开头找16进制的 9E 01,我们发现,在OFS= 44 的地方有一个 9B 01 的很接近 9E 01 那么我们就知道了,后面的信息不都是文件地址。因为还要记录图象的个数啊。所以,我门从数据的尾部开始选择,看着右下角的数字到了 0x19b时,我们停下,发现正好停在 0X44前面。哈,我们知道了,这些数据都是文件位置,这个9B 01就是图象个数。那么,第一个文件位置是干什么用的呢,我打开了两个WIX文件,发现在相同的位置,就是OFS = 44后面的文件位置信息开始的地方,数据总是38 04 00 00,哦,明白了,这个就是图象数据的开始位置。也就是第一副图象的开始位置。

那么我们把这个开始位置转换一下, 0X438 = 1080,呵呵,也就是说,在WIL中的前面1080字节不是图象数据。那么他们是什么呢?

根据经验,我们知道,BMP文件里面的调色板一个就是一个4字节的DWORD值,那么256个位置就是1024字节,哈,很接近了啊。然后我比较了两个WIL文件,发现,前44字节是很相似的。所以我们减去44字节就是1036字节。那么剩下的12字节是什么呢?呵呵,我也不清楚,不用管他了。我们只要图象。

在WIL的0X438的位置上,我们发现了14 00 0D 00的数字。我猜,图象肯定超不过65535大小的,所以我猜想这是两个USHORT的图象大小的数据。

于是我把他们相乘,然后我又找了0X438后面的一个文件位置,然后相减,得到了数据的长度。减去图象大小的数据,啊?竟然多出来4个字节。呵呵,我现在也搞不清楚他们的用处。恩,我就跳过去了,因为我想他们一般和图象没有什么关系。

然后我就把图象数据复制了,我又打开了画笔,把图象属性设定成0X14*0X0D,然后存成256色的位图。接着用HEDIT打开位图,在0X1078的位置把数据粘贴到这个位置。然后存盘,退出。然后用画笔打开这个图象文件。哈,看到图象了。看样子象一个符。不过颜色不对。恩,我进入了。用PAUSE截了一张图,然后用HEDIT打开,在54的位置选择了1024字节的东西。然后复制,再打开那个图象文件,在54的地方粘贴,然后存盘,退出,用画笔打开。哈。是一本书。

啊,终于知道了。我从上面的动作中得到了下面的结论。

1 图象位置索引在*.wix中
2 图象信息在*.wil中。
3 图象索引从OFFSET 0X2C开始,有一个DWORD的图象总数
4 然后是DWORD的OFFSET值,第一副图象的OFFSET值固定为0X438,= (1080)10
5 那么,就是说在WIL中,开头有1080 字节的空余。
6 在WIL中,文件开头的44字节都是相同的。所以,就是说有另外的1036字节是另有用途。
7 (这个没有解决)1036中有1024是一个256色的调色板,那么,剩下的12字节是干什么用的呢?
8 在下,有一个截图功能保存的图象里面的调色板就是是图象数据的调色板。

那么,剩下的工作就是写代码来抠图象了。
这方面的问题我就不再阐述了,因为知道了图象存储的数据格式,程序就很好写了。
恩,现在我也要写程序了。看看觉得自己写了好多啊。不过放心,这个东西没有版权,随便用拉。

还有一点补充:
我没有说清楚,这些图象是完全用8BIT位图方式存放在文件里面的。没有经过任何压缩或者是编码。


最后看看地图格式
玩最讨厌的就是走路,特别是那些洞,晕哦。
后来听说传奇里面有秘密入口,今天看了一下的地图格式。其实很简单啊。
地图是TILE方式的,总共分3层。

第一层是地表结构。就是地面贴图。
第二层好象是竖起来的东西。就是类似墙一样的东西。
第三层是一种障碍的东西好象。

他的地图开始就是两个USHORT的地图宽度和高度。
然后是在OFS=52开始是真正的地图信息。
好象是每个位置存放3个4字节的数据。
我们用一个结构来表示

struct t_mirmap
{
DWORD layer[3];
}; dedecms.com

t_mirmap map[w][h];

然后把数据读到map里面,就得到地图数据了。
可以OUT一下试试,因为都是DWORD的,可以当作位图来显示的。我想在里面,他也是用处理BITMAP的方式来处理的吧。
不过我显示后发现,地图是反的,要把X,Y互相调换才能得到和里面一样的地图形式。
不过出入口等事件触发的地方好象在第二层显示的,在位图上,房子出口的地方是兰色的。
这样,应该可以发现所有的暗门吧。我发现D7XX的地图都是石墓的地图。
M什么的好象有个未知暗殿的图,右下还有类似楼梯的东西。是什么极品屋之类的吧。

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
传奇资源网提供最新传奇开区一条龙版本下载,本站声明:只更新最新最好的传奇服务端分享给大家。