传奇3地图大家以为只有一个map文件就可以显示地图嘛,大错特错。这个文件里面包含的信息非常有限,来看一下地图文件格式。
地图格式:
/// @brief 地图文件头 typedef struct tagMAPFILEHEADER { CHAR szDesc[20]; // 公司名称 SHORTshVer; // 版本 SHORTshWidth; // 地图宽度 SHORTshHeight; // 地图高度 CHAR cEventFileIdx; // 事件文件索引 CHAR cFogColor; // 背景颜色 }MAPFILEHEADER, *LPMAPFILEHEADER;
/// @brief 瓷砖信息 typedef struct tagTILEINFO { CHAR cFileIdx; // 文件索引 SHORTshTileIdx; // 瓷砖索引 }TILEINFO, *LPTILEINFO;
/// @brief 地图单元格信息 (客户端的格式) typedef struct tagCELLINFO { BYTE bFlag; // 障碍层 BYTE bObj1Ani; // 动画物体1 BYTE bObj2Ani; // 动画物体2 WORD bFileIdx; // 文件索引 // BYTE bFileIdx; WORD wObj1; // 物体1 WORD wObj2; // 物体2 WORD bDoorIdx; // 大门索引 // BYTE bDoorIdx; BYTE bDoorOffset; // 大门偏移 WORD wLigntNEvent; // 光线 }CELLINFO, *LPCELLINFO;
在绘制的时候分为几个步骤。 1)先把地图按大小画好,然后填充成单色,即背景色。你看到的就是一个单色的图。大部分情况是一张黑色的矩形图。 2)绘制瓷砖,就是把瓷砖从Data目录的wil文件里面取出来,然后绘制到第一步里面产生的图上面。你就可以看到有花,有草,有地板。 3)绘制物体层,物体层就是建筑物或者地表,树木,墙体等,物理层也是在Data目录的wil文件里面,这样你就可以看到一张完整的题图了。
所以地图工具要显示完整地图都需要使用客户端的Data目录。 常用的地图工具主要是几个, 一个是IllusionMapEditorV7,这个是韩国人搞的一个工具,这个工具论坛里面有的下,由于需要读取Data数据,使用的时候需要把这个工具拷贝到客户端的根目录下,运行的时候,它会把Data里面wil文件转换成自己可以读取的格式,非常慢。等所有的转换完,再打开地图,把那些wil显示在地图上。这个软件比较慢,所以我都不怎么用。 另一个是King Map Editor,王者软件开发的,这个其他地方应该也有的下,这个工具需要设置客户端的Data目录,然后再打开地图,不需要转换也可以直接显示地图,而且支持保存bmp工具,可以说是小地图制作的必备工具,一度在小范围内流行。由于它需要读取Data目录,所以它运行的时候,其他软件都读取不了Data目录,导致客户端运行的时候看不到地图,看到黑黑的界面,这时把它关了就可以了。 还有一个传奇3地图轮廓显示器,英文MapShow,论坛上有的下,这个工具的强悍之处就是只要一个map文件,不用Data目录就可以显示地图,速度非常快,据测试各种格式都支持,传奇2、传奇3,传奇3G。但显示的是一个大概的轮廓,没有瓷砖和物体。这个工具一般用来比对大地图和小地图。也就是修改服务端的MiniMap.txt文件,速度快很多。
|