基于游戏内置API脚本工具的,地形数据获取方式
您可以使用这个工具干什么:
从迷你导出您的方块数据;
从迷你到mc的存档转换(效果不完整);
获取数据之后,方块数量统计、各类可视化统计;
范围覆盖整个地图的,1方块=1像素的高清地图绘制;
能力边界:
它本质上只是借用了一个限制颇多的出口,说只是个“狗洞”也不为过。目前整个工具还不算百分之百完善,许多特殊版本的存档似乎是走不了这个接口的。
(但是我比较幸运,我想导出的存档全部完成了,嗯)
机缘巧合找到了一个数据导出出口。pc版本,开发模式1.0,脚本运行过程中,所有被print的数据,都会被保存到这里:
C:\Users\用户名\AppData\Roaming\miniworddata版本号\data\ss\TriggerScript.log
这是核心机制,其实只要知道这一步,后面怎么折腾,就不需要我来说了,大家都会。
我的这个工具补完了后面的部分,就是如何利用这个机制,去将你所需要的方块数据全部导出。
完成度还算比较高,原理就是,将所有需要获取的数据全部print出来,逐个区块进行print操作,获取每一个格子的方块id。这个导出高度范围是0-150格,这个高度之上几乎全是空的,我就没有设置为导出256。首先需要一个空存档,地形文件在m0,把m0复制过去,把脚本填上去,在此这个脚本的asd中填写此存档的地形文件列表(x1z1.r/x0z0.r……),并在触发器中挂载上一个计时器,即可开始数据导出。
它用了一个简单的去重压缩,减少硬盘占用,使用外部工具读取时,需要先解压、处理过,再进行后面的操作。
一个细节是,如果直接运行,不加这个计时器,那么将会大幅减少崩溃前能导出的数据量,加了这个东西能有一点帮助。不知道什么原理。
项目地址:
https://github.com/chongyan754/Miniworld-R-file-read
这里的a.lua就是脚本部分,复制粘贴到游戏内,按照正常流程操作即可。
效果展示:
好了,后面是mc存档转移的部分。
mc那边相对更开放,只要你能获取到迷你这边的存档数据,想导入到mc就没什么大的困难了。
我一开始以为mc那边是一样的方块id模式,但是后来发现他们不一样。直接导出是不可能的,所以你得专门整个置换表,mc那边的水id是water,迷你这边的水id是3,那就得设置一个:block_id_map[“3″]=”water”
置换表就是这个玩意:
block_id_map[“0″]=”air”
block_id_map[“104″]=”stone”
block_id_map[“1″]=”bedrock”
block_id_map[“3″]=”water”
说实话目前这个置换表不太全,而且很多方块是迷你或mc独有的,遇到置换表没有的方块,那程序就只能全部替换成大铁疙瘩了。
项目地址:
https://github.com/chongyan754/Miniworld-R-file-read
这里的mc.py就是存档转换工具,有两个依赖库,会py就能用
- 最新
- 最热
只看作者