吞食天地吧 关注:76,742贴子:1,193,103

64物法 深入研究

只看楼主收藏回复



IP属地:四川来自Android客户端1楼2020-04-27 07:15回复
    存档文件(*.sav)部分地址意义:
    540~57f 役所物品ID
    580~5bf 役所物品数量
    5c0~5ff 空闲


    IP属地:四川来自Android客户端2楼2020-04-27 07:15
    回复
      600~603 空闲
      604~607 我方阵型
      608~60f 空闲
      610~614 我方5位出阵武将序号
      615~61b 我方7人状态(80:正常,c0:军师,其他:负伤)
      61c~620 对阵5人状态(80:正常,其他:负伤)


      IP属地:四川来自Android客户端3楼2020-04-27 07:16
      收起回复
        621~627 我方7人武将ID
        628~62c 对阵5人武将ID
        62d~641 我方7人现存兵力
        642~650 对阵5人现存兵力
        651~665 我方7人最大兵力
        666~674 对阵5人最大兵力
        675~67b 我方7人武力
        67c~680 对阵5人武力


        IP属地:四川来自Android客户端4楼2020-04-27 07:16
        回复
          540~57f分别对应役所64件物品的种类ID,540代表第1件物品的种类,57f代表第64件物品的种类。与上述相似,580~5bf分别对应役所64件物品的数量信息,580代表第1件物品的数量,5bf代表第64件物品的数量。
          每使用一次64物法,地址540~57e向上偏移1个字节,地址580~5be向上偏移2个字节。
          举个例子,使用第一次64物法后,原本地址57e(第63件物品ID)的信息偏移到了57d(第62件物品ID)的位置,而原本地址580(第1件物品的数量)的信息偏移到了57e(第63件物品的ID)的位置。
          换言之,现在第62件物品是原来第63件物品,现在第63件物品则是原来第1件物品的数量。


          IP属地:四川来自Android客户端5楼2020-04-27 07:30
          收起回复
            我们已经知道物品数量会向上搬移2个字节,比较好理解的是,现在第60、61件物品的数量来自于原来第62、63件物品的数量,那么原来第62、63件物品的数量来自于哪里呢?这里可以告诉你,这两个位置(57d、57e)填充的是0,也就是256件。


            IP属地:四川来自Android客户端7楼2020-04-27 07:50
            收起回复
              有人可能会困惑,当使用64物法的次数"足够多"时,第63件物品会凭空消失,我们使用64物法的时候,还需要重新补充物品,这是为什么呢?
              这里也可以解释一下,首先"足够多"的现象,其实是从第33次使用64物法时发生的。我们已经知道,第1次使用64物法时,原来第63件物品的数量偏移成现在第61件物品的数量。以此推算,第31次使用64物法时,最早第63件物品的数量已经偏移成现在第1件物品的数量;第32次使用64物法时,最早第63件物品的数量则会偏移成第63件物品的ID;第33次使用64物法时,先前我们第1次使用64物法时用来填充到第63件物品数量的0(256件),会偏移成现在第63件物品的ID——而0用来表示物品的种类/ID时,表示的正是"无",因此我们会看到第63件物品"消失"。


              IP属地:四川来自Android客户端8楼2020-04-27 08:02
              回复
                下面说一下实际应用。
                首先,我们可以凭空变出一些物品,每使用一次64物法,原来第1件物品的数量,都会变成现在第63件物品的ID。具体的ID映射关系,可以百度搜索"吞食天地2 金手指"之类的关键词,想把物品数量变为0(256件),可以百度搜索"吞食天地2 无线复制"之类的关键词查阅,本贴不再赘述。值得一提的是,原版一共有00~7f共128个物品ID(00代表的是"无"),而物品数量则是0~255共256种情形,因此同一个物品ID可以对应两个数字,比如21号和a1表示的都是青铜剑。


                IP属地:四川来自Android客户端9楼2020-04-27 08:17
                收起回复
                  表示看不懂


                  IP属地:安徽来自Android客户端10楼2020-04-27 08:26
                  回复
                    其次,我们可以把一件物品变无限,每使用一次64物法,原来的第62、63件物品的数量会变为0(也就是256件)。当然,无限复制法也可以办到这件事情。


                    IP属地:四川来自Android客户端11楼2020-04-27 08:27
                    回复
                      凭空变出物品,还有着诸多妙用。
                      比如,提前变出关键道具火药,可以在第二章到达荆州后,立刻收了襄阳的铁器和孟达山洞的火焰甲;第三章火烧曹仁后,可以直奔襄阳灭掉蔡瑁、张允,然后江夏渡口坐船前往柴桑,与孙权对话即可去找庞统实施连环计。如此一来,可以跳过大量第三章的剧情,还可以避免刘表之死……再比如,提前变出关键道具青铜钥匙,可以在到达涪城后,立刻前去开水闸,然后前往落凤坡触发庞统之死,便可以坐船前往巴城,通过后方进攻成都了。这样可以跳过攻打张鲁等剧情。其他的不再一一赘述,大家自己去发现吧。


                      IP属地:四川来自Android客户端12楼2020-04-27 08:36
                      回复
                        接下来讲武将部分,相比物品部分的明了,武将部分要复杂一些。
                        使用64物法后,地址604~607会发生一些改变,理论上会改变我方的阵型,暂时还没有做过多研究。地址610~620会向上偏移2个字节,这几处数据改变的实用性不大。


                        IP属地:四川来自Android客户端13楼2020-04-27 09:12
                        回复
                          真正有意义的是接下来的部分:
                          地址621~627是我方队列武将的ID,此处的改变,直接影响我方队列的现有武将。每使用一次64物法,地址621~641会向上偏移2个字节,地址642~680会向上偏移1个字节,地址680及之后则不会发生变化。
                          简而言之,通过64物法造成的偏移,可以把对阵武将、各种兵力信息和武力信息转化为我方队列武将。


                          IP属地:四川来自Android客户端14楼2020-04-27 09:12
                          回复
                            武将ID信息,用1个字节储存,00表示刘刘……ff表示海贼,具体的映射关系,可以百度搜索"吞食天地2 金手指"等关键词查阅。
                            兵力信息,用3个字节倒序表示,例如"b1 0e 00"则为0xeb1,等同十进制的3761。
                            武力信息,也用1个字节表示,例如"f0"等同于十进制的240。


                            IP属地:四川来自Android客户端15楼2020-04-27 09:19
                            收起回复
                              多说一句,现存兵力与最大兵力的区别:现存兵力为上次战斗结束后,双方剩余的兵力。如果非战斗中主动撤退,通常情况下战胜后,敌方现存兵力为0。


                              IP属地:四川来自Android客户端16楼2020-04-27 09:22
                              回复