首页 传奇地图文件格式

传奇地图文件格式

举报
开通vip

传奇地图文件格式传奇地图文件格式 对传奇代码的研究心得(一) ———地图篇 对传奇代码的研究,个人认为应该从地图开始,地图是整个游戏的基础,所有角色的操作都 必须依赖地图来进行处理。因此从地图着手分析也是必须的。 传奇地图的数据结构 首先看一下传奇地图的数据结构。(注:以下所有声明均以解元版传奇代码为标准) 一、 MAP文件结构 文件头:52字节 第一行第一列定义 第二行第一列定义 第三行第一列定义 。 。 。 第Width行第一列定义 第一行第二列定义 。 。 。 从这个结构我们可以看出2点:...

传奇地图文件格式
传奇地图文件格式 对传奇代码的研究 心得 信息技术培训心得 下载关于七一讲话心得体会关于国企改革心得体会关于使用希沃白板的心得体会国培计划培训心得体会 (一) ———地图篇 对传奇代码的研究,个人认为应该从地图开始,地图是整个游戏的基础,所有角色的操作都 必须依赖地图来进行处理。因此从地图着手分析也是必须的。 传奇地图的数据结构 首先看一下传奇地图的数据结构。(注:以下所有声明均以解元版传奇代码为标准) 一、 MAP文件结构 文件头:52字节 第一行第一列定义 第二行第一列定义 第三行第一列定义 。 。 。 第Width行第一列定义 第一行第二列定义 。 。 。 从这个结构我们可以看出2点:1、传奇地图文件(.Map)是由文件头(52字节)+地图width* 地图height个地图元素组成;2、传奇地图文件(.Map)是按列存储的。 二、MAP文件头定义 TMapHeader = packed record Width : word; //宽度 2 Height : word; //高度 2 Title: array [1..16] of char; //标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 16 UpdateDate: TDateTime; //更新日期 8 Reserved : array[0..23] of char; //保留字 24 end; 占用52个字节。 三、MAP文件地图元素定义 TMapInfo = record BkImg: word; //底层图片索引 2 //最高位为1不可以行走,图片索引为低17 位 MidImg: word; //中间层图片索引 //图片索引为低17位 FrImg: word; //表层图片索引 //最高位为1不可以行走 DoorIndex: byte; //最高位为1有门,索引为低7位 DoorOffset: byte; //最高位为1是开,0是关 AniFrame: byte; //动画效果 (Draw Alpha) AniTick: byte; //阴影效果 Area: byte; //表层图片对应OBJECT索引 light: byte; //雾的效果(视线) end; 每个元素占用12个字节 这里的注释有点不完全,因为实在无法用简单的一句注释来说明,后面画地图时会作详细解 释。 读取传奇地图的数据 了解了上面这些,我们就可以读取传奇的地图数据了: 我们构造这样一个函数: var MapFileName,LibPath:String;//地图文件名字,素材库目录 MapWidth,MapHeight:Integer;//地图宽度、高度//以单元格为基数 MapUnit:array of array of TMapInfo; //地图元素集 function loadmap(mapfile: string): Boolean;//读取地图元素信息 var flname: string; fhandle: integer; header: TMapHeader; x,y:integer; aline:integer;//一个列的大小 begin SetLength(MapUnit,0,0); Result := FALSE; flname := mapfile; //读MAP文件的宽度和高度 if FileExists (flname) then begin fhandle := FileOpen (flname, fmOpenRead or fmShareDenyNone); if fhandle > 0 then begin FileRead (fhandle, header, sizeof(TMapHeader)); MapWidth := header.Width; Mapheight := header.Height; end; SetLength(MapUnit,MapWidth*Sizeof(TMapInfo),MapHeight*Sizeof(TMapInfo)); aline := sizeof(TMapInfo) * MapHeight; //一个列的大小(字节数) for x:=0 to MapWidth-1 do begin FileSeek (fhandle, sizeof(TMapHeader) + (aline * x)), 0); FileRead (fhandle, MapUnit[x, 0], sizeof(TMapInfo) *MapHeight); end; FileClose (fhandle); end; end; 这样就可以读取整幅地图的数据了,但在实际制作地图编辑器或者游戏中读取地图时是不能这样做的,为什么呢, 道理很简单,地图大的话机器的资源要跟不上
本文档为【传奇地图文件格式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:16KB
软件:Word
页数:4
分类:生活休闲
上传时间:2017-09-20
浏览量:162