上游戲,開CE,附加進程——直接開始正題。
首先百度一下金手指代碼,這個會在后期給予我們巨大的幫助。
截圖太長,所以用文本方式列出來,如下:
079E-01-03 透明無敵
07FA-01-09 時間
0756-01-02 子彈
079F-01-09 無敵
0754-01-02 大小
075A-01-09 生命
0704-01-01 超能力<00水中大跳,01空中游泳>
0754-01-FF 上穿墻問題<00-FF,值越大穿墻越輕松>
079E-01-01 隱身<00正常,01隱身>
079F-01-01 保護<00肉體,01金身>
07FA-01-01 時間鎖定<00正常,01鎖定>
0484-01-00 踩壞蛋的分數<00-10,10為1UP>
0706-01-FF 跳躍問題<00-40,值越大跳躍越輕松>
076A-01-01 周目數(00世界一,01世界二)
0781-01-02 行走樣式<00正常,01飛毛腿,02溜冰>
0786-01-00 彈簧質量<00優質,01劣質,02報廢>
0791-01-10 體質<00-09,10刀槍不入但刺猬、食人花、火、錘子等除外>
0797-01-FF 敵人狀態<00動態,FF僵硬>
079E-01-01 隱身<00正常,01隱身>
07FA-01-01 時間鎖定<00正常,01鎖定>
0754-01-FF 上穿墻
然后我們通過CE來查找這些地址在游聚游戲平臺上,對應的真實地址。
肯定要通過容易自己控制變化的數值來尋找,原因不多說了,會用CE的人都知道為什么。
本文通過找生命數來進行。
對3進行搜索,結果太多。然后死掉一個人,再搜索2,結果有145個。再死掉一個人,搜搜1,此時結果就只有1個了。
雙擊它,添加到下面的地址列表中。
然后,是重點。千萬千萬不要試圖用“找出是什么訪問了這個地址”或者“找出是什么修改了這個地址”這種常規的方法。
因為CE只是win32匯編的內存地址搜索工具,而包括游聚游戲平臺在內的模擬器,是將原本6502匯編開發的游戲進行了
指令重寫,然后執行的,所以是無法用這種方法搜索到根本地址的。
并且在這里,如果按照修改exe游戲的方式去更改cmp或者jmp之類的,基本上直接把游戲平臺給崩潰掉。這里我們巧
妙的使用掃描指針的方式來進行。
從金手指代碼中找到生命數是075A,所以在內存瀏覽器中點工具-指針掃描,然后如下圖:
最大等級為什么是1,當然你也可以寫2,寫3,都能得到正確結果經驗告訴我,這個游戲上,寫1就足夠了。。我們肯
定期望用最少的指針地址來辦事。
搜索結果有很多,都是可以用的。我們就用第一個好了。
生命數地址:emulib3.dll + 47C1BC +75A
接下來事情就變得簡單多了。比如我要修改直接發射子彈,看金手指列表,子彈的地址是
0756-01-02

所以就這樣添加進去,可以看到不會發射子彈是0.
按照金手指代碼,最后要改成2。于是照著改,結果就成了。
在CE中改數值,操作不夠簡潔,尤其是正在玩的時候。所以我們做成修改器來用。
生命數應該允許玩家自己修改吧——

發射子彈的數值是固定的,就不用選上“允許用戶更改這個數值”了。
然后做一些相關的設置,最后生成。
做好的樣子是這樣的。
效果測試:
問:為什么用生命數沒用子彈能否發射狀態呢?
答:子彈狀態是2才能發射子彈的,如果按照常規方法肯定發射1,不能發射搜0.最后什么都得不到。
總結:現成的金手指代碼,給本文工作帶來了大量的方便,回避了CE不能搜索6502匯編的問題。
有些修改,比如跳關,是3個值控制的,讓用戶去記住每個關卡的3組值自己輸入,顯然不合適。
如果全部列出來,會使得修改成程序非常的長。
如果我們用下拉框,就需要用不太友好的lua來編寫代碼。并且有些地方,比如顯示boss的剩余血量,也是需要lua來寫的,非常不方便。
本文講的是模擬器游戲的修改。windows游戲修改有一篇很好的教程可以觀看:
http://www.52pojie.cn/thread-563694-1-1.html
下期講如何使用c語言編程游戲修改,包括命令提示符窗口方式,和界面化設計的方式。
本期重在金手指代碼如何用到模擬器游戲上,下期重在編程開發。
|