标题: OD动态分析调试实例 -- 瓦崗(WaGan.wa)绝招伤害计算修改
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-12-8 21:29 资料 个人空间 短消息 看全部作者
查找、调试的思路是对了。但是没有理解好小管的绝招,也没有查清楚相关代码的用途。

QUOTE:

       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的引擎里面的必杀就在好多地方都加上了这个发动的测试,但是瓦岗的就等八岁来说明了,我没有认真查看过。


顶部

正在浏览此帖的会员 - 共 3 人在线




当前时区 GMT+8, 现在时间是 2025-2-15 08:19
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.008787 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP