注册 | 登录

游侠NETSHOW论坛





查看: 13918|回复: 25
打印 上一主题 下一主题

[数据研究] 三国志5地图解密和修改 [复制链接]

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2013-6-17 00:12:03 |只看该作者 |倒序浏览
本帖最后由 san5布丁98 于 2013-6-17 00:50 编辑

三国志5与地图相关的数据文件结构目前已经基本搞清楚,就差有人做一个战场地图编辑器了。

有意制作三国志5战场地图编辑器的请举个手,或发个消息给我。

已有 1 人评分金钱 荣誉 收起 理由
快剑夏候恩 + 120 + 2 感谢分享~

总评分: 金钱 + 120  荣誉 + 2   查看全部评分

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
沙发
发表于 2013-6-17 00:12:48 |只看该作者
本帖内容来自网络收集和本人研究所得,未经充分测试,如有差错或不完整的地方,欢迎修正和补充。

以下内容主要以DOS普通版为例,其他版本除有特别说明外也可以进行类似处理。

基本知识:
三国志5一共有47座城市,编号如下,
01=襄平,02=北平,03=代县,04=晋阳,05=南皮,06=平原,07=邺,  08=北海,
09=濮阳,0A=陈留,0B=洛阳,0C=弘农,0D=长安,0E=安定,0F=天水,10=西凉,
11=下邳,12=徐州,13=许昌,14=谯,  15=汝南,16=宛,  17=新野,18=襄阳,
19=上庸,1A=江夏,1B=江陵,1C=武陵,1D=长沙,1E=桂阳,1F=零陵,20=寿春,
21=建业,22=吴,  23=会稽,24=庐江,25=豫章,26=汉中,27=下弁,28=梓潼,
29=成都,2A=永安,2B=江州,2C=建宁,2D=云南,2E=庐陵,2F=鄱阳,FF=无效。

每座城市在主地图(战略界面)和小地图(情报界面)上的特定位置都有对应按钮,按钮位置的坐标以左上角为(0,0)。
每座城市都有一幅战场地图,按从上到下从左到右的顺序由25*24个32*32像素的格子组成,每个格子都有一个战术地形属性,比如平地,山地等。

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
板凳
发表于 2013-6-17 00:14:59 |只看该作者
本帖最后由 san5布丁98 于 2013-6-17 00:44 编辑

三国志5部分数据文件结构和用途

mainmap.s5:
存放主地图(800*592*16色),可由RPGViewer导出和导入。游戏中在4个季节会使用4种不同的调色板(即16色中的8色是固定的,另8色会随季节变化)。

WIN版的主地图存放在map256.s5而非mainmap.s5中,该文件目前尚不被RPGViewer支持。

fmap.s5:
存放小地图(360*360*16色),可由RPGViewer导出和导入。该图像实际只使用了16色中的8色(不随季节调色板变化的固定8色)。

main.exe:
游戏的主执行程序,其中的某个数据区存放有各个城市的一些基础信息,共有47个数据块,每块长度32字节,部分内容如下,
偏移   长度
+0x00  5字节    名称字符串
+0x0C  1字节*6  相邻城市的代号(1~47,0xFF表示无效),最多6个邻城
+0x14  4字节    在小地图上的按钮位置坐标X,Y   
+0x18  4字节    在主地图上的按钮位置坐标X,Y

WIN版的主执行程序文件名一般不是main.exe,但其中也包含该数据区内容。

sndata.s5:
游戏的剧本文件,包含剧本的数目随版本而不同(比如DOS普通版有7个剧本,DOS加强版有12个剧本等),每个剧本数据块的长度一般也都不同。

在每个剧本数据块中,都包含有与上述main.exe中结构类似的32字节*47的数据块,用于存放该剧本下各个城市的一些基础信息。

hexmap.s5:
经LS11压缩,解压后的数据区由7200字节*47+600字节*47+600字节*47三部分共47*3个数据块组成。

第一部分中每个7200字节的数据块都是一座城市的战场拼图,拼图由从下到上三层组成(在游戏里会叠加显示),每层有50*48个字节,每个字节分别指定战场拼图上该层的对应小格所使用的贴图代号。一座城市的战场拼图按从上到下从左到右的顺序被划分成25*2*24*2个小格,每个小格内都使用三层16*16像素的贴图。战场拼图上的贴图代号,0xFF表示全黑,第1层(最下层,平地山地水面等)代号范围0~137,第2层(沼泽小岛及平地山地的边缘部分)代号范围0~184,第3层(道路树林城池关隘等)代号范围0~164,所有贴图内容都存放在hexgrp.s5中。在游戏里叠加显示时,上层贴图中的黑色部分为透明效果,会透出下层的内容。游戏中相同贴图在不同地区或季节的战场上,因采用的调色板不同而有不同的显示效果(共有6种调色板),而小雨或大雨的效果也会另行叠加显示。

第二部分中每个600字节的数据块都是一座城市的战场出阵位置图,每个字节分别指定战场出阵位置图上对应格子的区域代号。一座城市的战场出阵位置图按从上到下从左到右的顺序被划分成25*24个格子。战场出阵位置图上的区域代号与邻城代号相同的,该城市方向过来的部队即可在此位置出阵,区域代号0~5对应0~5号邻城,6~10用于本城出阵。

第三部分中每个600字节的数据块都是一座城市的战场战术地形图,每个字节分别指定战场战术地形图上对应格子的地形代号。一座城市的战场战术地形图按从上到下从左到右的顺序被划分成25*24个格子。战场地形代号数值解释:0=禁入(高山),1=平地,2=道路,3=林地,4=山地,5=水面,6=沼泽,7=城池,8=关隘。

hexgrp.s5:
经LS11压缩,解压后的数据区由128字节*488共1个数据块组成。

每个128字节的数据块都存放一个16*16像素的贴图(1bit*16*16*4个位面)。而488个贴图分为138+185+165三组,每组对应于战场拼图中的一层,游戏中会根据hexmap.s5战场拼图中每个小格指定的贴图代号读取hexgrp.s5中的相应贴图用于显示。




使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
地板
发表于 2013-6-17 00:20:35 |只看该作者
本帖最后由 san5布丁98 于 2013-6-17 20:35 编辑

城市名称和坐标位置的修改:

比如要把某座城市改名并移动到不同的地理位置,
1.用RPGViewer导出mainmap.s5和fmap.s5,在PhotoShop中对导出的图片进行所需要的修改(注意要限制调色板为游戏使用的16色调色板),然后将图片用RPGViewer导入。在修改时,注意记录城市位置的坐标变化(比如向哪个方向移动了多少个像素),以便后续对数据文件进行相应的修改。

2.在main.exe(游戏的主执行程序)中搜索(1d013900f0025800)这个16进制字符串,该字符串的内容是1号城市襄平的小地图按钮坐标和主地图按钮坐标(假设襄平的坐标数据没有被改过的话),该位置即上述城市基础信息32字节*47数据块中第1个数据块的+0x14偏移位置,据此可以推算出其他数据所在的位置,从而进行相应修改。

比如,把3号城市代县的按钮在主地图坐标移动到(480,40)后,就需要把上述搜索到的位置+32字节*2+4字节,然后把该处内容改为e0012800,其中0x01e0=480,0x0028=40,注意16进制数在文件中存放是低字节在前,高字节在后的。同样可以推算,3号城市的城市名称字符串在上述搜索到的位置+32字节*2-20字节处,如果需要也可以进行修改。

3.在sndata.s5中同样搜索(1d013900f0025800),过程与第2步类似,向后定位到需要修改的数据位置然后写入。DOS版可以在sndata.s5中找到7处,将这个过程重复7次以实现对所有7个剧本的修改。

可见,这一修改包括图片修改和城市坐标数据修改,可能涉及mainmap.s5,fmap.s5,main.exe,sndata.s5四个文件。

城市连通关系的修改:

比如要把两座不相邻的城市打通,
1.用RPGViewer导出mainmap.s5和fmap.s5,在PhotoShop中对导出的图片进行所需要的修改(注意要限制调色板为游戏使用的16色调色板),然后将图片用RPGViewer导入。

2.在main.exe(游戏的主执行程序)中搜索(1d013900f0025800)这个16进制字符串,该字符串的内容是1号城市襄平的小地图按钮坐标和主地图按钮坐标(假设襄平的坐标数据没有被改过的话),该位置即上述城市基础信息32字节*47数据块中第1个数据块的+0x14偏移位置,据此可以推算出其他数据所在的位置,从而进行相应修改。

比如,要把2号城市北平和6号城市平原打通,就需要把上述搜索到的位置+32字节*1-8字节,然后把该处内容由010305ffffff改为01030506ffff,即添加6号城市成为2号城市的第4座邻城(最多6座邻城)。同样地,也需要在6号城市的邻城数据区把2号城市添加进去。

3.在sndata.s5中同样搜索(1d013900f0025800),过程与第2步类似,向后定位到需要修改的数据位置然后写入。DOS版可以在sndata.s5中找到7处,将这个过程重复7次以实现对所有7个剧本的修改。

4.将hexmap.s5用LS11工具解压,在解压后的文件中找到第二部分战场出阵位置图中对应于2号城市的数据块,在合适的位置上填上03(表示是提供给第4座邻城即6号城市的出阵位置),同样地,也需要在6号城市的战场出阵位置图中,为2号城市设置出阵位置。完成后用LS11工具把文件压缩回hexmap.s5。

可见,这一修改包括图片修改,互相设置邻城关系和互相开辟出阵位置,可能涉及mainmap.s5,fmap.s5,main.exe,sndata.s5,hexmap.s5五个文件。

城市战场地图的修改:

主要是针对hexmap.s5进行编辑,设置战场的战术地形,出阵位置和战场拼图。如果需要替换掉部分光荣公司原版贴图的话还需要修改hexgrp.s5。

这个任务最好在地图编辑器帮助下完成,地图编辑器的主要功能应该包括:
从hexmap.s5中导出某个城市的战场地图文件(1个战术地形图+1个出阵位置图+3层战场拼图)
载入某个城市的战场地图文件到编辑器
选择编辑区域中显示哪几个图层的叠加效果,比如全空,1,2,1+2,3,1+2+3等,以及是否要叠加显示战术地形名称和出阵位置代号
保存当前编辑区域的显示内容到BMP文件
选中战场地图上的格子,设置该格子内的战术地形代号,出阵位置代号,以及设置该格子内的三层贴图(点击选取hexgrp.s5中提供的该层贴图)
保存编辑内容到战场地图文件(5个文件可以分别保存)
把某个城市的战场地图文件导入到hexmap.s5中

其中的战场地图文件(每座城市5个文件),可用于玩家之间的交流,以便对某一座城市的战场地图做进一步修改或导入hexmap.s5替换原版的战场地图。也可以很容易地
交换两座城市的战场拼图和战场地形图。






使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
5#
发表于 2013-6-17 00:26:27 |只看该作者




三国志5主地图
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
6#
发表于 2013-6-17 01:01:36 |只看该作者



三国志5小地图
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
7#
发表于 2013-6-17 01:04:36 |只看该作者




三国志5某城市战场地图
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
59
精华
0
积分
30
金钱
1722
荣誉
0
人气
0
评议
0
8#
发表于 2013-6-17 01:32:22 |只看该作者
沙发啊!布丁哥又出新地图了。期待发布完整版啊

使用道具 举报

帖子
5065
精华
1
积分
2835
金钱
46903
荣誉
9
人气
124
评议
0
9#
发表于 2013-6-17 03:00:00 |只看该作者
战场地图怎么导出的啊,不知道全部导出能不能拼成一张三11那样的大地图啊。

使用道具 举报

帖子
2894
精华
0
积分
1482
金钱
9300
荣誉
3
人气
53
评议
0
10#
发表于 2013-6-17 04:32:34 来自手机 |只看该作者
Lz大神经能不能发一套城市地图并且标注上是哪个城市?急需这个!
另感谢lz的贡献期待三国5dos版的mod!

使用道具 举报

帖子
331
精华
0
积分
166
金钱
3818
荣誉
0
人气
1
评议
0
11#
发表于 2013-6-17 05:46:44 |只看该作者
围观布丁大神!
三国5布丁98可真是让我玩的很high~
此帖必火,火钳刘明!

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
12#
发表于 2013-6-17 20:17:55 |只看该作者
零-0 发表于 2013-6-17 03:00
战场地图怎么导出的啊,不知道全部导出能不能拼成一张三11那样的大地图啊。 ...

等有了战场地图编辑器,就可以载入原版的城市战场地图文件到编辑器,然后保存为BMP文件即可。

有人已经整理过这个资料(可能是用游戏里截图然后PS处理的?),包括47个城市战场地图的图片,有些城市之间似乎可以拼接上。

不过,我认为能不能拼接上无所谓,理论上拼接不上才是正常的(考虑战术性,三国志5的战场地图在方圆100公里比较合适)。

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
13#
发表于 2013-6-17 20:22:33 |只看该作者
yorkgrass 发表于 2013-6-17 04:32
Lz大神经能不能发一套城市地图并且标注上是哪个城市?急需这个!
另感谢lz的贡献期待三国5dos版的mod! ...

百度“三国志5”贴吧里有人整理过,贴子叫"一个三国志5迷的贡献",因为47张图片体积比较大,就不转过来了,自己去找。

我会长期致力于三国志5的新版MOD,计划加入的内容很多,不会一下子完成,经常关注一下吧。

使用道具 举报

帖子
26
精华
0
积分
33
金钱
323
荣誉
2
人气
0
评议
0
14#
发表于 2013-6-17 20:27:18 |只看该作者
╭ァ冷· 发表于 2013-6-17 01:32
沙发啊!布丁哥又出新地图了。期待发布完整版啊

设计和制作战场地图会比较花费时间,估计一座城市快的要三五个小时,要是做得仔细大概十来个小时。不过做得好可以拿出来互相交流。

现在还差一个战场地图编辑器,等有了编辑器,大家一起来制作自己的地图。



使用道具 举报

帖子
326
精华
0
积分
173
金钱
762
荣誉
1
人气
0
评议
0
15#
发表于 2013-6-17 21:14:56 |只看该作者
三5啊,以前迷得不得了,通宵达旦玩啊,那个游戏机制确实不错,要是能对windows色彩进行优化就更棒了。

使用道具 举报

愛情女神 阿芙羅狄忒

帖子
2787
精华
0
积分
2123
金钱
4543
荣誉
71
人气
106
评议
0
16#
发表于 2013-6-17 23:15:33 |只看该作者
这个强,支持了!
                                                                                                                                                                                                        苑之嵐
                                         

使用道具 举报

帖子
5065
精华
1
积分
2835
金钱
46903
荣誉
9
人气
124
评议
0
17#
发表于 2013-6-17 23:35:57 |只看该作者
san5布丁98 发表于 2013-6-17 20:17
等有了战场地图编辑器,就可以载入原版的城市战场地图文件到编辑器,然后保存为BMP文件即可。

有人已经 ...

曾经看过一张拼图很精彩,希望编辑器早日出现,看看全部拼接能如何~~


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
999
精华
0
积分
500
金钱
3823
荣誉
0
人气
1
评议
0
18#
发表于 2013-6-18 10:23:15 |只看该作者
补丁又有新研究啊,支持

使用道具 举报

帖子
2950
精华
0
积分
1487
金钱
4739
荣誉
1
人气
21
评议
0
19#
发表于 2013-6-18 13:32:15 |只看该作者
支持,必须要支持
每天水100贴,一年水30000贴,外加60000金币,钻石王老五会员在向我招手。

使用道具 举报

帖子
1679
精华
0
积分
841
金钱
9928
荣誉
0
人气
11
评议
0
20#
发表于 2013-6-18 20:35:09 |只看该作者
个人最喜欢玩的一代,呵呵,尤其是音乐

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-8-2 15:20 , Processed in 0.358926 second(s), 13 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到