重装机兵4--战斗类道具与装备的连通及人类装备的复制(B篇:详解)

本文根据站中重装机兵4(Metal Max 4, mm4)的“道具栏40页bug”视频抽象出游戏中物品类道具和回复类道具的数据结构及关联。本文首先对战斗类道具与装备的连通进行说明,然后从数据的角度对装备复制操作进行详解。本操作可以用于复制所有已有人类装备。
1. 战斗类道具与装备的连通
我们还是需要从数据长度的角度入手。战斗类道具和回复类道具一样,每种战斗类道具需要2字节,这里分为名称位和数量位,分别用于表示道具的名称和数量;每种装备需要4个字节表示,这里把他们命名为名称低位、名称高位、数量低位和数量高位,前两个字节表示名称,名称低位表示数量,名称高位是无效字节。
因为战斗类道具和装备数据长度不同(战斗类2字节,装备4字节),再加上我们只能够从战斗类道具栏延申到装备栏,所以,战斗栏种的两个栏才能对应到装备的一个栏。这两个栏就是战斗类道具的7页第6栏和第7栏,共同对应到装备的1页第1栏。图1为战斗类道具与装备的连通示意图。战斗类道具的7页第6栏对应装备的名称高位和低位,具体为名称位对应名称低位,数量位对应名称高位;战斗类道具的7页第7栏对应装备的数量高位和低位,具体为名称位对应数量低位,数量位对应数量高位。此外,战斗类道具的7页第8,9栏对应着装备的1页第2栏。

最后,这里还总结了物品、回复、战斗和装备四类道具的连通。正是由于这种“两端四字节,中间二字节”的结:1. 可以使我们实现每两字节的移动;2. 可以用出售操作改变道具数量,实现了对数量低位数据的更改; 3. 综合前两种操作就是整个“道具栏连通bug”的完全利用,也是本系列作品的核心所在。

2. 需要的道具
这里还是提供了一些道具的名称高位和名称低位信息,有利于帮助理解下面的步骤。前面说到战斗了道具和回复类道具的名称不分高位和低位,这是因为它们的总数加起来较少,用一个字节足以表示。其实这也是默认高位为0的特殊情况。

3. 复制人类装备详解
相比于复制物品类道具和无中生有操作来说,复制人类装备的操作是最简单的。由于战斗类道具占用两字节,装备占用四字节,因此可以单独改变装备的数量。只需将道具直接放到对应的装备数量低位即可。



4. 此操作的局限性
此操作可以用于所有已有人类装备的复制,但是没有的装备用这个方法是行不通的。下一期将为大家详解,如何通过道具栏的连通bug得到没有的装备。有兴趣的小伙伴可以提前尝试一下,综合这四期的方法完全可以搞定。
5. 致谢
感谢“孙dark眉”提供的封面。