轩辕春秋文化论坛 » 设计与修改 » MapMaster工具开发讨论


2010-11-11 08:29 小行者
MapMaster工具开发讨论

各位大大早上好
[size=4][color=blue]程序开发目标:[/color][/size]
[size=4][color=#0000ff][/color][/size]
[size=4][color=#0000ff]建立一个图片库,使得大家都能快速制作地图。MapMaster,以下简称MM.[/color][/size]
[size=4][color=#0000ff]基础开发工具:  Delphi7[/color][/size]
[size=4][color=#0000ff]开发口号:[u]让地图制作,象玩游戏一样动人![/u][/color][/size]

[size=4][color=cyan][/color][/size]
[size=4][color=magenta]初步设想:[/color][/size]
[size=4][color=#ff00ff]因为ccz的地图,大致种类30多种,所以我们可以把各种地图素材,分别保存成这三十种类型之一,然后需要用时,只要选择大类,贴上图片即可。[/color][/size]
[size=4][color=#ff00ff][/color][/size]
[size=4][color=#ff00ff]MM可以完成简单的地图元素替换,查找,复制,导入导出,偏移修改。[/color][/size]
[size=4][color=#ff00ff]这里说的地图元素,就是48*48的小方块。每一个元素都可以被迅速替换。[/color][/size]
[size=4][color=#ff00ff]比如平原地形,如果我们的地图元素库中,有三种不同类型的平原(平时注意收集,然后自己导入),那么根据小地图,此处为平原,就可以从三种平原中,选择一种图片贴上去。[/color][/size]
[size=4][color=#ff00ff][/color][/size]
[size=4][color=#ff00ff]比如叶落寒秋前辈的《地形编辑器》其中定义了30种基本地形元素。[/color][/size]
[size=4][color=#ff00ff]MM可以为每种地形,分别定义元素,在贴上地形图片的时候,进行选择,令地图更加丰富多彩。[/color][/size]
[size=4][color=#ff00ff][/color][/size]
[size=4][color=#ff00ff]也支持从各位大大的成品地图中,按48*48大小,扣取小图片,作为自己的地图元素。[/color][/size]
[size=4][color=#ff00ff]比如著名的圣三,有漂亮的夜景灯火系统,我们可以把那个灯火小图片,保存为栅栏元素的一种,以后,也可以随时在自己的地图上,放入灯火了。[/color][/size]
[size=4][color=#ff00ff][/color][/size]
[size=4][color=#ff00ff]将来还要开发,夜景地图套餐,迷雾地图套餐等等,(就是模板,早饭没吃,想念套餐ing)[/color][/size]
= = = = = = = = = = = = = = 强力分割线= = = = = = = = =
[color=green][/color][size=5][color=green]程序功能一览(即功能菜单)[/color][/size]
[size=5][color=#008000]1新建[/color][/size]
[size=5][color=#008000]@@1.1新建小地图,(可保存为TXT格式,城城城门城城城门城城)[/color][/size]
[size=5][color=#008000]@@1.2(根据小地图,设计大地图)[/color][/size]
[size=5][color=#008000]@@1.3新建TXT地图稿[/color][/size]
[size=5][color=#008000]2打开[/color][/size]
[size=5][color=#008000]@@2.1打开小地图,(读取Hexzmap.e5)(询问是否打开大地图)[/color][/size]
[size=5][color=#008000]@@2.2打开大地图,(打开用户自己集中存放的成品地图)(询问是否生,或者打开小地图)[/color][/size]
[size=5][color=#008000]@@2.3打开bmp文件(从中截取地图块,以便导入自己的地图元素)[/color][/size]
[size=5][color=#008000]@@2.4打开txt地图稿[/color][/size]
[size=5][color=#008000]3保存[/color][/size]
[size=5][color=#008000]@@3.1保存小地图为bmp,txt格式。[/color][/size]
[size=5][color=#008000]@@3.2保存大地图为bmp,格式。[/color][/size]
[size=5][color=#008000]@@3.3保存txt地图稿。[/color][/size]
[size=5][color=#008000]4导入导出[/color][/size]
[size=5][color=#008000]@@4.1选择小图片,导入为地图元素[/color][/size]
[size=5][color=#008000]@@4.2将元素库中的图片导出为htm格式[/color][/size]
[size=5][color=#008000]@@4.3查看元素库[/color][/size]
[size=5][color=#008000]5其他(其他各种,软件常用更能,比如元素库整体导入导出,程序设置,状态栏显示等)[/color][/size]
[size=5][color=#008000]#######################[/color][/size]
[size=5][color=#008000]6界面类似叶落前辈的《地形编辑器》吧[/color][/size]
[size=5][color=#008000]左边,30+种类的地图元素集合[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.1[b][u]元素集合:[/u][/b]《地形编辑器》的30个元素图片是固定的,MM的元素图片是可用下拉列表框选择的。其中的数量多少,取决于元素库的储备质量。比如可以把红警,帝国,文明游戏中的桥梁,放到我们的“桥”元素中。[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.2[u][b]双界面:[/b][/u]主界面用来编辑大地图,因为打开文件时有询问(看上文2.1和2.2,所以此时可以打开一个小地图,如曹操传战场小地图样)[/color][/size]
[size=5][color=#008000]小地图可以是图片,也可以是文字(TXT文档)[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.3[u][b]自动生成TXT:[/b][/u]用户可以先编辑好TXT文档,系统会根据TXT地图稿,自动生成一个小地图,用户可据此继续编辑大地图。[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.4[u][b]关卡选择:[/b][/u]如果用户打开了hezmap.e5,则可根据关卡数,来选择关卡,并且在大地图,小地图做更改后,做出保存修改提示。[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.5 [u][b]基本信息:[/b][/u]长,宽,地形,坐标,画笔:(这些跟叶落前辈的类似)不过mm的画笔种类,要比ccz原始的多很多,:hz1020:[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.6[u][b]画笔调整:[/b][/u]大地图编辑中,每个画笔的大小为48*48。即每次都可以对一个地图元素进行操作。编辑操作包括[u]翻转[/u],(水平,垂直,左右旋)和拉伸(用当前元素,替换周边元素1--5平方个数)[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.7[u][b]元素替换:[/b][/u]大地图的每个元素,可以进行[u]替换(每个元素配一个下拉框,在本类型中选择)[/u],比如可以从平原1,替换为平原7,或者替换为平原默认(平原0),还可以替换为其他类型的地形,比如将平原替换为桥。这时图片变更为元素:桥0。小地图也将同时变化。(小地图只显示元素名称,不显示数字编号)[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.8[u][b]画笔数量:[/b][/u]大地图的选择,可以是一个画笔(1X1),也可以是四个画笔(2X2),或者多个(3-5平方个)[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.9[u][b]小地图切换:[/b][/u]小地图可以做bmp格式和txt格式的即时替换。[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]@@6.0[u][b]联动:[/b][/u]大地图,小地图,TXT地图稿,在新建、打开、保存,关卡选择时,保持同步更新。并且小地图和TXT文稿,实时对应。[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000]好了,功能方面就继续到这里。大家集思广益哈,欢迎给我提出宝贵意见,欢迎PM![/color][/size]

[size=5][color=#008000][/color][/size]




=====未完待续(20101110 )=====
=====(20101115)更新:===========
目前进度,修改主界面左边的选择项目,为30个下拉框,原计划支持30+自定义元素的,现在看来30种已经够多的了。
[size=5][color=green]主界面说明:[/color][/size]
[size=5][color=green]@@1.左边栏:[/color][/size]
[size=5][color=green]@@1.1[u]左边选择三十种地形元素:[/u]定义为pen,即画笔,其名称显示在右上角[/color][/size]
[size=5][color=#008000]@@2.地图界面[/color][/size]
[size=5][color=#008000]@@2.1[u]初始设定:[/u]为“城内”元素。[/color][/size]
[size=5][color=#008000]@@2.2将所选择的元素帖在中央画布上(如图所示,三个火,两个已完成,还有一个正在添加)[/color][/size]
[size=5][color=#008000]@@3.状态栏[/color][/size]
[size=5][color=#008000]@@3.1[u]关卡:[/u]读入Hexmap.e5,获得关卡数(感谢楼上提供的UE解决方案)[/color][/size]
[size=5][color=#008000]@@3.2[u]长宽:[/u]当前画布的长度与宽度[/color][/size]
[size=5][color=#008000]@@3.3[u]one/more按钮:[/u]画笔为1个或4,9,25个[/color][/size]
[size=5][color=#008000]@@3.4[u]画刷面积:[/u]即反应当前画刷是1个,还是4、9、25个?[/color][/size]
[size=5][color=#008000]@@3.5[u]地标:[/u]当前元素在地图中的位置。左上角为1, 当前项为地图宽度*y+X[/color][/size]
[size=5][color=#008000]@@3.6[u]坐标:[/u](这个可能换成行列表示更好)[/color][/size]
[size=5][color=#008000]@@3.7[u]终点:[/u]即从当前地标开始,所绘制的面积,最终影响到的地图坐标。[/color][/size]
[size=5][color=#008000]@@3.8[u]地形:[/u]画布上元素的类型和编号[/color][/size]
[size=5][color=#008000]@@3.9[u]画笔:[/u]即将覆盖上去的元素的类型和编号[/color][/size]
[size=5][color=#008000][/color][/size]
[size=5][color=#008000][/color][/size]

[color=Silver][[i] 本帖最后由 小行者 于 2010-11-15 11:36 编辑 [/i]][/color]

2010-11-11 08:31 小行者
二楼疑难提问以及解决方案

[size=5][color=red][size=5][color=red][u][b]这贴,将我在编程中遇到的问题,点滴列出,恳请前辈们给予指点[/b][/u][/color][/size]
[size=5][color=red][/color][/size]
[size=5][color=red][/color][/size][size=3]提问:红色字体  [color=black]说明:黑色字体  [/color][color=green]最终解决方案:绿色字体  [/color][color=blue]网友答案:蓝色字体[/color][/size]
[size=5][color=red][/color][/size]
[size=5][color=red]001第一个问题:如何在Hexzmap.e5,中,分割关卡数。[/color][/size]
[size=5][color=black][color=#008000]20101115: 关卡数已经能够被分割,地图元素已经能够转化为TXT文件。严重感谢五楼[url=http://www.xycq.net/forum/profile-uid-111321.html][size=2]godtype[/size][/url][size=2][color=#333333] [/color][/size]
[/color][/color][/size]

002第二个问题:Hexzmap.e5文件。如何解码。[/color][/size]
[size=5][color=black]叶落前辈的《地形编辑器》是如何将Hexzmap.e5,转化为小方块元素的呢?只要能一一对应,就能转化为TXT文档,再加载元素库的默认类型,就可以自动生成大地图。[/color][/size]
[size=5][color=#000000][/color][/size]
[size=5][color=#000000]如何解码呢?[/color][/size]
[size=5][color=#000000][color=#ff0000][/color][/color][/size]
[size=5][color=#000000][color=#ff0000]003第三个问题:寻找金圭子前辈的地图编辑器
[/color][size=5][color=black]网上好几处的下载点都失效了,哪位同学有备份存档的,能传上来么?[/color][/size][/color][/size]
[size=5][color=#008000]20101115: 谢谢楼下[url=http://www.xycq.net/forum/profile-uid-289050.html][size=2]魏王孟德[/size][/url][size=2][color=#333333] [/color][/size]同学提供的城内编辑器。[/color][/size]


[size=5][color=#000000][size=5][color=#000000][color=#ff0000]004第四个问题:30种地图基本元素的图片收集[/color][/color][/size]
[size=5][color=#000000][color=#ff0000][color=black]基本元素啊,需要三十张48*48的图,好像在金圭子前辈的地图编辑器中有,如果实在没有,我就从叶落前辈的编辑器中截图吧。[/color]
[color=green]20101110: 已截图,获得30张图片。[/color]
[/color][/color][/size][/color][/size]
====未完待续20101112=====

[size=5][color=#ff0000]005第五个问题:30种地图基本元素是否可以扩展?
[/color][/size][size=5][color=black][color=#ff0000][color=#000000]扩展一个地形,好像很难,要涉及到大量的ccz.EXE的修改?[/color][/color][/color][/size]
[size=5][color=#000000]一个新的地形,如何设计其可移动否?可使用策略否?[/color][/size]
[size=5][color=#000000]还要涉及到某个兵种在此地形下的移动力消耗,要修改DATA了。[/color][/size]
[size=5][color=#000000]ccz.exe是否支持30+的地形呢?要扩充的话,要涉及哪些数据?[/color][/size]
[size=5][color=#000000]不过这些,本来就不在我原先的计划中。挖的坑好大啊,越来越大。[/color][/size]
[size=5][color=#000000][/color][/size]
[size=5][color=#000000]或者可以不用修改EXE和data。只是给玩家增加两个自定义类型集合。在CCZMM中,允许玩家添加几个自定义地图集合,比如可以将各种攻城武器和兵营设施的图片放在一类中。在小地图中,他们的属性还是祭坛一类,但是作为大地图则可以见到丰富多彩的营寨了,不再是统一的栅栏民居+恢复基地。我们可以把铁滑车作为一个图标,直接帖到地图上,取代栅栏。[/color][/size]
[size=5][color=#000000][/color][/size]
[size=5][color=#000000]还有,可以将文字图画,设为自定义类。属性同宝物库(没有HPMP恢复功能)。然后大家可以看到各种战场设施,比如厨房,茅厕,告示牌等等。《杨家》MOD中,有一关隐藏的【洞房】,里面有莲花,荷叶,这种也可以专门提取出来作为元素库。[/color][/size]
[size=5][color=#000000][/color][/size]
[size=5][color=#000000]如果要涉及到修改地图的同时去修正EXE文件,似乎对我的能力和广大mod玩友来说,比较困难。毕竟CCZMM是一个资源集合,是资源库,不是修改器哈。[/color][/size]
[size=5][color=green]修改EXE,DATA来扩展地形种类的任务就交给大大们了吧。[/color][/size]
[size=5][color=#ff0000][color=#000000][color=green]哇哈哈 偷懒好轻松。[/color]


[/color][/color][/size]

[color=Silver][[i] 本帖最后由 小行者 于 2010-11-16 23:12 编辑 [/i]][/color]

2010-11-11 08:31 小行者
三楼制作进度及图片

[b]已经完成的项目,加粗,[/b]
尚未完成的项目,或者设想,原始字体。
20101111

[b]000[/b].创意(此贴开辟)
[b]001[/b].地图元素大类命名:大类00-29,小类00-99,理论上可存放图片10000张。
元素格名式 [u]0000平原.bmp[/u]   [u]1400栅栏..bmp[/u],  前为元素类型,中间两位数字为类型编号,(目前00-29),末后两位数字为元素编号,元素00.,为默认图形。
[b]002.仿照叶落寒秋的地形编辑器,将30种地形导入到程序主窗口,带滚动条显示,支持30+种类元素。[/b]
[b]003.暂未安排combobox控件,估计要用comboboxex。
[/b]======未完待续20101111=====


20101112
[b]004.comboBoxEX控件放置完毕,为活动式,可在30+个基本元素上移动,靠鼠标定位。[/b]
[b]005.鼠标点击基本元素,即时产生活动CBBE(见上),自动加载本元素与相关素材,完成10000图形导入可能性设定。(图2)[/b]
[b]= = = = 楼上图片有更新。= = = =[/b]
======未完待续20101112=====
06在窗体右边绘制网格,网格兼容活动comboBoxEx。
[b]06左边定义为30个[/b]comboBoxEx,读取地基图片。右边画布中,在image的同一位置,即时调用活动comboBoxEx,
[b]07在窗体规定位置专门显示鼠标坐标和相关数据[/b](这个已经完成,lbpen(画笔)和lbMapStyle(地形)需要调整,表示为类型..名称)
XY坐标需要注意控制。
08上下左右移动按钮(参考曹操传地图编辑器——城内)
09准备仔细研究hexmap.E5文件。
=========20101115中午============
[b]09研究完成,Hexmap文件解码成功,能够直接转化为txt文档,地图元素用汉字表示。[/b]
=========20101116===============
[b]10主界面菜单完成[/b]
=========20101121===============

[color=Silver][[i] 本帖最后由 小行者 于 2010-11-21 13:52 编辑 [/i]][/color]

2010-11-12 10:18 northwind_x
支持,我在做SLG的过程中感到素材的重要性,楼主在做利国利民的好事

2010-11-12 10:59 godtype
关于Hexzmap.e5(已解压版本)

从110H开始是每一关地形图在Hexzmap.e5中占用的字节数以及开始位置,每4字节*3为一组。
以原版Hexzmap.e5为例,110H开始是:
[color=Red]00 00 01 92 00 00 01 92 00 00 03 CC[/color] [color=Blue]00 00 01 92
00 00 01 92 00 00 05 5E[/color] 00 00 01 92 00 00 01 92
……
红色部分是S00,蓝色部分是S01。S00里面,第一和第二个01 92是字节数,其中一个是总字节数,另一个是压缩后字节数,解压过的版本就必须是两个字节数一致,01 92 表示实际占用字节数192H,后面的03 CC表示S00的地形图在Hexzmap.e5的位置是从3CCH开始。而S01的位置就是从55EH开始,字节数是192H。

然后看3CCH。从3CCH到55DH这一段192H个字节就是属于S00的,换成十进制就是402,S00的地图是20*20=400格。每一关最前面2个字节是判断宽与高的,实际数值是宽*3和高*3,例如3CCH就是3C 3C,即20*3=60。第3个字节开始就是每一个地形格的地形编号,排序是先从左到右,再从上到下,00就是平原,01就是草地……

以上内容是我所了解的,已懒得翻旧帖看有没有相关资料,不知对楼主是否有帮助。

2010-11-12 16:10 魏王孟德
那个,金龟子的导入器网盘有下,好像是xycqccz.ys168.com,记不清了
这里有双子的几个素材包[url]http://www.xycq.net/forum/viewthread.php?tid=204321&extra=page%3D1%26amp%3Bfilter%3Ddigest[/url]

2010-11-13 03:21 小行者
回复 #5 godtype 的帖子

非常详细了,现在已经凌晨,今晚再研究。
今晚目标:
06在窗体右边绘制网格,网格兼容活动comboBoxEx。
07在窗体规定位置专门显示鼠标坐标和相关数据(这个比较简单。)
===========================================
感谢楼上,楼上的楼上,各位好人啊。

2010-11-13 03:26 小行者
回复 #6 魏王孟德 的帖子

素材包已经下载 谢谢魏王

网盘中,只有金圭子的其他三个小程序,好像没有地图编辑器(难道我眼花)

2010-11-13 10:23 小行者
重大决定:

决定在原始30种地图的基础上,增加两种地形,一种为可移动地形,另一种为不可移动地形。

两种地形分别存放战场上可移动和不可移动的“附件”
虽然可以直接存放在“宝物库”和“栅栏”下,但作为战场附件,还是要给大家列出来。
(宝物库和民居的不同点,在于兵种移动力消耗不同,宝物库对各兵种驻防能力无影响)两者都无HPMP恢复

2010-11-13 15:32 魏王孟德
回复 #8 小行者 的帖子

额,这样么,我就不清楚了,再帮你找找看吧

2010-11-13 15:46 魏王孟德
找到个修改器,可以设定城内的地形的,应该和楼主的设想差不多的,只是功能欠缺了点
[url]http://www.xycq.net/forum....../thread-138260-1-1.html[/url],不知道楼主有没有,帮转来了

2010-11-15 11:38 小行者
主楼有更新,贴上最新界面图

20101115 今天更新主贴,加入最新界面照片。

2010-11-15 11:53 小行者
[quote]原帖由 [i]魏王孟德[/i] 于 2010-11-13 15:46 发表
找到个修改器,可以设定城内的地形的,应该和楼主的设想差不多的,只是功能欠缺了点
[url]http://www.xycq.net/forum....../thread-138260-1-1.html[/url],不知道楼主有没有,帮转来了 [/quote]

恩,这个以前用过。
将ocx复制到windows/system32下,即可顺利运行。

这个程序很好,画图比较方便。特别是他提供了两种不同的画图功能,先选择后画图、已选择持续画图,对我很有启发。

看来我需要制作两种模式,
1:读取hexmap.e5,根据e5数据设定来绘图,允许绘图结束后,自动保存对e5的修改。
2:读取bmp,直接绘制地图。

2010-11-21 07:06 血牛嘎嘎
加油研究啊,弄好了就免了PS了

2010-11-21 13:47 小行者
回复 #14 血牛嘎嘎 的帖子

ps
还是需要的,不过我这个,可以做到地图代码跟地图本身的同步更新。

暂不考虑研究Sl12。最终加载文件,需要用其他工具。
城内的地形,可以做得很好,城外的野战地形,提供1X1~5X5范围的画笔。
每个画笔的宽度和高度是48。就是一个作战单位的区域。

但是画笔和画笔之间的连接,还是需要用PS调整的。
简单的野战地图也能用MM画,前提是你的地图库有合适的图片。

2010-11-22 00:22 小行者
代码转换完全成功。

[b]这两天一直在修改代码转换的问题,终于解决了,上图。


范例是CCZ第20关的地图。“汝南与颍川,夹击运粮队那关”[/b]

[b]地图中的这一帧,起点到终点,宽度24格,高度28格。
最后一个代码的位置,是13377。位置在第836行,第12列。(每行16列)
如果按编辑器来算,每行字符75个,截取字符完成后,光标停留在62712。

选取了一个代码(最后那个“林”字),光标在代码右侧。[/b]

[color=Silver][[i] 本帖最后由 小行者 于 2010-11-22 00:31 编辑 [/i]][/color]

2010-11-25 13:02 northwind_x
最近在学FLEX,也准备做个FLASH版的地图修改器,但比楼主的简单些

2010-11-26 03:52 Maxwell
我更希望看到一些设计层面的东西,比如程序的架构、模块、层次、结构、关系,至少有部分代码也好。当然,这只是我希望看到的,并不是说楼主一定要按照这个路来走。

页: [1]
查看完整版本: MapMaster工具开发讨论


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.