2017-7-11 20:57
a8686965
回复 #2 whh 的帖子
大神求问6.1引擎里增加一个能力档的步骤四,我死活找不到,增加能力后,显示错误,请问到底是偏移到什么位置了。求大神指点迷津啊
原文:步骤四:
在exe里调用这个函数的地方共有5处,就是兵种的五项能力成长了
图五:
图片附件: 05.jpg (2008-4-26 17:31, 6.06 K)
这五个地方作用是一样的,就是通过自定义函数返回的值去找到相应的字母位置以表示兵种某项能力档,现在我们先来看一下477Cf7:
00477CF7 |. E8 CDEFF8FF CALL GEkd5.00406CC9 ; 自定义函数,返回eax
00477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477D03 |. 52 PUSH EDX ; /Text
关键的位置在
0477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
假设兵种的某项能力为1(eax)
EAX*4+406A51=406A55,这个位置就是我们刚才输入了24个字节的起始位置,而它的值就是0048C4D0,也就是字母D在exe里的ob地址了,这样此兵种
的该项能力成长就显示为D了。
以下依葫芦画瓢,修改其余的4处,就可以了。
00477CF7 |. E8 CDEFF8FF CALL GEkd5.00406CC9
00477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477D30 |. E8 94EFF8FF CALL GEkd5.00406CC9
00477D35 |. 8B0485 516A40>MOV EAX,DWORD PTR DS:[EAX*4+406A51]
00477D69 |. E8 5BEFF8FF CALL GEkd5.00406CC9
00477D6E |. 8B0C85 516A40>MOV ECX,DWORD PTR DS:[EAX*4+406A51]
00477DA0 |. E8 24EFF8FF CALL GEkd5.00406CC9
00477DA5 |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477DD9 |. E8 EBEEF8FF CALL GEkd5.00406CC9
00477DDE |. 8B0485 516A40>MOV EAX,DWORD PTR DS:[EAX*4+406A51]