Hep*_*r44 0 python lua zlib deflate
所以我试图创建一个 python 脚本来为 MMF2+Lua 制作的游戏生成一个关卡,但我遇到了一些我不知道如何修复的问题。
生成一个带有游戏边框的 16x16 空关卡会给出以下结果(缩小):
78 5E 63 20 0A FC 27 00 40 86 8C AA C1 1D 02 23 3D 7C 08 27 32 00 9F 62 FE 10
它应该是一个扁平的 18x18 数组,其边缘具有0x00,其余部分具有0xFF。
我的 python 脚本使用完全相同的输入生成此数据zlib.deflate:
78 9C 63 60 20 06 FC 27 00 46 D5 8C AA C1 A7 86 30 00 00 9F 62 FE 10
它们是不同的,但膨胀它们会给出相同的数据。但是,当我将数据放入游戏时,尝试加载关卡时它崩溃了。
这两个值之间到底有什么不同,我可以修复它吗?
这是同一数据的两种不同编码,都是有效的。它们的不同之处在于副本的顺序。以下是两者的可读形式,首先来自游戏:
! infgen 2.6 output
!
zlib
!
last
fixed
literal 0
match 37 1
literal 255
match 31 1
match 4 69
match 258 36
match 26 258
match 256 288
match 34 613
end
!
adler
Run Code Online (Sandbox Code Playgroud)
然后从 zlib :
! infgen 2.6 output
!
zlib
!
last
fixed
literal 0 0
match 36 1
literal 255
match 31 1
match 258 36
match 258 36
match 28 36
match 34 1
end
!
adler
Run Code Online (Sandbox Code Playgroud)
literal给出插入到流中的一个或多个字节。match是流中先前字节的副本(可能与正在复制的字节重叠),其中第一个参数是要复制的字节数,第二个参数是要复制的距离(以字节为单位)。