仁王2 ce词条修改研究过程记录(更新中)

您所在的位置:网站首页 仁王二存档修改 仁王2 ce词条修改研究过程记录(更新中)

仁王2 ce词条修改研究过程记录(更新中)

2024-04-01 23:34| 来源: 网络整理| 查看: 265

先说结论(省流版):

1.每个词条在内存中占12个字节(一代是占20个),前四个字节描述词条名,如"赋予火属性",紧跟着的四个字节描述词条强度,如"AAA-","D+","-4.9%,"+22",再后面两个字节跟爱用度增幅效果和词条特性有关,最后两个字节跟词条特性有关.

2.同种词条可能对应相当多的词条名代码,这些不同的代码对应不同的词条品质(星号也属于品质而非特性)和上下限,这里可以参考(二代词条库 - 仁王 wiki (niohwiki.com)),wiki内容相当丰富.

3.描述词条强度的4字节里:属性增/减幅为整数时,对应字节里的数字就是该整数,如"近距离攻击吸取体力 22"对应 22;为小数时,对应的数字是小数乘10,如"妖力 +1.5"对应15;为百分数时,对应的数字是去掉百分号后乘10乘小数位数,如"近距离攻击伤害 +8.9%"对应 89,"+35%对应35";为字母时,按照"D- D D+ C- C C+ B- B B+ A- A A+ AA- AA AA+ AAA- AAA AAA+"从0到17的对应规则.但是!!!这4个字节表示的数据只是显示在面板上,即使你寻址找到该装备的基址把数据改掉,状态栏里的数据并不会改变,它该是什么还是什么,不会影响真实数据(经过测试,武器词条符合上述,魂核词条不符合,事实上:在修改魂核词条后,必须卸掉该魂核再装上修改后的效果才能执行,魂核词条似乎没有武器词条那么无懈可击的上限检查,修改这部分字节的内容再重装后面板上的强度就是状态栏的数据,同时下面的第5条的描述也符合魂核词条).那么词条强度是固定的吗,只是由词条名代码决定的吗,不是,很多词条在爱用度提高之后,性能也会提高,此外,通过脚本可以绕开(武器)词条强度的数值检查使这4的字节的数据直接生效,这两方面在内存方面的表现见第5条.(阶段性结果,已经被更新的内容取代,详见下一条)

4.第一条提到词条特性和最后四个字节有关,为什么要分成两部分讲呢,因为倒数第3,4字节的二字节数据决定你可以在最后的二字节数据选择的 词条特性的子集,而最后的二字节数据决定在子集里面选择具体的哪一个,讲得很生硬,具体举例来说,如图,词条"近距离攻击伤害 +2.0%"所占内存地址为从7FF7309DD980到7FF7309DD98B,首地址为7FF7309DD988的二字节数据59192(10进制)的决定了它的词条特性只能为{'可以被继承","不可重铸"}中的一个,而首地址为7FF7309DD98A的二字节数据2决定具体的词条特性是"可以被继承",所有野生装备的可以被继承的词条的该数据都是2,此外,所有野生装备的不可重铸的词条的该数据都是3,事实上,倒数第3,4字节的二字节数据(视作无符号)小于32768(8000)时,最后两字节决定的词条特性属于{"空","可以移植","不可重铸"},该数据取值从0开始依次递增1时,词条特性按照{空,不可重铸,空,不可重铸,可以移植,不可重铸,可以移植,不可重铸}的循环节循环,注意,所有野生装备的可以移植的词条的该数据都是6,所有野生装备的特性为空的词条的该数据都是2.同样地,在倒数第3,4字节的二字节数据(视作无符号)大于等于32768(8000)时,最后两字节的数据取值从0开始依次递增1时,词条特性按照{可以继承,不可重铸}的循环节循环.补充:对于组合效果的词条特性始终是"不可重铸",无法修改.

"继承"

 

 

 

 

 

 

 

"移植"

 

 

 

 

 

 

 

 

5.第4点中已知倒数3,4字节数据是否小于(8000)(十六进制)或(32768)(十进制)决定的是词条特性类型,它的具体数值决定的还有爱用度和词条强度,这里影响词条强度的直接因素并不是爱用度,举例说明:对于词条"C0B5 近距离攻击伤害增加 +1.8%",它的实际强度范围在爱用度为999时是1.1%到1.8%,这里需要先区别一下两个"爱用度",一个是面板上侧的有具体数值的装备总的爱用度(记作爱用度A),另一个是每个单独词条可以修改的个体爱用度(记作爱用度B),两个爱用度和最终词条的强度并不都有关系,继续上面的例子,在爱用度A满时,可以通过修改倒数3,4节数据,让实际的词条强度在1.1%到1.8%之间波动,经过测验,修改数据(16进制)为区间[0000,0594]时,对应1.1%,[0595-0B29]时,对应1.2%,[0B2A-10BD]对应1.3%.....一直到[****,3FFF]对应1.8%,从4000开始又是1.1%,像是循环(因为区间上下限差并不严格相同因此不能下断言).注意,对应词条强度为1.8%最大时,爱用度B并不一定是最大值.事实上,在需要特性"可以被继承"时,修改倒数3,4字节数据为(FFFF)能够保证词条强度最高,在需要特性"可以移植"时,修改为(7777)即可(7FFF是上限,7777比较好记),此时爱用度B也是满的,事实上,爱用度B是个无关紧要的东西,它只和面板显示有关,只要爱用度A是满的,不会影响合魂词条的继承.补充:游戏退出再进入时会对倒数三四字节进行检查,对于满爱用度A的武器词条,在小于(7FFF)时,上限是(6710),野生满爱用度武器的上限是(670F),即当修改的数据大于(6710)小于(8000)时,重进游戏会被修改为(6710),比(6710)小的时候则不会被修改,对于魂核词条和爱用度A为0的武器词条,该数字为(2710)(16进制),下面的表是测试词条"E613:防御精力消耗降低-7.5%"的.

左侧一栏是修改的值,百分数后面的是重进游戏后被游戏系统重新赋的值,也就是说,想要研究能够在重启游戏后依然留存的词条强度,应该更注重后者的规律

对于表中的数据可以推断出野生魂核经过合魂提升性能本质上是改变倒数三四字节的数据.魂核没有爱用度的概念,相当于一个爱用度为0的普通武器.在0000到7FFF的范围里,0000到3FFF为一个周期,4000到7FFF为一个周期,可以看出,武器满爱用度时至少为4000,然后词条强度随其增加到6710停止,6710至7FFF均为词条强度最大值.

下面是具体操作:

需要注意,有的词条强度变化仅和爱用度A有关,修改倒数3,4字节不能改变词条强度.(如词条B05E)当然,这里的词条强度上限并非无法修改,通过脚本植入可以绕过游戏对该数值的检测,如下(脚本作者SinGu14ritY).

 

启动该脚本时,词条强度在除了一种特殊情况(不止是一种特殊情况)只和第二个 四字节数据 有关系,可以赋从(0000 0000)到(FFFF FFFF)的任意值,一种特殊情况是,当取值为(**** 0000)时,这个脚本不起作用,如词条是"2317 妖力 +1.5",当我取值为(CCCC 0000)时,真实效果依然由倒数三四个字节和爱用度A决定,为+3.5,但是取值为(CCCC0001)时,真实效果就是 +34359242.9(因为恩惠和半妖技能已经加了2.0所以不是+34359240.9),所以要注意该词条增益和别的增益叠加后的数字不能超过(FFFFFFFF)否则会溢出,依然以上面妖力增加的词条举例,取值为(FFFF FFEC)时,真实效果为 +0.0;因为(FFFF FFEC)+(0000 0014)=1(0000 0000)溢出了.此外,当词条强度数值类型为无小数点的整数或百分数时,在数值超过(7FFF FFFF)时,效果为负数,也就是说这里的整数是有符号数,举例来说,取值为(8000 0001)时,对"近距离攻击吸取体力 -2147483647"的词条效果,近距离攻击不会吸取体力,也不会倒扣血;而对"精力 -2147483647"来说,游戏内精力一直是空的,具体表现为无法攻击,无法疾跑.最后,对于词条强度类型为字母时,取值大于17(十进制)时统一为AAA+,实战不会有超模的数值.注意,特殊情况对于任意词条强度类型都适用.补充:词条效果会在游戏再进入时按照倒数三四字节的数据进行重新赋值,所以这里建议用修改倒数三四字节的方式来确保退出游戏再进入时修改的数据不会被打回原形(主要就魂核词条),当然 超模的数据 不管怎么样都不会被长久保存.

 

 

再写过程(授人以渔):

下面介绍这些结论是怎么得出的,或许可以给和我一样的ce萌新一点启发

1.为什么一个词条占12个字节以及前四个字节代表词条名,再后面四个字节代表面板数值:看了B站up主 @A5hwell 的视频视频链接,在编辑词条时相邻词条地址加了12,数值在首地址+4处编辑.

2.怎么找到特定装备词条的基址:用ce群组扫描,如果一件装备词条数值从上往下依次是 {A 1.9 -4.9% +10 +8.9% 22},那么就在框里输入:4:* 4:10 4:* 4:* 4:19 4:* 4:* 4:49 4:* 4:* 4:10 4:* 4:* 4:89  4:* 4:* 4:22 4:*,搜到的基址就是该装备基址(绿色是基址).这里"4:"代表四字节数据,"*"代表任意值.(这是我从《仁王》CE改装备词条心得 - 知乎 (zhihu.com)学的) 补充:有可能发生词条在内存中不是按照自上往下的顺序排列的,此时搜寻的难度会增大.注意:找魂核词条基址时,会有两个结果,修改其中一个(可能是下面的那个)会导致游戏回到标题界面,所以只能修改另一个.

扫描群组

3.怎么找到当前鼠标悬浮的面板上的词条地址(参考视频BV1sP4y1c7Ln): 选面板上第一个词条的数值扫描,多次扫描之后,就可以得到对应的单独的地址,然后右键"找出是上面改写了这个地址",注意,在设置里要选择VEH调试器而非Windows调试器,不然会游戏会闪退,鼠标移动改变面板后就可以知道是哪条指令在起作用,查看该指令内存后,在该指令内存地址的前面不远处就可以找到视频中刚开始跳转的指令(66 89 01 mov[rcx],[ax]),接下来按照视频操作就可以以反汇编的形式改写词条名,面板词条强度等数据,这和上一条的功能是差不多的.补充:鼠标悬浮的面板数据地址不是基址,重启游戏后会变.注意,和上一条的基址不同,这里得到的地址仅可读,修改它还是会被赋成本来的值,这也是为什么up要用汇编写脚本来改.

4.为什么星号不是特性:因为经测试星号可以与继承和移植的特性共存.

5.怎么找到词条特性的决定因素:看完视频后,我在想up只编辑了+0,+4的地址数据,那么+8的是什么呢,而且我发现如果只修改+4和+0的地址数据,词条特性都是空,那么很合理地猜测从+8到+11的地址数据跟特性有关系,但是观察了一些装备,发现以四字节看每个词条的数据几乎都不一样,那么自然把它拆成4个单独的字节观察,这样发现了所有词条倒数第一个字节数据都是0,倒数第二个不是2就是3,倒数三,四个没有特别的规律,只是倒数第三个字节数据在变大时爱用度B会变大,通过修改倒数第二个字节,发现只要是奇数,词条特性就是"不可重铸",但是为偶数时有两种情况,对应上面说的两种循环节,又经过多次调整数据(这个过程耗时很长很折磨),终于找到了是什么影响了这两种情况:倒数第3,4个字节,且分界是(7FFF),那么就很合理地把倒数一二,三四字节分别看作一个二字节数据.

6.怎么发现倒数三四字节数据影响最终词条强度:刚开始知道第一个四字节数据代表词条名时,在网上找到了niohwiki的词条库,但是我按照视频中操作时,发现实战的效果和词条标的强度不一样,比如"BB4B:近距离攻击伤害+8.0%",实际效果只有+5.0%,满爱用度也只有"+6.0%",我以为是词条库出错了或者是我二周目等级太低上限就是6.0%,于是加了wiki的qq群反映一下这个事情,但是交流之后发现有150等级装备野生的词条能达到8.0%,到这里那肯定是ce改的方法有问题了,我开始认为是人造词条达不到上限,但是后面在研究词条特性的时候偶然发现倒数三四字节对实际效果是有影响的,于是对上面那个"C0B5 近距离攻击伤害增加 +1.8%"的词条进行了单独仔细的测试,得出的结论也在上面.

7.实际效果是怎么测的:在修炼场用同一把武器同一架式轻/重打同一个敌人测伤害增幅,对于如"赋予水属性"的词条,就是看造成的水属性伤害......总之还是比较好测的.爱用度A,B对词条能否继承的作用是在锻造所合魂界面比对出来的.事实上实际效果跟状态栏上的数字是吻合的,很多时候我只要反复进入退出刷新状态栏就可以很快比对修改前后的效果,遇到不确定的效果就会开任务实战测一下.

8.上面脚本是哪里找的:摊牌了,在网上下的一个CT表里找到的,其实早点找到这个CT表可以省好多一点功夫,之前我有尝试过找状态栏的数据地址,因为状态栏数据是直接决定实际数据的,如果能直接修改那自然更直接,找到了是找到了,但是发现词条在状态栏里的顺序和储存在内存里的顺序并不一样,卸除/装备一件装备也会影响其它词条的地址,这就不好修改,因为从研究修改词条到这篇文章写到这里一共才3天,ce也没有学很多,这个脚本自己不会写也看不懂,但是知道功能就够了,而且把它抄放到自己的CT表里可以正常运行.

个人研究过程,如有错误可以指出 : )



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3