重装机兵4----物品类道具复制 (B篇:详解)

本文首先根据站中重装机兵4(Metal Max 4, mm4)的“道具栏40页bug”视频抽象出游戏中物品类道具和回复类道具的数据结构及关联,然后从数据的角度对道具复制操作进行详解。本操作可以拓展,用于复制所有已有的物品类道具。
1. 物品类与回复类道具(栏)的数据结构
物品类道具:物品类道具每个道具占位4个字节,在本文里分别被称为名称低位、名称高位、数量低位和数量高位。其中名称低位和名称高位共同决定道具的名称,而数量低位决定了改道具的数量,但目前没有发现数量高位的作用(由于正常游戏中道具数量不会超过99个,理论上只需要3个字节就可以完整表示物品类道具的名称和数量,这里推测是方便在二进制中实现寻址)。当我们进行物品的移位操作时,其实就是内存中数据的变动。
回复类道具:回复类道具每个道具占位2个字节,在本文里分别被称为名称位和数量位,分别用于表示回复类道具的名称和数量。所以可以看出来,回复类道具的数目不是很多。

所有道具(包括物品类、回复类、战斗类、人类装备、战车装备)均以数据的形式存在。下图列出了几个已知道具(标蓝的可以记一下,下面会用的到。更多内容可以去“孙dark眉”40页bug视频里去扣)。举个例子,在物品栏中,名称低位为2且名称高位为0时,这时就是代表了神的口水;如果名称低位为215且名称高位为3时,在物品类道具栏中会出现双截棍,即使双截棍是一个武器。(战车底盘和怪物都有可能出现在物品类道具中)下表举了几个例子:

2. 物品类与回复类道具的连接
物品类道具和回复类道具的地址是相连通的。物品类道具的40页第4栏(4字节)与回复类道具的1页第1、2栏(4字节)重合。当我们将某一道具(长度4字节的数据)置入物品类道具的40页第4栏时,这个道具不会显示在物品类道具栏,而是显示在回复类道具的1、2栏(2组长度为2字节的数据)。

当我们将数据以4字节为一行对齐时,可以更明确的发现它们的对应关系。物品栏40页第4栏的数据的名称高位和名称低位分别对应回复类道具1栏道具的名称和个数;数量高位和数量低位分别对应回复类道具2栏道具的名称和个数;

整点实际的。假设我们在物品类道具某位置有2个修理套件,这时这一栏的4个字节分别为:243 | 0 | 2 | 0 (这里用十进制表示)。将其置入物品类道具的40页第4栏后,这四个字节的数据被放在现在回复类道具栏地址起点。但由于在回复类道具栏,每个道具只需要两个字节,所以对于 243 | 0 | 2 | 0 四个字节的解读就应该是 243 | 0 和 2 | 0 , 分别显示在回复类道具栏1页的第1、2栏。根据我们上面提到过的方法,前面的字节代表名称,后面的代表个数。那么 243 | 0 和 2 | 0这两组数据就是0个243号道具和0个二号道具,在通过上面表格可以看出,243号道具是修理套件,2号是神的口水,所以回复道具栏1、2栏会分别出现0个修理套件和0个神的口水。
3. 道具复制操作的详解
视频(详见文件底端,《重装机兵4复制道具》)中复制的是2个超级界限突破因子,放在了物品类40页第2栏。同时,清空了回复类1页1-4栏。这里按照视频中所示内容进行解释。2个超级界限突破因子占用4字节数据:217 | 0 | 2 | 0;回复类道具的4个空位则均是 0 | 0。图4展示了这一“初始状态”。为了保持步骤的连贯,下面就不追加说明了。
需要注意:在物品类道具中的交换操作,一次改变4个字节;回复类道具中的交换数据操作,一次改变2个字节。(“交换操作”指的时改变道具的位置。)



图6 复制道具第3步



这里只显示有数据改变的3行数据,整个过程的数据变化如下图所示:

4. 本操作的用途与限制
本操作主要用于已有物品类道具的复制,例如超级稀有金属、宇宙电池、宇宙玩偶等,适当使用可减少刷材料的痛苦。不适用于回复类、战斗类和装备的复制。没有的物品类道具也需要用其他方法。虽然简单,但其原理时此后绝大部分的bug操作的基础,活学活用后可以呼风唤雨、横行霸道。希望感兴趣的伙伴们能够理解。
5. 致谢
感谢“孙dark眉”提供的封面图片与游戏存档。

道具复制操作的视频如下:
