:004BEDC8 55 push ebp
:004BEDC9 8BEC mov ebp, esp
:004BEDCB 83C4F4 add esp, FFFFFFF4
:004BEDCE 8955F8 mov dword ptr [ebp-08], edx
:004BEDD1 8945FC mov dword ptr [ebp-04], eax
:004BEDD4 8B45F8 mov eax, dword ptr [ebp-08]
:004BEDD7 48 dec eax
:004BEDD8 83E833 sub eax, 00000033
:004BEDDB 7311 jnb 004BEDEE ; 大于52级,指定一个固定的经验值
:004BEDDD A160A54E00 mov eax, dword ptr [004EA560] ;经验值对应表的位置:004E9CCC
:004BEDE2 8B55F8 mov edx, dword ptr [ebp-08]
:004BEDE5 8B4490FC mov eax, dword ptr [eax+4*edx-04] ;取经验值对应表
:004BEDE9 8945F4 mov dword ptr [ebp-0C], eax
:004BEDEC EB07 jmp 004BEDF5
:004BEDEE C745F4FFFFFFFF mov [ebp-0C], FFFFFFFF ;就是这个,把它改成其他值
:004BEDF5 8B45F4 mov eax, dword ptr [ebp-0C]
:004BEDF8 8BE5 mov esp, ebp
:004BEDFA 5D pop ebp
:004BEDFB C3 ret
在004BEDEE处,经验直接被填充,一般的朋友是将这里修改成为一个值,52级后经验就都是这一个值了,我改动了一下,但是现在服务器能过52级的很多了,始终一个值的话高了也不好低了也不好,所以我改动了一下,将:004BEDEE改成了:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BEDDB(C)
|
:004BEDEE E973B1FCFF jmp 00489F66 ‘这里是跳转到一个废段上去了,反正我的M2那里是没用的段,正好废物利用一下哈
:004BEDF3 90 nop
:004BEDF4 90
然后看看核心代码,其实就几条语句就ok:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BEDEE(U)
|
:00489F66 69C000E1F505 imul eax, 05F5E100 将eax乘1亿,eax就是上面程序相减的结果,例如你是53级,那减了51后eax就是2,再乘1亿就是2亿了
:00489F6C 0500C2EB0B add eax, 0BEBC200 ’eax再加上一个基数我这里是2亿,这样这个时候的eax就是基数+倍数*倍,这个时候53级的经验就是4亿了
:00489F71 8945F4 mov dword ptr [ebp-0C], eax ‘写进去
:00489F74 E97C4E0300 jmp 004BEDF5 ’跳回刚才跳出的下段就是程序的处理段
上面的你只需要修改了基数和倍数就可以达到超过52后每级以一个基数累加倍数的功能了
不过,强调一点,因为数据格式的原因,经验在最后不能超过42亿,就是说基数+倍数最后的经验不能超过42亿,按照我的改法在过了92级后,93级的时候,需要的经验将特别的低(92-52)*1亿+2亿=42亿,但是可以在上面加一个判断,然后指定一个过了多少多的经验,由于可能各个人的改法不一样,所以我没有改,不过我提供一个思路,用我这个做例子在原由的基础上,这样写:
CMP EAX, 5D
JGE 下段地址
imul eax, 05F5E100
add eax, 0BEBC200
mov dword ptr [ebp-0C], eax
jmp 004BEDF5
这里是上段跳到的地址
mov [ebp-0C], 一个固定的值
JMP 004BEDF5
声明:本文系互联网搜索而收集整理,不以盈利性为目的,文字、图文资料源于互联网且共享于互联网。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。