设$dataMap(即某个MapXxx.json)的宽高分别为w = width和h = height格,则其data为一个长度为6wh的一维数组(向量),元素全部为[0,8192)的整数。 该向量共分为6段,每段长度为wh,前四段分别为四层图块ID,后两段为阴影和区域ID,阴影每格分为四小格所以有16种情况(在向量中可能为0~15,没试过),区域ID为0~255。 这样一来,点(x,y)的第z层的ID就是data[(z * h + y) * w + x],其中z为0~5。 图块ID的范围是[0,8192),其中[0,256)、[256,512)、[512,768)、[768,1024)分别为B~E组的图块,每组有16行16列,比如B组第一行左边8列就是0~7。但是我不确定右边8列是不是8~15,也有可能是128~135?(因为编辑器左侧的调色板是先左边8列再右边8列) A5、A1、A2、A3、A4组的范围分别为[1536,2048)、[2048,2816)、[2816,4352)、[4352,5888)、[5888,8192),也就是说其实E组和A5组最多分别可以有48行和64行?(因为A5组只有8列) A1~A4组因为是自动元件,所以实际上每48个ID对应同一个图块,比如A1左上角的图块ID范围其实是[2048,2096),该范围内不同的值表示不同的相邻情况带来的形状差异。 接着来说说Tilesets.json中的flags,它是一个长度为8192的向量,其元素全部为正整数,每个数包含了一个图块的【通行性、四方向通行性、是否梯子、是否灌木/流体、是否柜台、是否有害、地形标志】,以二进制方式存储。具体的存储规则是,将下面具有的属性所对应的数字直接相加,存储所得到的总和: 1、2、4、8表示【下、左、右、上】的通行性。 16表示通行性为五角星,显示在前景层。 32、64、128、256分别表示梯子、灌木、柜台、有害。 512、1024、2048分别表示【小舟、大船】的通行性以及【飞艇能否着陆】,但是编辑器里并不能修改这三项? 4096、8192、16384分别表示地形标志的【1、2、4】,相加即可得到0~7。 一般来说,涉及通行性(包括三种交通工具)的项会同时考虑该点的四层图块以及该点【以B~E组图块为行走图】的事件,而【梯子、灌木、柜台、有害、地形标志】则只考虑四层图块(从高层向低层)。 |
参与人数 2 | 赞 +2 | 收起 理由 |
---|---|---|
清澈淌漾 | + 1 | 塞糖 |
alexncf125 | + 1 | 精品文章 |
现在一想,其实是要做到两个点,第一,把要用到的data文件存档和读档(不需要全部,只是要用到的)(存档前和摆家具建筑后存一次进变量,读档后和摆家具建筑时读取),第二是获取当前地图的图块的长宽(用于后面数格子),然后用脚本数格子替代原有的值,最后,若是要复制事件还得把事件也复制过来 |
lisliz 发表于 2021-10-15 20:57 看懂data了 这个数组长度是地图格子数的6倍 0-3是 4个层级 4是阴影 5是region |
这个data里面的数字其实编码了这个格子的某个层级上显示的是ABCDE贴图的哪一个图块。 例如0~256代表B贴图 256~512代表C贴图 512~768代表D贴图 768~1536代表E贴图 1536~8192代表A贴图。 但RM的一个格子上有很多层,除了4层贴图,还有一层阴影和一层区域ID,所以data这里也写入了区域ID和阴影的数据。 flags则存储了数据库里图块的通行属性,柜台,有害地形地形标志这一列的东西,用二进制按位存储的。 |
俺寻思: 四位数,前两位可能是画地图时左边图块图像的横纵坐标,后两位是具体样式(比如地图边边和地图中心,同一个图块,画出来的具体图块样式是不一样的) |
开头四位数部分应该是图块的图像,那些0,大概跟通行有关,我觉得data(以我自己的庄园地图为例子)。 不,可能,data都是地图的图像(通行是引用图块文件的),所以都是图像,只是,比如我那个帖子的,那一堆四位数是代表对a层图像的引用,而后面那堆0的话,应该是因为我bcd层基本没有图像(没有,则为0) |
俺是个土人,这一串又是洋文又是数字的俺看不懂 俺只关心俺的感冒啥时候能好 但俺还是帮顶吧 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-17 19:28
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.