标题: 6.1版exe策略免疫兵种的BUG及修复
性别:女-离线 贝莉卡

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 118
编号 447142
注册 2011-10-15


发表于 2021-2-24 21:25 资料 短消息 只看该作者
6.1版exe策略免疫兵种的BUG及修复

按理说,如果某兵种策略免疫,那么所有非必中策略对他的命中率应该是0%(必中策略,例如加血,是不免疫的)
但是实际上会发现,有些策略的命中率是1%。经过调试,原因如下:

0043B8D2  |> \8B4D E4          MOV ECX,DWORD PTR SS:[EBP-1C]
0043B8D5  |.  E8 36ADFCFF      CALL Ekd5.00406610
0043B8DA  |.  3C 0B            CMP AL,0B
0043B8DC  |.  75 05            JNZ SHORT Ekd5.0043B8E3
0043B8DE  |.  33C0             XOR EAX,EAX
0043B8E0  |.  8945 F0          MOV DWORD PTR SS:[EBP-10],EAX        //这里是对于指定兵种,命中率赋值0%
0043B8E3  |>  FF75 E4          PUSH DWORD PTR SS:[EBP-1C]
0043B8E6  |.  FF75 F0          PUSH DWORD PTR SS:[EBP-10]
0043B8E9  |.  FF75 D8          PUSH DWORD PTR SS:[EBP-28]
0043B8EC  |.  FF75 E8          PUSH DWORD PTR SS:[EBP-18]
0043B8EF  |.  E8 FAD5FCFF      CALL Ekd5.00408EEE                //但是这个函数又会把0%修正成1%
0043B8F4  |.  8945 F0          MOV DWORD PTR SS:[EBP-10],EAX

解决方案就是把两段代码顺序交换一下:
0043B8D2      FF75 E4          PUSH DWORD PTR SS:[EBP-1C]
0043B8D5      FF75 F0          PUSH DWORD PTR SS:[EBP-10]
0043B8D8      FF75 D8          PUSH DWORD PTR SS:[EBP-28]
0043B8DB      FF75 E8          PUSH DWORD PTR SS:[EBP-18]
0043B8DE      E8 0BD6FCFF      CALL Ekd5.00408EEE
0043B8E3      8945 F0          MOV DWORD PTR SS:[EBP-10],EAX
0043B8E6      8B4D E4          MOV ECX,DWORD PTR SS:[EBP-1C]
0043B8E9      E8 22ADFCFF      CALL Ekd5.00406610
0043B8EE      3C 0B            CMP AL,0B
0043B8F0      75 05            JNZ SHORT Ekd5.0043B8F7
0043B8F2      33C0             XOR EAX,EAX
0043B8F4      8945 F0          MOV DWORD PTR SS:[EBP-10],EAX

这里修改过之后,就不能再用形象指定器修改策略免疫的兵种了
如果要改,以后还要在OB里改


顶部

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




当前时区 GMT+8, 现在时间是 2024-12-19 01:06
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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