精確修改育碧遊戲平臺成就Spool文件以自定義成就解鎖日期(僅適用於12字節類型)
前言提示:
參考與應用本篇文章的前提條件是,你已完整閱讀下面這兩篇教程:
chrisevansbian的uplay全成就spool文件分享,全遊戲通用(附修改教程);
LeePich的[存檔管理]Uplay遊戲存檔對應的文件夾編號2025-05
並且一度自行使用HxD編輯或替換spool文件以解鎖成就。瞭解且能自行承擔一切風險。
信息強調:
第一、對於一個已解鎖並上雲的成就,你沒有任何手段能夠對它進行二次修改。因此,不要誤解文章標題的意思,本篇文章的操作對象是暫未解鎖的成就,並非所有,作用是幫助你自定義未解鎖成就的解鎖時間並解鎖該成就。
第二、要有效修改或替換一個遊戲的Spool文件,必須確保該Spool文件已經由客戶端自動生成。通過遊玩遊戲解鎖至少一個成就,你才能在Spool文件夾裏找到它。客戶端未生成相應Spool文件的情況下直接往文件夾裏面強塞一個是沒有用的,無法解鎖成就,無法上雲。
第三、在聯網狀態下啓動或退出遊戲,客戶端一定會對該遊戲進行成就上雲。關閉客戶端設置中的雲存儲功能不會影響成就上雲功能,你無法關閉成就上雲功能,除非斷網。
第四、客戶端任一遊戲的成就頁面只會在該遊戲每次成就上雲後更新。因此,你無法利用斷網的狀態,隨意修改或替換spool文件,指望能夠非常方便地直觀地看到該遊戲成就頁面的實時變化。
也就是說,自定義並解鎖一個成就,有且只有一次機會。
自制工具:
放在評論區!
這個工具包含日期時間生成和SPOOL數據生成這兩個主要功能。
原理詳解:
針對12字節類型的spool文件,我們知道,每一行的後5個字節儲存的是一個日期時間信息(例如:2022-09-12 08:25:11),這個日期時間是需要通過計算得到的,對於五個字節的varint編碼小端序存儲數據,即五個兩位數的十六進制數據,用下述五個符號指代:a, b, c, d, e. 其中,a, b, c, d這四個數據均在80-FF之間,e這個數據在00-7F之間,這是varint編碼的特徵。
1. 單個轉換:分別將a, b, c, d, e.轉換爲8位數二進制數據,去除二進制數據的首位數字(最高位)得到7位數二進制數據,將7位數二進制數據轉換爲十進制數據,最終得到如下五個十進制數據f, g, h, i, j.
2. 時間戳計算:f+g*2^7+h*2^14+i*2^21+j*2^28=p. 時間戳p值的單位是秒,以C9 B6 A9 C2 05這五個字節爲例,通過上述計算得到的p=1481268041秒。
3. 日期時間計算:育碧採用的是unix時間戳格式,該時間戳格式從北京時間的1970年1月1日08:00:00開始計時,我們利用網頁在線時間戳轉換工具,輸入p值秒數即可轉換成日期,得到當p=1481268041秒時,日期時間爲2016-12-09 15:20:41.
要自定義任一條成就的解鎖時間,就要利用p值反推得到a, b, c, d, e.
逆運算過程如下:
1. 日期時間轉時間戳得到p值2. p / 268435456 = j 餘 n
3. n / 2097152 = i 餘 m
4. m / 16384 = h 餘 k
5. k / 128 = g 餘 f
6. 將 f, g, h, i, j 轉換爲七位二進制,不足的向前補0
7. 給 f, g, h, i 前加1,j 前加0變爲八位二進制
8. 八位二進制轉兩位十六進制得到a, b, c, d, e.
使用示例1:
![]()
刺客信條編年史中國,我在2022年4月13日達成了首個成就,因爲不習慣這種橫版遊戲,斷斷續續玩了幾天就卸載了,現在把它下回來,用作演示,具體的18個成就信息如下:
![]()
![]()
![]()
查閱後確認刺客信條編年史中國的spool編號是1651,找到後用HxD打開1651.spool文件:
![]()
四行數據正好對應我已經解鎖的四個成就,注意看05列,該列從上往下依次是01(第1個成就)、08(第8個成就)、10(第16個成就)以及11(第17個成就)。
現在我要使用工具解鎖第13個成就,就是第3張圖的第1個太極圖標那個成就:Clean Mind. 我希望這個成就的解鎖日期時間是2022-04-30 21:24:43,把這個日期時間填入工具的日期時間轉編碼轉換框中,點擊開始轉換:
![]()
轉換完成後,在右側的編碼結果中,可以看到兩個表格,分別簡稱爲彙總表格和套用表格,前者在批量生成時便於檢查對應時間,後者則在批量生成時便於編輯和直接複製全部數據。在套用表格中間的05列中,設置了兩個選項,分是全部連續和全部自定義,前者只需你手動輸入第一行數據的序號,該列下面的所有數據就會自動依次連續填充,後者則需要你手動輸入每一行數據的序號。
由於我們只轉換了一行數據,選全部連續或全部自定義都行,只要在數字框裏填入13,它就會自動生成對應的兩位十六進制數據;
右下方點擊複製Spool表格,切到HXD窗口,左鍵點擊第二行末尾字節06的右側使鼠標光標於此閃爍,右鍵選擇插入式粘貼(爲什麼要插在第二行與第三行之間?因爲我是按照成就序號順序插入的,第13號成就自然就被放在了8和16之間了,這個隻影響美觀和秩序,實際上你把它插在哪行都沒問題),新增的第3行數據就是我們想要的結果。
修改後的1651.spooI如下圖所示:
![]()
保存並關閉HxD窗口;
運行遊戲,稍等一會從後臺打開育碧客戶端就可以看到,13號成就Clean Mind已經解鎖了,日期正是2022年4月30日:
![]()
使用示例2:
現在我要解鎖第9、10、11、12個成就,就是成就圖2紅色火柴人圖標那個成就的下面四個,從Faster Than The Flame到Master Of stealth.
我希望它們的解鎖日期依次是:
2022-04-29 19:35:32
2022-05-06 22:45:12
2022-04-28 21:24:43
2022-04-28 23:01:24
把這四個日期時間複製粘貼到工具的日期時間轉編碼批量處理框中執行轉換得到編碼結果,套用表格的05列下拉選項默認選用全部連續並自動爲第一行填入了數字序號1,把數字序號1改爲9,點擊表格右下角的複製spooI表格按鈕:
![]()
打開1651.spool文件,當前spool數據如下圖:
![]()
在HxD窗口,左鍵點擊第二行末尾字節06的右側使鼠標光標於此閃爍,右鍵選擇插入式粘貼,新增的四行數據就是我們想要的結果。
修改後的1651.spool如下圖所示:
![]()
保存並關閉HxD窗口;
退出或啓動遊戲,稍等一會打開育碧客戶端就可以看到,成就9-12均已解鎖,日期與我預設的日期完全對應:
![]()
使用示例3:
現在我要一次性解鎖所有18個成就。
這裏就要用到工具中的約束洗牌日期時間生成器了,輸入生成數量爲成就總數18,同時,我希望這18個成就的解鎖日期範圍在2022年4月13日至2022年5月6日之間,具體時間範圍雖然無關緊要,因爲成就解鎖不會顯示具體時間,但是我還是按照我的日常遊戲時間把它設置在19:32:54至23:56:02之間,約束洗牌參數設置爲3(這個算法實際上就是,先根據你設定的日期時間範圍均勻生成預定數量的日期時間條目,然後依次對每個條目進行隨機與其他條目替換位置的操作,同時約束每次替換時該條目可移動的最大位置距離,K值越小,越能保持整體日期時間序列趨勢,反之則更隨機化),然後點擊生成隨機日期時間(不喜歡可以一直點,直到看到順眼的條目列表),最後點擊右上角的複製結果:
![]()
切到SPOOL數據生成器中,在日期時間批量轉換欄裏粘貼結果,點擊開始批量轉換得到編碼結果,套用表格的05列下拉選項選用全部連續並自動爲第一行填入了數字序號1,不做改動,直接點擊表格右下角的複製spool表格按鈕:
![]()
打開1651.spool文件,當前spool數據如下圖:
![]()
在HXD窗口,左鍵點擊任意位置,CTRL+A全選,CTRL+V直接粘貼或右鍵選擇覆蓋式粘貼,這十八行數據就是我們想要的結果。
修改後的1651.spooI如下圖所示:
![]()
保存並關閉HxD窗口;
退出或啓動遊戲,稍等一會打開育碧客戶端就可以看到,所有成就均已解鎖。
我先前已經解鎖了八個成就,上圖與它們對應序數行的數據實際未能改變這八個已解鎖成就的解鎖日期信息,只有其餘十個新解鎖成就實現了對應的日期自定義:
![]()
![]()
![]()
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com
