梦幻西游的地图是什么格式的

作者&投稿:城袁 (若有异议请与网页底部的电邮联系)
梦幻西游中“.MAP”文件用什么软件打开~

请看
http://www.filext.com/detaillist.php?extdetail=map&Submit3=Go%21
http://www.filext.com/detaillist.php?extdetail=ozf2&Submit3=Go%21
.ozf2可以用OziExplorer 3.95.4h打开(http://nj.onlinedown.net/soft/17204.htm)

smap.wdf
就在文件夹面~
(你是想用唯美小地图?个人感觉之前的小地图比较好用#23)

《大话西游II》和《梦幻西游》地图文件格式读取类 实现代码

此类是本人编写的,主要用于读取《大话西游II》和《梦幻西游》地图文件格式, 而对于地图中各个单元的处理功能不包含在这个类中,可以写其他相关的类做这个方面的处理.本类主要用在教学研究方面,不得应用在商业领域以及其他侵害网易公司利益的地方. 本人不保证此类的安全和质量.如有疑虑请勿使用.参考资料:
Map File Old Format
Map File New Format
大话1302新地图格式
大话0038新地图格式

/*********************************************************************************************
* 《大话西游II》和《梦幻西游》
* 地图文件格式读取类
*---------------------------------------------------------------------------------------------
* 版本 2.2.0
*
* 王大理 <wdl@sina.com>
* 2006年05月20日
*---------------------------------------------------------------------------------------------
* 声明:
* 本源代码应用于网易公司的网络游戏《大话西游II》和《梦幻西游》地图文件格式的读取。
* 与此源代码相应的文件格式版权属于网易公司所有。
* 此源代码应用于教育目的,禁止用于商业目的,否则后果自负,本源代码作者不承担任何责任。
* 如有异议请务使用本源代码,并永久删除此源代码。
*---------------------------------------------------------------------------------------------
* 版权所有(c) 2006 王大理 , 保留所有权利。
*********************************************************************************************/
#include "ReadGameMap.h"
using namespace NetEase; // 使用NetEase命名空间ReadGameMap::ReadGameMap(void)
{
//m_MapWidth=0; // 初始化地图的宽度
//m_MapHeight=0; // 初始化地图的高度
m_SubMapWidth=320; // 初始化子地图宽度
m_SubMapHeight=240; // 初始化子地图高度
m_MaskTemp=1; // 初始化MASK临时变量
//m_SubMapRowNum=0; // 子地图的行数量
//m_SubMapColNum=0; // 子地图的列数量
//m_SubMapTotal=0; // 子地图的总数
}ReadGameMap::~ReadGameMap(void)
{
}// 加载地图文件
bool ReadGameMap::LoadMap(char *filename)
{
FILE *fp;
//m_FileName=filename; // 全局变量地图文件名 strcpy(m_FileName,filename); // 打开流
if( (fp = fopen(m_FileName, "rb" )) == NULL)
{
printf("打开文件错误。\n");
return false;
} // 读取地图文件头
MapHeader header;
fread(&header, sizeof(MapHeader), 1, fp); // 读取地图文件头 m_MapWidth=header.Width; // 地图的宽度
m_MapHeight=header.Height; // 地图的高度 m_SubMapRowNum=ceil((float)(m_MapWidth/m_SubMapWidth)); // 计算行中子地图的数量
m_SubMapColNum=ceil((float)(m_MapHeight/m_SubMapHeight)); // 计算列中子地图的数量
m_SubMapTotal=m_SubMapRowNum*m_SubMapColNum; // 计算地图中总的子地图数量 //printf("Flag=0x%X\n",header.Flag);
//printf("Width=%d\n",header.Width);
//printf("Height=%d\n",header.Height);
//printf("m_SubMapTotal=%d\n",m_SubMapTotal); // 判断文件头是否正确(MAPX) && (M1.0)
if((header.Flag!=0x4D415058) && (header.Flag!=0x4D312E30))
{
printf("未支持的地图文件格式。\n");
return false;
} // 读取子地图偏移值列表
m_SubMapOffsetList=new uint32[m_SubMapTotal]; // 自动分配列表空间
fread(m_SubMapOffsetList, sizeof(uint32), m_SubMapTotal, fp); // 读取列表
fread(&m_MapSize, sizeof(uint32), 1, fp); // 读取文件大小或文件头的大小 //printf("m_SubMapOffsetList=0x%X\n",m_SubMapOffsetList[60]); // MAPX
if (header.Flag == 0x4D415058)
{
ReadJPGH(fp); // 读取JPGH的数据
m_FileType=1; // 设置地图文件类型
}

// M1.0
if (header.Flag == 0x4D312E30)
{
ReadHEAD(fp); // 读取新地图的数据
m_FileType=2; // 设置地图文件类型
} fclose(fp); // 关闭流
return true;
}// 读取地图JPGH的数据
bool ReadGameMap::ReadJPGH(FILE *fp)
{
UnitHeader JpegHead;
fread(&JpegHead,sizeof(JpegHead),1,fp); // 读取单元头的数据 // 判断标志是否正确(HGPJ)
if (JpegHead.Flag!=0x4A504748)
{
printf("JPEG HEADER 标志错误。\n");
return false;
}
m_jpgh.Data = new uint8[JpegHead.Size]; // 分配单元数据的内存空间
m_jpgh.Size=JpegHead.Size;
fread(m_jpgh.Data,JpegHead.Size,1,fp); // 读取单元数据
//PrintHex(m_JpegHeadDate,JpegHead.Size);
return true;
}// 读取地图HEAD的数据
bool ReadGameMap::ReadHEAD(FILE *fp)
{
uint32 HeaderSize; HeaderSize=m_SubMapOffsetList[0]-m_MapSize; // 计算地图头数据的大小
m_head.Size=HeaderSize;
m_head.Data = new uint8[HeaderSize];
fread(m_head.Data,sizeof(uint8),HeaderSize,fp); // 读取地图头数据
//PrintHex(MapHeadData.Data,MapHeadData.Size);
return true;
}// 读取地图的单元数据
bool ReadGameMap::ReadUnit(uint32 UnitNum)
{
FILE *fp;
int64 seek;
bool Result;
bool loop=true;
char * filename;
m_MaskTemp=1; // 打开流
//printf("m_FileName=%s\n",m_FileName);
if( (fp = fopen(m_FileName, "rb" )) == NULL)
{
printf("打开文件错误。\n");
return false;
} seek=m_SubMapOffsetList[UnitNum];
//printf("Seek=0x%X\n",seek);
fseek(fp,seek,SEEK_SET);
fread(&m_MaskNum,sizeof(uint32),1,fp); // 读取MASK的数量
//printf("m_MaskNum=%d\n",m_MaskNum); // 新地图使用
if ((m_FileType==2) && (m_MaskNum>0))
{
//printf("New Map!\n");
m_MaskList = new uint32[m_MaskNum];
fread(m_MaskList,sizeof(uint32),m_MaskNum,fp);
} UnitHeader unit; while(loop)
{
fread(&unit,sizeof(UnitHeader),1,fp); // 读取单元的头数据 //printf("单元标志=%X\n", unit.Flag);
//printf("单元大小=%d\n", unit.Size); switch(unit.Flag)
{
// GAMI "47 41 4D 49"
case 0x494D4147:
Result=ReadIMAG(fp,unit.Flag,unit.Size);
break; // GEPJ "47 45 50 4A"
case 0x4A504547:
Result=ReadJPEG(fp,unit.Flag,unit.Size);
break; // KSAM "4B 53 41 4D"
case 0x4D41534B:
Result=ReadMASK(fp,unit.Flag,unit.Size);
break; // KOLB "4B 4F 4C 42"
case 0x424C4F4B:
Result=ReadBLOK(fp,unit.Flag,unit.Size);
break; // LLEC "4C 4C 45 43"
case 0x43454C4C:
Result=ReadCELL(fp,unit.Flag,unit.Size);
break; // GIRB "47 49 52 42"
case 0x42524947:
Result=ReadBRIG(fp,unit.Flag,unit.Size);
loop=false;
break; // 默认处理
default:
m_EndUnit.Flag=unit.Flag;
m_EndUnit.Size=unit.Size;
loop=false;
//printf("Flag错误!\n");
//printf("Flag=0x%X\n\n",unit.Flag);
break;
//return false;
} }
fclose(fp);
}// 读取地图宽度
uint32 ReadGameMap::ReadMapWidth()
{
return m_MapWidth;
}// 读取地图高度
uint32 ReadGameMap::ReadMapHeight()
{
return m_MapHeight;
}// 读取子地图的宽度
uint32 ReadGameMap::ReadSubMapWidth()
{
return m_SubMapWidth;
}// 读取子地图的高度
uint32 ReadGameMap::ReadSubMapHeight()
{
return m_SubMapHeight;
}// 读取子地图的总数量
uint32 ReadGameMap::ReadSubMapTotal()
{
return m_SubMapTotal;
}// 读取子地图中Mask的总数
uint32 ReadGameMap::ReadMaskTotal()
{
return m_MaskNum;
}// 读取地图文件大小
uint32 ReadGameMap::ReadMapSize()
{
return m_MapSize;
}// 读取地图IMAG的数据
bool ReadGameMap::ReadIMAG(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x494D4147)
{
m_imag.Data = new uint8[Size]; // 分配单元数据的内存空间
fread(m_imag.Data,Size,1,fp); // 读取单元IMAG的数据
m_imag.Size=Size;
//printf("IMAG的数据:\n");
//PrintHex(m_ImagData,Size);
}
else
{
printf("IMAG标志错误!\n");
return false;
}
return true;
}// 读取地图JPEG的数据
bool ReadGameMap::ReadJPEG(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x4A504547)
{
fread(&m_SubMapWidth,sizeof(uint16),1,fp); // 子地图的宽度
fread(&m_SubMapHeight,sizeof(uint16),1,fp); // 子地图的高度
m_jpeg.Data = new uint8[Size-4]; // 分配单元数据的内存空间
fread(m_jpeg.Data,Size-4,1,fp); // 读取单元JPEG的数据
m_jpeg.Size=Size;
//printf("JPEG的数据:\n");
//PrintHex(m_JpegData,Size-4);
}
else
{
printf("JPEG标志错误!\n");
return false;
} return true;
}// 读取地图MASK的数据
bool ReadGameMap::ReadMASK(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x4D41534B)
{
//printf("m_MaskTemp=%d\n",m_MaskTemp);
m_mask[m_MaskTemp].Data = new uint8[Size]; // 分配单元数据的内存空间
m_mask[m_MaskTemp].Size=Size;
fread(m_mask[m_MaskTemp].Data,Size,1,fp); // 读取单元MASK的数据
//printf("MASK的数据:\n");
//PrintHex(mask[m_MaskTemp].m_MaskData,Size); m_MaskTemp++;
}
else
{
printf("MASK标志错误!\n");
return false;
} return true;
}// 读取地图BLOK的数据
bool ReadGameMap::ReadBLOK(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x424C4F4B)
{
m_blok.Data = new uint8[Size]; // 分配单元数据的内存空间
fread(m_blok.Data,Size,1,fp); // 读取单元BLOK的数据
m_blok.Size=Size;
//printf("BLOK的数据:\n");
//PrintHex(m_BlokData,Size);
}
else
{
printf("BLOK标志错误!\n");
return false;
} return true;
}// 读取地图CELL的数据
bool ReadGameMap::ReadCELL(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x43454C4C)
{
m_cell.Data = new uint8[Size]; // 分配单元数据的内存空间
fread(m_cell.Data,Size,1,fp); // 读取单元CELL的数据
m_cell.Size=Size;
//printf("CELL的数据:\n");
//PrintHex(m_CellData,Size);
}
else
{
printf("CELL标志错误!\n");
return false;
} return true;
}// 读取地图BRIG的数据
bool ReadGameMap::ReadBRIG(FILE *fp, uint32 Flag, uint32 Size)
{
if (Flag==0x42524947)
{
m_brig.Data = new uint8[Size]; // 分配单元数据的内存空间
fread(m_brig.Data,Size,1,fp); // 读取单元BRIG的数据
m_brig.Size=Size;
//printf("BRIG的数据:\n");
//PrintHex(m_BirgData,Size);
}
else
{
printf("BRIG标志错误!\n");
return false;
} return true;
}// 读取JPGH的数据
MapData ReadGameMap::ReadJpghData()
{
return m_jpgh;
}// 读取HEAD的数据
MapData ReadGameMap::ReadHeadData()
{
return m_head;
}// 读取IMAG的数据
MapData ReadGameMap::ReadImagData()
{
return m_imag;
}// 读取JPEG的数据
MapData ReadGameMap::ReadJpegData()
{
return m_jpeg;
}
// 读取MASK的数据
MapData ReadGameMap::ReadMaskData(uint8 ID)
{
return m_mask[ID];
}
// 读取BLOK的数据
MapData ReadGameMap::ReadBlokData()
{
return m_blok;
}// 读取CELL的数据
MapData ReadGameMap::ReadCellData()
{
return m_cell;
}// 读取BRIG的数据
MapData ReadGameMap::ReadBrigData()
{
return m_brig;
}

楼主你好!地图的格式一般是.map如果改了还是不行,建议从朋友电脑或网吧拷贝map的一个文件夹粘贴到自己梦幻西游的文件夹内就可是,选择全部替换o(∩_∩)o希望对您有帮助

用客户端移到别的文件夹里,重新安装下

我想问你下 你现在游戏能玩吗? 游戏能玩就随他吧.


怎样打开梦幻西游的世界地图
点左上脚的第2个灯笼

梦幻西游有个大象的地图是哪里
宝象国皇宫里面呀!

手游梦幻西游每个地方高宝出什么兽决
《梦幻西游》手游里挖高级藏宝图出高级兽决对应的地点如下:1、傲来渔港:高级必杀,还有4种高级属性吸收。2、大雪山:高级连击 3、宝象国:高级神佑复生,高级隐身。4、建邺城:高级偷袭,高级法术暴击。5、长寿村:各类大法,高级法术连击。6、花果山:高级吸血,高级法术波动,高级法术暴击。7、两界...

这是梦幻西游的地图吗?
不是,是别人PS上去的

梦幻西游完整地图如何区分上与下
梦幻里面的地图都是看横纵坐标的,从坐下角开始,横着从左向右,纵者从上到下,所以说,想看上下,看坐标就行了,左下角坐标是(0,0),往上面就慢慢数字变大,那就是上,求采纳

梦幻西游封妖地图对应等级是什么?
建邺25 江南30 国境40 境外50 傲来60 长寿郊外70 北俱80

梦幻西游,去哪些地图抓师门BB,我是新手,麻烦各位骨灰解答下
尊敬的玩家:您好:梦幻西游,去哪些地图抓师门BB,我是新手 1 可以在 长安的 商会总管 那里去买 师门BB 场景场景级别怪物种类 东海湾10大海龟 沉船1层10巨蛙、大海龟 沉船2层10巨蛙、海毛虫 东海岩洞10大海龟、巨蛙、海毛虫 江南野外10树怪、野猪 大雁塔1层赌徒、强盗、骷髅怪、羊头怪、蛤蟆精、...

梦幻西游,全部的押镖路线怎么跑?
押镖是梦幻西游获取游戏币的重要途径之一,有哪些路线会用到,这里简单给大家介绍一下希望可以帮助大家。1、首先在游戏中,镖局位于长安城,在城内有四条路线,第一条往地图右上角走,可以到1处的化生寺和2处的大唐官府。2、第二条去驿站车夫,通过驿站车夫可以到达大唐国境。3、第三条往地图右下角...

梦幻西游中哪几个地图挖宝图出好东西的几率大?
傲来,五庄,朱紫国,野外,东海,是公认的挖兽决好去处,花果,北俱,狮驼岭,境外经常出5宝和66,麒麟山和国境垃圾的要命。

梦幻西游2石猴授徒副本攻略zz地图是什么意思
团队成功组建开启后,通过大唐境外(94,90)的山贼头子进入副本 进入副本后 发现是ZZ的地图~(113,50)附近找到大大王,点击后对话 然后,突然唐僧和玉华王一起消失了 与沙僧对话,发现唐僧和玉华王一起被卷入地洞,你们赶紧进入地洞救唐僧。进入后,悟空告诉你们,必须向幻境的居民打听一番如何破阵(单人...

坡头区18950821157: 懂梦幻西游的进来
窦鹏阿米: 可以,找到梦幻唯美的地图文件夹(文件是map格式的),然后再找到经典的地图文件夹,互相交换目录就可以了

坡头区18950821157: 梦幻西游 经典版地图怎么弄 -
窦鹏阿米: 你以前用的方法是不是把唯美版的地图文件复制到梦幻西游根目录下面的这个? 就是先把梦幻目录下的scene文件改个名或删除,然后在vmres文件夹下面复制scene这个文件到梦幻目录的下面.如果你用的是这个方法的话,就把复制到梦幻目录下的scene文件夹删除或剪切到vmres文件夹下.然后把以前梦幻目录下面的scene文件夹重新更名.然后刷新,进入游戏.

坡头区18950821157: 梦幻西游小地图文件 -
窦鹏阿米: smap.wdf 就在文件夹面~ (你是想用唯美小地图?个人感觉之前的小地图比较好用#23)

坡头区18950821157: 梦幻西游怎么改地图? -
窦鹏阿米: 打开梦幻目录——名为scene文件, 把里面的地图全部剪贴到另外个地方 (最好是梦幻目录以外的文件里,为了防止,系统发生错误时,可以及时把 原来的地图复制回里面去,或者什么时候你又想看经

坡头区18950821157: 梦幻西游的文件夹太大了,哪些文件没有用可以删除? -
窦鹏阿米: 名为scene是不可以删的,;里面是梦幻西游所有地图的资料你把那个删了走到一些地方,系统找不到相应打地图文件会网络错误的!名字为record的文件夹可以,里面是平时的录像 基本其他的除了补丁包,就没什么能删的了~~~电脑内存那么大业不在乎这么点的!!

坡头区18950821157: 怎么把梦幻西游经典版的地图换成唯美版 而人物不变 求高手详说#118 -
窦鹏阿米: 把唯美版目录下的地图文件拷贝到经典版里面就可以了.不过最好把经典版的地图复制一份,改个名字,不然到时候想要经典版地图的时候又没有了;1.jd是经典版.wm是唯美版;2.地图文件叫scene.步骤:1.找到jd目录下的scene文件夹,改名为scene1(按个人习惯,只为了好记);2.找到wm目录下的scene文件夹,复制到jd目录下,就可以了.

坡头区18950821157: 梦幻西游地图文件破解 -
窦鹏阿米: 有一些提供地图编辑器的游戏就能将其对应的文件打开,比如说<英雄无敌>,<war3>,<星际争霸>.如果一些没提供编辑工具的直接能用打开二进制的文件打开,比如说ue什么的.但是打开之后你是看不懂的.你想看地图 可以去17173看~

坡头区18950821157: 梦幻西游地图 -
窦鹏阿米: smap.wdf 就在文件夹面~

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网