文章目錄
- 挑戰
- 說明
- 內容
- 一、任務實作工具:
- 游戲:植物大戰僵尸中文版
- 十六進制編輯器:Hex Editor Neo
- 二、任務實作程序:
- 1、修改關卡
- 2、修改金幣
- 3、修改用戶名
- 4、修改局內文字資訊
- 總結
挑戰
有的玩家在玩游戲時,可能并不想?關?關地慢慢玩,?是希望可以直接跳到最后?關,或者從??指定的關卡開始,?如 經典的《植物?戰僵?》;再就是怎么能夠「開掛」,得到更多的?錢、更?的屬性、更強的道具,?如《三國志》系列,任何游戲都會保存玩家的進度和資料,不管是單機游戲還是?絡游戲都是如此,如果玩家能夠知道這些存檔資料保存在哪?,并且還能隨意修改存檔資訊,那是不是就能達到「開掛」的?的呢? 答案當然是肯定的,因為只要知曉計算機對?進制資料的處理機制,就能輕松做到這?點,
說明
- 了解?進制、?六進制對于計算機的意義
- 掌握?/七/?/?/??/?六等多種資料進制間的轉換
- 掌握如何在windows及linux中修改并保存?進制?件
內容
- 修改《植物?戰僵?》的存檔?件,將?個新?戶的進度直接修改到5-2關,?錢(能量)直接修改到10000
- 修改植物大戰僵尸內的文字提示資訊以及植物的名稱
一、任務實作工具:
游戲:植物大戰僵尸中文版
下載鏈接:
鏈接: https://pan.baidu.com/s/1u7P2h4uquBAf2MSPvJb2Kw.
提取碼:xhzy
十六進制編輯器:Hex Editor Neo
下載鏈接:
鏈接:https://pan.baidu.com/s/1HXnADxXHWrEtMGxJFWTuUA .
提取碼:xhzy
二、任務實作程序:
前三個任務會用到十六進制編輯器來實作,在修改的的程序中涉及到的知識點為十進制資料與十六進制之間資料的相互轉換,
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++來修改文本檔案,只用記事本也可以完成編輯,以修改豌豆射手的資料為例,在游戲內的圖鑒中檢查資訊是否修改成功



總結
任務到這里就全部結束了,修改游戲資料在曾經是想都不敢想的,在剛開始看到任務時一度懷疑自己能否完成這樣的任務,便心一狠牙一咬踏上了完成任務的旅程,在完成任務的程序中自己才意識到之前自己被自己想象的困難打敗了,真正接觸到之后并沒有想象中的困難,在完成任務的程序中熟悉了資料進制之間的轉換,也明白了在計算機中如何保存二進制檔案,更重要的是信心上和動手實踐能力的提高,
還記著那句,人的一生中最輝煌的一天,并不是功成名就的那一天,而是在悲嘆和絕望中產生向上的力量,并勇敢去直面和接受挑戰的這一天,這是最大的轉折點,當你選擇去直面挑戰時,就已經注定了成功!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272326.html
標籤:其他
上一篇:課程總結第四周
