查找、调试的思路是对了。但是没有理解好小管的绝招,也没有查清楚相关代码的用途。
00405F38 8B55 FC mov edx, dword ptr [ebp-4]
00405F3B 81E2 FF000000 and edx, 0FF
00405F41 8B45 F4 mov eax, dword ptr [ebp-C]
00405F44 8B8490 84000000 mov eax, dword ptr [eax+edx*4+84] ; 刚才存放物理伤害的地方
00405F4B 6BC0 03 imul eax, eax, 3 ; 取出物伤*3后存入EAX
00405F4E 99 cdq ; EAX符号扩展至EDX
00405F4F 2BC2 sub eax, edx ; EDX貌似总为0
00405F51 D1F8 sar eax, 1 ; 算术右移1位, 符号位不变
00405F53 8B4D FC mov ecx, dword ptr [ebp-4]
00405F56 81E1 FF000000 and ecx, 0FF
00405F5C 8B55 F4 mov edx, dword ptr [ebp-C]
00405F5F 89848A 84000000 mov dword ptr [edx+ecx*4+84], eax ; 将加成后的物伤保存回原位
按F7 单步步入下一条指令, 光标停在: 00405F66 8B45 F4 mov eax, dword ptr [ebp-C]
看数据窗:
00492874 2D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 $...............
等于十进制: 45
F9继续运行游戏, <管毅>对敌方武将放出[苍龙过阵枪], 打出45 点的伤害
点数据窗的2D位置, 右键 ==> 断点 ==> 删除内存断点(M)
总结: 原绝招伤害 = 物理攻击伤害 * 3 / 2
要修改绝招伤害, 只要修改00405F4B 处开始的指令即可
看一下大白的这帖:
http://www.xycq.net/forum/thread-161663-1-1.html
上面引用的代码是所有引擎中都有的爆击150%伤害效果,不是对应绝招的,包括苍龙过阵枪在内的个别绝招才有爆击效果。所以如果按照LZ的改法,会连其他人的爆击也一并改掉。真正要修改绝招的伤害,还要加上绝招发动的判断测试,例如STAR的引擎里面的必杀就在好多地方都加上了这个发动的测试,但是瓦岗的就等八岁来说明了,我没有认真查看过。