C1任務01之修改游戲存檔的方法
挑戰(zhàn)
有的玩家在玩游戲時,可能并不想⼀關⼀關地慢慢玩,⽽是希望可以直接跳到最后⼀關,或者從⾃⼰指定的關卡開始,⽐如 經典的《植物⼤戰(zhàn)僵⼫》;再就是怎么能夠「開掛」,得到更多的⾦錢、更⾼的屬性、更強的道具,⽐如《三國志》系列。任何游戲都會保存玩家的進度和數(shù)據,不管是單機游戲還是⽹絡游戲都是如此。如果玩家能夠知道這些存檔數(shù)據保存在哪⾥,并且還能隨意修改存檔信息,那是不是就能達到「開掛」的⽬的呢? 答案當然是肯定的,因為只要知曉計算機對⼆進制數(shù)據的處理機制,就能輕松做到這⼀點。
說明
- 了解⼆進制、⼗六進制對于計算機的意義
- 掌握⼆/七/⼋/⼗/⼗⼆/⼗六等多種數(shù)據進制間的轉換
- 掌握如何在windows及l(fā)inux中修改并保存⼆進制⽂件
內容
- 修改《植物⼤戰(zhàn)僵⼫》的存檔⽂件,將⼀個新⽤戶的進度直接修改到5-2關,⾦錢(能量)直接修改到10000
- 修改植物大戰(zhàn)僵尸內的文字提示信息以及植物的名稱
一、任務實現(xiàn)工具:
游戲:植物大戰(zhàn)僵尸中文版
下載鏈接:
鏈接: https://pan.baidu.com/s/1UJeERv_Qes6KMespuD8yGg
提取碼: h259
十六進制編輯器:Hex Editor Neo
下載鏈接:
鏈接: https://pan.baidu.com/s/1EyVB4AlBY14geaTzK45XOw
提取碼: e933
二、任務實現(xiàn)過程:
前三個任務會用到十六進制編輯器來實現(xiàn),在修改的的過程中涉及到的知識點為十進制數(shù)據與十六進制之間數(shù)據的相互轉換。
PS:單機類游戲數(shù)據都是存儲在本地,因此只要在本地找到存儲數(shù)據的文件進行修改即可對游戲內的數(shù)據進行修改
在所有任務開始前首先在下載好的植物大戰(zhàn)僵尸游戲中新注冊一個賬號
(在這里我起名為SJMDJGS【世紀末的架構師】)
1、修改關卡
修改關卡前首先要在本地找到存儲游戲數(shù)據的文件
植物大戰(zhàn)僵尸的數(shù)據文件一般都是存儲在C盤中的ProgramData文件夾中
C:\ProgramData是個公用的被創(chuàng)建文件夾或文件存放的地方,這些文件夾或文件僅由創(chuàng)建者完整控制。打開ProgramData,可以看到很多和應用軟件同名的文件夾,里面有一些軟件運行,或者修復卸載時候調用的一些文件,生成的一些記錄也存放在這里。默認是隱藏的,不可刪除的
文件路徑: C:\ProgramData\PopCap Games\PlantsVsZombies
來到這里以后會看到有兩個文件夾,點擊下方存儲用戶數(shù)據的userdata文件夾
點擊進入存儲用戶數(shù)據的文件夾以后會發(fā)現(xiàn)有兩個.dat格式的文件,其中user1.dat文件中存儲著關卡數(shù)據和金幣道具等信息
將user1.dat文件拖到Hex Editor Neo中,不難發(fā)現(xiàn)第四列存儲的數(shù)字為1其余為0,所以進行是否第四列中的十六進制數(shù)據代表著關卡的信息
在游戲中通關到第三關以后再將user1.dat文件拖入Hex Editor Neo中會發(fā)現(xiàn)之前第四列下的數(shù)據已經由最初的01變成了03,因此說明第四列下的十六進制數(shù)據是用來描述關卡情況
在植物大戰(zhàn)僵尸游戲中每10小關為一個大關,所以要將關卡修改到第5-2關對應的十進制數(shù)據為42,將其轉換為十六進制數(shù)據為2a,在Hex Editor Neo中將03改為2a后重新進入游戲會發(fā)現(xiàn)關卡跳到了第5-2關。
2、修改金幣
在修改了關卡以后會發(fā)現(xiàn)游戲界面內自動出現(xiàn)了商店等組件,此時我們點擊商店以后會發(fā)現(xiàn)金幣為0,現(xiàn)在開始修改金幣
當通關獲得一定數(shù)量的金幣后會發(fā)現(xiàn)第八列下的數(shù)據發(fā)生了變化,因此猜測第八列下的十六進制數(shù)據為記錄金幣數(shù)量的信息,將這里的數(shù)據修改為ff,重新進入游戲查看金幣的數(shù)量是否有發(fā)生變化
重新進入游戲后發(fā)現(xiàn)金幣數(shù)量發(fā)生了變化并且為2550,因為ff對應的十進制數(shù)據為255,因此證明植物大戰(zhàn)僵尸中金幣的規(guī)則為十六進制對應的十進制數(shù)據 * 10
因為游戲中10000金幣對應的十進制數(shù)據為1000,1000(10)對應的十六進制數(shù)據為3e8,在Hex Editor Neo中將第八列和第九列
中的數(shù)據分別改為3e、80后重新進入游戲會發(fā)現(xiàn)金幣的數(shù)量并不是預想的10000,而是328300
由此猜測第九列的數(shù)據為高位,并不是按照慣性思維從第八列開始依次排列,重新在Hex Editor Neo中把第八列和第九列的數(shù)據分別改為e8、03,再次進入游戲后發(fā)現(xiàn)商城中金幣數(shù)量變?yōu)榱?0000
3、修改用戶名
之前修改關卡和金幣數(shù)量時都是在user1.dat中修改,修改用戶名則是在另一個users.dat文件中進行修改,將users.dat拖入到Hex Editor Neo中會發(fā)現(xiàn)從第08列到第0e列中的對應的十六進制數(shù)據轉換為十進制數(shù)據以后的值恰好對應ASCII碼中的SJMDJGS(世紀末的架構師),與游戲中的用戶名對應,因此假設第08列到第0e列的數(shù)據對應為用戶名,將第08列到第0e列的數(shù)據分別修改為46(16)(對應十進制數(shù)據為70)、58(16)(對應十進制數(shù)據為88)、44(16)(對應十進制數(shù)據為68)、48(16)(對應十進制數(shù)據為72)、4c(16)(對應十進制數(shù)據為77)、52(16)(對應十進制數(shù)據為82)、第0e列改為00,如果假設正確重新進入游戲后用戶的名稱則修改為FXDHLR(飛翔的荷蘭人)
4、修改局內文字信息
修改局內文字信息不需要用到十六進制編輯器,只需要找到游戲的安裝路徑,找到其中的properties文件夾,修改該文件夾中的LawnStrings.txt文件即可
在這里我使用的是notepad++來修改文本文件,只用記事本也可以完成編輯。以修改豌豆射手的數(shù)據為例,在游戲內的圖鑒中檢查信息是否修改成功
總結
任務到這里就全部結束了,修改游戲數(shù)據在曾經是想都不敢想的,在剛開始看到任務時一度懷疑自己能否完成這樣的任務,便心一狠牙一咬踏上了完成任務的旅程,在完成任務的過程中自己才意識到之前自己被自己想象的困難打敗了,真正接觸到之后并沒有想象中的困難。在完成任務的過程中熟悉了數(shù)據進制之間的轉換,也明白了在計算機中如何保存二進制文件,更重要的是信心上和動手實踐能力的提高。
還記著那句,人的一生中最輝煌的一天,并不是功成名就的那一天,而是在悲嘆和絕望中產生向上的力量,并勇敢去直面和接受挑戰(zhàn)的這一天。這是最大的轉折點,當你選擇去直面挑戰(zhàn)時,就已經注定了成功!
到此這篇關于C1任務01之修改游戲存檔的文章就介紹到這了,更多相關修改游戲存檔內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
趣談Unicode、Ascii、utf-8、GB2312、GBK等編碼知識
這篇文章主要介紹了趣談Unicode、Ascii、utf-8、GB2312、GBK等編碼知識,文章寫的詼諧風趣,膜拜啊,需要的朋友可以參考下2014-07-07Archlinux?Timeshift系統(tǒng)備份與還原的操作方法
這篇文章主要介紹了Archlinux?Timeshift系統(tǒng)備份與還原的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01解決Visual Studio 2019本地不能運行Azure Functions
本文主要介紹了Visual Studio 2019本地不能運行Azure Functions的解決方方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06最新IntelliJ IDEA 2020.2永久激活碼(親測有效)
今天一大波朋友反饋idea2020激活碼失效的問題,小編快馬加鞭給大家找到解決方案,本文以IDEA 2020.2.4激活碼破解教程為例給大家詳細介紹,需要idea2020激活碼的朋友快來參考下本文吧2020-11-11