[仙剑奇侠传4]修改原理解析

不想看原理的可以直接看最下面。首先,系统下程序可用的内存地址是00400000-7FFFFFFF

仙4的人物属性数据分4块

战斗临时数据:仙4中战斗时所调用的地址,但是这个地址是会变的,地址范围也是很靠后,但应该在7F966880之前,这个等地卷解决。

人物基础数据

人物现有MAX数据(就是在人物属性界面所看到的,但精气神保存的是最大值)

人物现有数据(同上,但精气神保存的是现有值)

接下来重点说每个部分,这里按云天河的内存地址为例(这里数据采用了2次收录,数据有差异,但位置没变)以下地址我试了2次,50%认为地址是不变的。人物基础数据,人物最基础的几个属性,这里的属性是人物的原始值,就是没加装备前的。依我判断,这里的值加上装备的加成就生成了[人物现有MAX数据]中的攻击。修改这里最有效,但升级后是加成还是新算还待确认,但也可以直接锁定掉。前面还有一些数据,没仔细研究。

7F96688000000000AA060000050000006D000000

----------------------精----------?-----------气

7F966890F7000000AF000000CB000000DC000000

----------功----------防----------速-----------运

由于这里的功是人物基础值,基础值+装备加成才会=真正的输出攻击力,所以推荐这里基础值不要设到65535,容易溢出。如果想最大攻击输出,那就FFFF减该人物拿着的武器攻击力的16位值,得出来的就可以添在这。

7F9668A099000000CDCC4C3EAE47E13D00000000

----------灵----------4字节为一组的数据,暂时还不知道是什么

7F9668B000000000000000000000000000000000

7F9668C000000000000000000000000000000000

7F9668D000000000000000000000000000000000

7F9668E000000000000000000000000000000000

7F9668F000000000000000000000000000000000

7F96690000000000000000000000001300000000

-------------------------------------------待确认

7F96691000000000000000000000000000000000

7F96692000000000000000000000000000000000

7F96693000000000000000000000000000000000

7F96694000000000000000000000000000000000

人物现有MAX数据,这里的值都是按照人物基础值+装备加成后的值,所以大部分都是动态生成的,比如功,防,在这里修改是没用的,因为这里只是显示在游戏中人物状态里的结果,当进入新的战斗后,战斗中的攻击会重新计算,而不是直接调用这里值。

7F96695000000000000000000000000014000000

----------------------------------------------等级

7F966960998E0000000000000000000000000000

----------总经验值

7F966970000000000000803F0000803F0000803F

7F9669800000803F000000000000803F0000803F

7F9669900000803F0000803F0000803F0000803F

7F9669A00000803F000000000000000000000000

这一大段可能是分割符的作用

7F9669B000000000000000000000000000000000

7F9669C000000000000000000001000000000000

----------------------------------未知

7F9669D000000000090600000500000061000000

----------------------精MAX------?----------气MAX

7F9669E021010000AF000000B3000000BF000000

----------攻值--------防值---------速值--------运值

7F9669F0840000009A99993ECDCCCC3D00000000

----------灵值--------这4个字节是武器,后4个字节就不知道了,而且这个武器我觉得,可能只是调用位置,而不是武器代码。

比如CDCC4C3E铸云铁,9A99993E峰岭刃,但下面有个土属性戒指也是9A99993E。

7F966A0000000000000000000000000000000000

7F966A1000000000000000000000000000000000

7F966A2000000000000000000000000000000000

7F966A3000000000000000000000000000000000

----------------------------------水装备加成---火装备加成

这里是指环的装备地址,4字节,9A99993E是2个相同装备,9A99193E是1个,但到底还有什么规律呢?

7F966A4000000000000000009A99993E00000000

----------雷装备加成---风装备加成---土装备加成--水属性值

各属性值就是5灵的值,双字节,之间间隔2个字节,但直接改这里仍然对战斗中无影响

7F966A500000000000000000000000001F000000

----------火属性值-----雷属性值----风属性值-----土属性值

7F966A6000000000000000000000000000000000

7F966A7000000000000000000000000000000000

7F966A8000000000000000000000000000000000

7F966A9000000000000000000000000000000000

人物现有数据,是人物现有的状态,比如还剩多少血就在这里。也就是锁定这里的最大精就可以战斗结束后自动满精了。

7F966AA000000000000000000000000014000000

----------------------------------------------现在等级

7F966AB0998E0000000000000906000064000000

----------现有总经验---------------现有精------现有气

7F966AC0520000000000803F0000803F0000803F

----------现有神

战斗临时数据,是随机产生的,但应该有个范围,我抓了2次,分别在6FB2CB94,78BD2FdC附近。数据的结构和人物现有MAX数据里的一样,可以参考。

如果你在战斗临时数据中修改了人物的攻击力,之后受到加攻击或减攻击等法书的影响,那这个值将会从人物基础数据处+装备加成+法术中得出,再赋值给战斗临时数据。而且战斗临时数据在结束战斗后就消失,下场开始时再动态生成一个新的地址范围,所以锁定无用。

所以,仙4的人物数值可以这么来理解:

人物基础数据+装备加成=人物现有MAX数据里显示的

人物现有数据<->战斗临时数据是互导的关系,也就是战斗结束后HP为1004,会保存在人物现有数据中的7F966AB8,然后再次进入战斗模式时,会把这个值赋回给战斗临时数据中的HP地址。那么战斗中的数值是赋值给动态地址的,所以还没办法战斗中进行锁定。

对于其他人物,他们之间的间隔为B14,也可以说一个人物的所有数据占用了B14,就是2836字节。

按照这个可以想到,如果你想建立一个已经离队的人物,你起码得自己建起2836字节的数据。

那么,其他人的地址分别如下,如果想要韩菱纱的攻击,只要云天河的攻击地址7F966890+B14=7F9673A4,就是韩菱纱的基础攻击地址。

韩菱纱7F967394

柳梦璃7F967EA8

慕容紫英7F9689BC

现在还没确认的就是这个排列是否固定,我现在玩得人物少一个慕容紫英。

以下都为双字节,数值最大65535,但避免溢出,不推荐设成那么大的值。不用锁定,但暂时还不知道升级后是不是又重新算了。

7F966890云天河的攻

7F966894云天河的防

7F966898云天河的速

7F96689C云天河的运

7F9668A0云天河的灵

7F9673A4韩菱纱的攻

7F9673A8韩菱纱的防

7F9673BC韩菱纱的速

7F9673B0韩菱纱的运

7F9673B4韩菱纱的灵

7F967EB8柳梦璃的攻

7F967EBC柳梦璃的防

7F967EC0柳梦璃的速

7F967EC4柳梦璃的运

7F967EC8柳梦璃的灵

7F9689CC慕容紫英的攻

7F9689D0慕容紫英的防

7F9689D4慕容紫英的速

7F9689D8慕容紫英的运

7F9689DC慕容紫英的灵

还不肯定这个4个人物范围是固定排列还是剩谁就排在前面。

如果要真正能够锁定精,气,神,则需要找到战斗临时数据地址生成的规律,锁定了就可以。对了,如果HP锁定后被一击必杀打中(比如淮南王的夺魂)……不死亡(可以想到必杀的方程式不是,怪物攻击输出的值(显示用)=人物的剩余血量,状态=死亡(直接死亡);可能是怪物攻击输出的值=人物的剩余血量,人物的剩余血量=人物的剩余血量-怪物攻击输出的值,再if人物的剩余血量=0then状态=死亡)

地卷待解决的问题

1。对于64位系统而言,是否地址会随着变更?

2。在32位对于XP和VISTA的内存地址是否会变更?(可能性小)

3。战斗时的内存地址范围是多少,只见是否有个规律?

4。在7F966880修改的数值,人物升级后是在7F966880得值上修改加成还是被替换掉?

5。游戏的地址是不是固定的?

CopyRight2003-2018违法和不良信息举报(021-54473036)AllRightReserved

THE END
1.仙剑4运行为什么出现“应用程序无法正常启动(0*00000d)。请单击另一种是直接去游侠网下载免CD补丁。希望以上建议能够对您有所帮助,并祝愿您在游戏过程中享受愉悦!https://ask.zol.com.cn/x/19680863.html
2.2015最美表演胡歌:《中场休息》娱乐高清视频在线观看01:02 胡歌用她的名字捐30所学校 火星娱乐汇 2019 01:07 胡歌数次拒绝与林心如拍戏 嘻嘻娱乐 01:22 “胡歌的吻”竟成了骂人的话! 嘻嘻娱乐 01:54 胡歌发布会cut 红人爱自拍 2019 00:18 胡歌新戏演技! 大咖头条 2023 00:57 《仙剑4》要来啦! 娱闻壹姐 2018 00:25 《攀登者》剧组对胡歌的召唤 红人爱https://www.mgtv.com/b/309452/4201993.html