索尼承諾將“增加PS5主機(jī)供應(yīng)”
2023-01-31
更新時(shí)間:2022-03-30 09:10:22作者:佚名
會(huì)員:sunbeyond<原創(chuàng)>
仙劍4數(shù)據(jù)存儲(chǔ)原理和地址規(guī)律
不想看原理的可以直接看最下面。首先,系統(tǒng)下程序可用的內(nèi)存地址是00400000-7FFFFFFF
但這回仙4的大部分人物屬性相關(guān)地址都保存在7F966880之后……而且到現(xiàn)在為止都是雙字節(jié),裝備是4字節(jié),所以最大值是65535,但在一些情況下最好別取這個(gè)值,后面再說(shuō)。
仙4的人物屬性數(shù)據(jù)分4塊
戰(zhàn)斗臨時(shí)數(shù)據(jù):仙4中戰(zhàn)斗時(shí)所調(diào)用的地址,但是這個(gè)地址是會(huì)變的,地址范圍也是很靠后,但應(yīng)該在7F966880之前,這個(gè)等地卷解決。
人物基礎(chǔ)數(shù)據(jù)
人物現(xiàn)有MAX數(shù)據(jù)(就是在人物屬性界面所看到的,但精氣神保存的是最大值)
人物現(xiàn)有數(shù)據(jù)(同上,但精氣神保存的是現(xiàn)有值)
接下來(lái)重點(diǎn)說(shuō)每個(gè)部分,這里按云天河的內(nèi)存地址為例(這里數(shù)據(jù)采用了2次收錄,數(shù)據(jù)有差異,但位置沒(méi)變)以下地址我試了2次,50%認(rèn)為地址是不變的。人物基礎(chǔ)數(shù)據(jù),人物最基礎(chǔ)的幾個(gè)屬性,這里的屬性是人物的原始值,就是沒(méi)加裝備前的。依我判斷,這里的值加上裝備的加成就生成了[人物現(xiàn)有MAX數(shù)據(jù)]中的攻擊。修改這里最有效,但升級(jí)后是加成還是新算還待確認(rèn),但也可以直接鎖定掉。前面還有一些數(shù)據(jù),沒(méi)仔細(xì)研究。
7F96688000000000AA060000050000006D000000
----------------------精----------?-----------氣
7F966890F7000000AF000000CB000000DC000000
----------功----------防----------速-----------運(yùn)
由于這里的功是人物基礎(chǔ)值,基礎(chǔ)值+裝備加成才會(huì)=真正的輸出攻擊力,所以推薦這里基礎(chǔ)值不要設(shè)到65535,容易溢出。如果想最大攻擊輸出,那就FFFF減該人物拿著的武器攻擊力的16位值,得出來(lái)的就可以添在這。
7F9668A099000000CDCC4C3EAE47E13D00000000
----------靈----------4字節(jié)為一組的數(shù)據(jù),暫時(shí)還不知道是什么
7F9668B000000000000000000000000000000000
7F9668C000000000000000000000000000000000
7F9668D000000000000000000000000000000000
7F9668E000000000000000000000000000000000
7F9668F000000000000000000000000000000000
7F96690000000000000000000000001300000000
-------------------------------------------待確認(rèn)
7F96691000000000000000000000000000000000
7F96692000000000000000000000000000000000
7F96693000000000000000000000000000000000
7F96694000000000000000000000000000000000
人物現(xiàn)有MAX數(shù)據(jù),這里的值都是按照人物基礎(chǔ)值+裝備加成后的值,所以大部分都是動(dòng)態(tài)生成的,比如功,防,在這里修改是沒(méi)用的,因?yàn)檫@里只是顯示在游戲中人物狀態(tài)里的結(jié)果,當(dāng)進(jìn)入新的戰(zhàn)斗后,戰(zhàn)斗中的攻擊會(huì)重新計(jì)算,而不是直接調(diào)用這里值。
7F96695000000000000000000000000014000000
----------------------------------------------等級(jí)
7F966960998E0000000000000000000000000000
----------總經(jīng)驗(yàn)值
7F966970000000000000803F0000803F0000803F
7F9669800000803F000000000000803F0000803F
7F9669900000803F0000803F0000803F0000803F
7F9669A00000803F000000000000000000000000
這一大段可能是分割符的作用
7F9669B000000000000000000000000000000000
7F9669C000000000000000000001000000000000
----------------------------------未知
7F9669D000000000090600000500000061000000
----------------------精MAX------?----------氣MAX
7F9669E021010000AF000000B3000000BF000000
----------攻值--------防值---------速值--------運(yùn)值
7F9669F0840000009A99993ECDCCCC3D00000000
----------靈值--------這4個(gè)字節(jié)是武器,后4個(gè)字節(jié)就不知道了,而且這個(gè)武器我覺(jué)得,可能只是調(diào)用位置,而不是武器代碼。
比如CDCC4C3E鑄云鐵,9A99993E峰嶺刃,但下面有個(gè)土屬性戒指也是9A99993E。
7F966A0000000000000000000000000000000000
7F966A1000000000000000000000000000000000
7F966A2000000000000000000000000000000000
7F966A3000000000000000000000000000000000
----------------------------------水裝備加成---火裝備加成
這里是指環(huán)的裝備地址,4字節(jié),9A99993E是2個(gè)相同裝備,9A99193E是1個(gè),但到底還有什么規(guī)律呢?
7F966A4000000000000000009A99993E00000000
----------雷裝備加成---風(fēng)裝備加成---土裝備加成--水屬性值
各屬性值就是5靈的值,雙字節(jié),之間間隔2個(gè)字節(jié),但直接改這里仍然對(duì)戰(zhàn)斗中無(wú)影響
7F966A500000000000000000000000001F000000
----------火屬性值-----雷屬性值----風(fēng)屬性值-----土屬性值
7F966A6000000000000000000000000000000000
7F966A7000000000000000000000000000000000
7F966A8000000000000000000000000000000000
7F966A9000000000000000000000000000000000
人物現(xiàn)有數(shù)據(jù),是人物現(xiàn)有的狀態(tài),比如還剩多少血就在這里。也就是鎖定這里的最大精就可以戰(zhàn)斗結(jié)束后自動(dòng)滿精了。
7F966AA000000000000000000000000014000000
----------------------------------------------現(xiàn)在等級(jí)
7F966AB0998E0000000000000906000064000000
----------現(xiàn)有總經(jīng)驗(yàn)---------------現(xiàn)有精------現(xiàn)有氣
7F966AC0520000000000803F0000803F0000803F
----------現(xiàn)有神
戰(zhàn)斗臨時(shí)數(shù)據(jù),是隨機(jī)產(chǎn)生的,但應(yīng)該有個(gè)范圍,我抓了2次,分別在6FB2CB94,78BD2FdC附近。數(shù)據(jù)的結(jié)構(gòu)和人物現(xiàn)有MAX數(shù)據(jù)里的一樣,可以參考。
如果你在戰(zhàn)斗臨時(shí)數(shù)據(jù)中修改了人物的攻擊力,之后受到加攻擊或減攻擊等法書的影響,那這個(gè)值將會(huì)從人物基礎(chǔ)數(shù)據(jù)處+裝備加成+法術(shù)中得出,再賦值給戰(zhàn)斗臨時(shí)數(shù)據(jù)。而且戰(zhàn)斗臨時(shí)數(shù)據(jù)在結(jié)束戰(zhàn)斗后就消失,下場(chǎng)開(kāi)始時(shí)再動(dòng)態(tài)生成一個(gè)新的地址范圍,所以鎖定無(wú)用。
所以,仙4的人物數(shù)值可以這么來(lái)理解:
人物基礎(chǔ)數(shù)據(jù)+裝備加成=人物現(xiàn)有MAX數(shù)據(jù)里顯示的
人物現(xiàn)有數(shù)據(jù)<->戰(zhàn)斗臨時(shí)數(shù)據(jù)是互導(dǎo)的關(guān)系,也就是戰(zhàn)斗結(jié)束后HP為1004,會(huì)保存在人物現(xiàn)有數(shù)據(jù)中的7F966AB8,然后再次進(jìn)入戰(zhàn)斗模式時(shí),會(huì)把這個(gè)值賦回給戰(zhàn)斗臨時(shí)數(shù)據(jù)中的HP地址。那么戰(zhàn)斗中的數(shù)值是賦值給動(dòng)態(tài)地址的,所以還沒(méi)辦法戰(zhàn)斗中進(jìn)行鎖定。
對(duì)于其他人物,他們之間的間隔為B14,也可以說(shuō)一個(gè)人物的所有數(shù)據(jù)占用了B14,就是2836字節(jié)。
按照這個(gè)可以想到,如果你想建立一個(gè)已經(jīng)離隊(duì)的人物,你起碼得自己建起2836字節(jié)的數(shù)據(jù)。
那么,其他人的地址分別如下,如果想要韓菱紗的攻擊,只要云天河的攻擊地址7F966890+B14=7F9673A4,就是韓菱紗的基礎(chǔ)攻擊地址。
韓菱紗7F967394
柳夢(mèng)璃7F967EA8
慕容紫英7F9689BC
現(xiàn)在還沒(méi)確認(rèn)的就是這個(gè)排列是否固定,我現(xiàn)在玩得人物少一個(gè)慕容紫英。
以下都為雙字節(jié),數(shù)值最大65535,但避免溢出,不推薦設(shè)成那么大的值。不用鎖定,但暫時(shí)還不知道升級(jí)后是不是又重新算了。
7F966890云天河的攻
7F966894云天河的防
7F966898云天河的速
7F96689C云天河的運(yùn)
7F9668A0云天河的靈
7F9673A4韓菱紗的攻
7F9673A8韓菱紗的防
7F9673BC韓菱紗的速
7F9673B0韓菱紗的運(yùn)
7F9673B4韓菱紗的靈
7F967EB8柳夢(mèng)璃的攻
7F967EBC柳夢(mèng)璃的防
7F967EC0柳夢(mèng)璃的速
7F967EC4柳夢(mèng)璃的運(yùn)
7F967EC8柳夢(mèng)璃的靈
7F9689CC慕容紫英的攻
7F9689D0慕容紫英的防
7F9689D4慕容紫英的速
7F9689D8慕容紫英的運(yùn)
7F9689DC慕容紫英的靈
還不肯定這個(gè)4個(gè)人物范圍是固定排列還是剩誰(shuí)就排在前面。
如果要真正能夠鎖定精,氣,神,則需要找到戰(zhàn)斗臨時(shí)數(shù)據(jù)地址生成的規(guī)律,鎖定了就可以。對(duì)了,如果HP鎖定后被一擊必殺打中(比如淮南王的奪魂)……不死亡(可以想到必殺的方程式不是,怪物攻擊輸出的值(顯示用)=人物的剩余血量,狀態(tài)=死亡(直接死亡);可能是怪物攻擊輸出的值=人物的剩余血量,人物的剩余血量=人物的剩余血量-怪物攻擊輸出的值,再if人物的剩余血量=0then狀態(tài)=死亡)
地卷待解決的問(wèn)題
1。對(duì)于64位系統(tǒng)而言,是否地址會(huì)隨著變更?
2。在32位對(duì)于XP和VISTA的內(nèi)存地址是否會(huì)變更?(可能性?。?br />
3。戰(zhàn)斗時(shí)的內(nèi)存地址范圍是多少,只見(jiàn)是否有個(gè)規(guī)律?
4。在7F966880修改的數(shù)值,人物升級(jí)后是在7F966880得值上修改加成還是被替換掉?
5。游戲的地址是不是固定的?