1.開啟Cheat Engine,變動數值找出現時耐力值的動態位置
2.變動耐力值查看閱讀該記憶體的位置
3.記下ESI的值,已知EBX固定,並得出耐力值的偏移值2*4+16C
5.需要抓下多個嘗試, 變動耐力值查看閱讀該記憶體的位置
10.利用指針測試是否正確
---------------------------------
---------------------------------
瑪奇各數值內存基址
G13S2一級基址:63FC1FC8
G15S2一級基址:6413b094或6413c6e4
G15S3一級基址: 6413c0e4 或6413d734
一級基址+偏移值50=二級位址
生命值:二級位址+偏移值16C
最大生命值:二級位址+偏移值178
魔力值:二級位址+偏移值170
最大魔力值:二級位址+偏移值17C
耐力值:二級位址+偏移值174
最大耐力值:二級位址+偏移值180
---------------------------------
腳本使用例子
//瑪奇G15S2 血魔耐的記憶體基址
base = &h6413b094
//一級基址+偏移值50=二級基址
Call ReadMemory (base,2,base2)
base2 = base2+&H50
Call ReadMemory (base2,2,addr)
//各項數值的偏移值
//二級基址+偏移值=各數值的位址
curentHPaddr=addr+&H16C
maxHPaddr=addr+&H178
curentMPaddr=addr+&H170
maxMPaddr=addr+&H17C
curentSPaddr=addr+&H174
maxSPaddr=addr+&H180
//調用子程序
Call check
//輸出數值
MessageBox "curentHP: "&curentHP&" "&"MaxHP: "&MaxHP&" "&"curentMP: "&curentMP&" "&"MaxMP: "&MaxMP&" "&"curentSP: "&curentSP&" "&"MaxSP: " & MaxSP
EndScript
//檢查數值的子程序
Sub check
Call ReadMemory (curentHPaddr,2,curentHP)
Call ReadMemory (maxHPaddr,2,MaxHP)
Call ReadMemory (curentMPaddr,2,curentMP)
Call ReadMemory (maxMPaddr,2,MaxMP)
Call ReadMemory (curentSPaddr,2,curentSP)
Call ReadMemory (maxSPaddr,2,MaxSP)
End Sub
您好,
回覆刪除抱歉,打擾了,
請問要學什麼才能看的懂這些?
感恩。
首先是組合語言,指示如 MOV,LEA 等,不用學太多,看得懂就好
回覆刪除其次是記憶體的位址,另外 ESI,ECX 等都是寄存器的名稱,裡面放了不同的16進數數值,加上一些運算就能找到相關的記憶體位址
最後,上面的看不懂也沒關係,只要知道了正確的記憶體位址就可以利用腳本進行不同的動作,最簡單實用的程式就是按鍵精靈,文中的"腳本使用例子"就是按鍵精靈的語句。
參考資料在這裡:http://www.yydzh.com/read.php?tid=575342
因為本來想說只做個備忘,沒做甚麼特別的說明抱歉嚕。
最後說明一下,這主要是用於按鍵精靈寫腳本時,透過查找記憶體的位址得知角色現在的數值,例如把腳本設定為 當 現有生命值/最大生命值 < 0.5 則 按H鍵,那麼當找到血量是49/100或以下的時候腳本就會自動喝紅水。
雖然還是不太懂,謝謝您提供的參考資料。
回覆刪除其實真正想知道的是...要做出您另外兩篇那類的東西,要學什麼... orz
只是不知道那個能不能問 (搔頭)
呃,另外兩篇嗎?那怎麼來了這篇說啦囧
刪除硬要說就是自學精神吧,那些PACK補丁是沒甚麼特別要學的,多去補丁區逛逛自然會懂,想入門給你看看這次文章吧:https://sites.google.com/a/wingkwong.edu.hk/test_page/
因為有人不愛人家問補丁的問題,也可能是自己太敏感了...
回覆刪除再者雖然一開始是想問關於補丁的,可是看到這篇突然很好奇了...
抱歉造成麻煩了,感恩。
入門文章沒有權限不能觀看,多謝撥空回覆 ^ ^
也沒甚麼麻不麻煩的,大家可能都是靠前人幫助成長的嘛
刪除我相信有禮貌地問大家都應該很樂意回答的
啊~!實在不好意思了,那個是新弄的平台我真的忘了調權限,對不起啦(巴