※這是TWMS146.1的位置,現在版本是TWMS146.2
TWMS146.1 取得最大經驗值位置分析
乖徒弟小蔥蔥文章原文網址:按我
006A345C | push eax | 等級 | |
006A345D | call 006a33e4 | 取得升等所需經驗值 | |
006A3462 | sub eax,[esp+0c] | 估計[esp=0c]是目前經驗值,這樣一來eax = 所需經驗值-目前經驗值 = 還需要多少經驗值 | |
006A3466 | pop ecx | 因為查詢升等所需經驗值的CALL是__cdecl的CALL (堆疊中放入參數,要由呼叫端清除堆疊內的參數) | |
006A33E4 | push [esp+04] | CALL的參數(等級) | |
006A33E8 | mov ecx,00d3d180 | 經驗值表的位置 | |
006A33ED | call 006a33c4 | 查詢經驗值表 | |
006A33F2 | ret | 返回 | |
006A33C4 | mov eax,[esp+04] | 取得參數(等級)到EAX | |
006A33C8 | cmp eax,000000c8 | 判斷[等級]和200 | |
006A33CD | jg 006a33dc | 如果等級大於200則跳到006a33dc | |
006A33CF | cmp eax,01 | 判斷[等級]和1 | |
006A33D2 | jnl 006a33d7 | 如果等級大於等於1跳到006a33d7 | |
如果等級為0或是負數那就設定等級為一,這是設定Eax=1的最簡短寫法,只要3Bytes | |||
006A33D4 | xor eax,eax | Eax = 0 | |
006A33D6 | inc eax | Eax ++ | |
006A33D7 | mov eax,[ecx+eax*4] | 查表(表在00d3d180) | |
006A33DA | jmp 006a33e1 | 跳到返回 | |
006A33DC | mov eax,7fffffff | 最大經驗值為2147483647(4Bytes有號整數最大值) | |
006A33E1 | ret 0004 | 返回 |
寫得好清楚哦 感謝您 :)
回覆刪除板大你好!
回覆刪除我想請問一下這是什麼??
(寫得很清楚,但小弟剛入門而已還不太懂(期實是頭腦笨笨的))