Project1

标题: 如何理解map的data与tilesets的flags [打印本页]

作者: 清澈淌漾    时间: 2021-10-15 18:11
标题: 如何理解map的data与tilesets的flags


有人研究过吗

举个例子就行
作者: 任小雪    时间: 2021-10-15 18:22
datamap里面的data应该是图块各abcde层的排列顺序和能否通行(我其实挺想知道怎么刷新的,现在暂时只会原地传送刷新--指我之前发的帖子),
flag可能跟地形伤害有关,我猜

以上全是俺寻思
作者: 小怪兽奇奇侠    时间: 2021-10-15 18:24
俺是个土人,这一串又是洋文又是数字的俺看不懂
俺只关心俺的感冒啥时候能好
但俺还是帮顶吧
作者: 任小雪    时间: 2021-10-15 18:39
开头四位数部分应该是图块的图像,那些0,大概跟通行有关,我觉得data(以我自己的庄园地图为例子)。

不,可能,data都是地图的图像(通行是引用图块文件的),所以都是图像,只是,比如我那个帖子的,那一堆四位数是代表对a层图像的引用,而后面那堆0的话,应该是因为我bcd层基本没有图像(没有,则为0)
作者: 任小雪    时间: 2021-10-15 18:42
俺寻思:
四位数,前两位可能是画地图时左边图块图像的横纵坐标,后两位是具体样式(比如地图边边和地图中心,同一个图块,画出来的具体图块样式是不一样的)
作者: lisliz    时间: 2021-10-15 20:57
这个data里面的数字其实编码了这个格子的某个层级上显示的是ABCDE贴图的哪一个图块。
例如0~256代表B贴图
256~512代表C贴图
512~768代表D贴图
768~1536代表E贴图
1536~8192代表A贴图。

但RM的一个格子上有很多层,除了4层贴图,还有一层阴影和一层区域ID,所以data这里也写入了区域ID和阴影的数据。


flags则存储了数据库里图块的通行属性,柜台,有害地形地形标志这一列的东西,用二进制按位存储的。
作者: 清澈淌漾    时间: 2021-10-16 09:47
lisliz 发表于 2021-10-15 20:57
这个data里面的数字其实编码了这个格子的某个层级上显示的是ABCDE贴图的哪一个图块。
例如0~256代表B贴图
2 ...

看懂data了
这个数组长度是地图格子数的6倍
0-3是 4个层级
4是阴影
5是region
作者: 任小雪    时间: 2021-10-23 22:15
现在一想,其实是要做到两个点,第一,把要用到的data文件存档和读档(不需要全部,只是要用到的)(存档前和摆家具建筑后存一次进变量,读档后和摆家具建筑时读取),第二是获取当前地图的图块的长宽(用于后面数格子),然后用脚本数格子替代原有的值,最后,若是要复制事件还得把事件也复制过来
作者: 小秋橙    时间: 2022-12-30 14:20
设$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组图块为行走图】的事件,而【梯子、灌木、柜台、有害、地形标志】则只考虑四层图块(从高层向低层)。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1