C1任務01之修改遊戲存檔的方法
挑戰
有的玩傢在玩遊戲時,可能並不想⼀關⼀關地慢慢玩,⽽是希望可以直接跳到最後⼀關,或者從⾃⼰指定的關卡開始,⽐如 經典的《植物⼤戰僵⼫》;再就是怎麼能夠「開掛」,得到更多的⾦錢、更⾼的屬性、更強的道具,⽐如《三國志》系列。任何遊戲都會保存玩傢的進度和數據,不管是單機遊戲還是⽹絡遊戲都是如此。如果玩傢能夠知道這些存檔數據保存在哪⾥,並且還能隨意修改存檔信息,那是不是就能達到「開掛」的⽬的呢? 答案當然是肯定的,因為隻要知曉計算機對⼆進制數據的處理機制,就能輕松做到這⼀點。
說明
- 瞭解⼆進制、⼗六進制對於計算機的意義
- 掌握⼆/七/⼋/⼗/⼗⼆/⼗六等多種數據進制間的轉換
- 掌握如何在windows及linux中修改並保存⼆進制⽂件
內容
- 修改《植物⼤戰僵⼫》的存檔⽂件,將⼀個新⽤戶的進度直接修改到5-2關,⾦錢(能量)直接修改到10000
- 修改植物大戰僵屍內的文字提示信息以及植物的名稱
一、任務實現工具:
遊戲:植物大戰僵屍中文版
下載鏈接:
鏈接: https://pan.baidu.com/s/1UJeERv_Qes6KMespuD8yGg
提取碼: h259
十六進制編輯器:Hex Editor Neo
下載鏈接:
鏈接: https://pan.baidu.com/s/1EyVB4AlBY14geaTzK45XOw
提取碼: e933
二、任務實現過程:
前三個任務會用到十六進制編輯器來實現,在修改的的過程中涉及到的知識點為十進制數據與十六進制之間數據的相互轉換。
PS:單機類遊戲數據都是存儲在本地,因此隻要在本地找到存儲數據的文件進行修改即可對遊戲內的數據進行修改
在所有任務開始前首先在下載好的植物大戰僵屍遊戲中新註冊一個賬號
(在這裡我起名為SJMDJGS【世紀末的架構師】)
1、修改關卡
修改關卡前首先要在本地找到存儲遊戲數據的文件
植物大戰僵屍的數據文件一般都是存儲在C盤中的ProgramData文件夾中
C:\ProgramData是個公用的被創建文件夾或文件存放的地方,這些文件夾或文件僅由創建者完整控制。打開ProgramData,可以看到很多和應用軟件同名的文件夾,裡面有一些軟件運行,或者修復卸載時候調用的一些文件,生成的一些記錄也存放在這裡。默認是隱藏的,不可刪除的
文件路徑: C:\ProgramData\PopCap Games\PlantsVsZombies
來到這裡以後會看到有兩個文件夾,點擊下方存儲用戶數據的userdata文件夾
點擊進入存儲用戶數據的文件夾以後會發現有兩個.dat格式的文件,其中user1.dat文件中存儲著關卡數據和金幣道具等信息
將user1.dat文件拖到Hex Editor Neo中,不難發現第四列存儲的數字為1其餘為0,所以進行是否第四列中的十六進制數據代表著關卡的信息
在遊戲中通關到第三關以後再將user1.dat文件拖入Hex Editor Neo中會發現之前第四列下的數據已經由最初的01變成瞭03,因此說明第四列下的十六進制數據是用來描述關卡情況
在植物大戰僵屍遊戲中每10小關為一個大關,所以要將關卡修改到第5-2關對應的十進制數據為42,將其轉換為十六進制數據為2a,在Hex Editor Neo中將03改為2a後重新進入遊戲會發現關卡跳到瞭第5-2關。
2、修改金幣
在修改瞭關卡以後會發現遊戲界面內自動出現瞭商店等組件,此時我們點擊商店以後會發現金幣為0,現在開始修改金幣
當通關獲得一定數量的金幣後會發現第八列下的數據發生瞭變化,因此猜測第八列下的十六進制數據為記錄金幣數量的信息,將這裡的數據修改為ff,重新進入遊戲查看金幣的數量是否有發生變化
重新進入遊戲後發現金幣數量發生瞭變化並且為2550,因為ff對應的十進制數據為255,因此證明植物大戰僵屍中金幣的規則為十六進制對應的十進制數據 * 10
因為遊戲中10000金幣對應的十進制數據為1000,1000(10)對應的十六進制數據為3e8,在Hex Editor Neo中將第八列和第九列
中的數據分別改為3e、80後重新進入遊戲會發現金幣的數量並不是預想的10000,而是328300
由此猜測第九列的數據為高位,並不是按照慣性思維從第八列開始依次排列,重新在Hex Editor Neo中把第八列和第九列的數據分別改為e8、03,再次進入遊戲後發現商城中金幣數量變為瞭10000
3、修改用戶名
之前修改關卡和金幣數量時都是在user1.dat中修改,修改用戶名則是在另一個users.dat文件中進行修改,將users.dat拖入到Hex Editor Neo中會發現從第08列到第0e列中的對應的十六進制數據轉換為十進制數據以後的值恰好對應ASCII碼中的SJMDJGS(世紀末的架構師),與遊戲中的用戶名對應,因此假設第08列到第0e列的數據對應為用戶名,將第08列到第0e列的數據分別修改為46(16)(對應十進制數據為70)、58(16)(對應十進制數據為88)、44(16)(對應十進制數據為68)、48(16)(對應十進制數據為72)、4c(16)(對應十進制數據為77)、52(16)(對應十進制數據為82)、第0e列改為00,如果假設正確重新進入遊戲後用戶的名稱則修改為FXDHLR(飛翔的荷蘭人)
4、修改局內文字信息
修改局內文字信息不需要用到十六進制編輯器,隻需要找到遊戲的安裝路徑,找到其中的properties文件夾,修改該文件夾中的LawnStrings.txt文件即可
在這裡我使用的是notepad++來修改文本文件,隻用記事本也可以完成編輯。以修改豌豆射手的數據為例,在遊戲內的圖鑒中檢查信息是否修改成功
總結
任務到這裡就全部結束瞭,修改遊戲數據在曾經是想都不敢想的,在剛開始看到任務時一度懷疑自己能否完成這樣的任務,便心一狠牙一咬踏上瞭完成任務的旅程,在完成任務的過程中自己才意識到之前自己被自己想象的困難打敗瞭,真正接觸到之後並沒有想象中的困難。在完成任務的過程中熟悉瞭數據進制之間的轉換,也明白瞭在計算機中如何保存二進制文件,更重要的是信心上和動手實踐能力的提高。
還記著那句,人的一生中最輝煌的一天,並不是功成名就的那一天,而是在悲嘆和絕望中產生向上的力量,並勇敢去直面和接受挑戰的這一天。這是最大的轉折點,當你選擇去直面挑戰時,就已經註定瞭成功!
到此這篇關於C1任務01之修改遊戲存檔的文章就介紹到這瞭,更多相關修改遊戲存檔內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Editplus和Notepad++哪個好用?特色功能詳細對比
- Linux之CRLF/CR/LF等回車換行符的問題
- UltraEdit編輯器免費激活方法
- C語言中反斜杠的作用及說明
- 無人深空與在廢墟上重建羅馬的人們