高手进来帮我改下exe????(致命一击的改良)
如下:新引擎5.6
要求:
以原版曹操传为例,当攻击武将的士气大于等于被攻击武将的士气的3倍时,致命一击的机率为100%,必定致命一击,必定攻击伤害是150%。
士气再高,机率也是100%,伤害也是150%,个人认为有点浪费。
要求的效果:当致命一击的机率大于100时,致命一击的伤害为 致命一击伤害*致命一击机率。
比如A武将对B武将的普通攻击伤害是100,A武将对B武将的致命一击机率为110%,以前的最终伤害是150,我改良后就是100*150%*110%=165。
以下是godtype 发的资料:
致命一击的改良
以原版曹操传为例,当攻击武将的士气大于等于被攻击武将的士气的3倍时,致命一击的机率为100%,必定致命一击,必定攻击伤害是150%。
士气再高,机率也是100%,伤害也是150%,个人认为有点浪费。所以我就对致命一击作出小小的改良,当致命一击的机率大于100时,致命一击的伤害为 致命一击伤害*致命一击机率。
比如A武将对B武将的普通攻击伤害是100,A武将对B武将的致命一击机率为110%,以前的最终伤害是150,我改良后就是100*150%*110%=165。
具体的修改是:
00405D9B |. 6A 29 PUSH 29
00405D9D |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
00405DA0 |. 8B48 08 MOV ECX,DWORD PTR DS:[EAX+8]
00405DA3 |. E8 611C0000 CALL 00407A09
00405DA8 |. 85C0 TEST EAX,EAX
00405DAA |. 74 04 JE SHORT 00405DB0
00405DAC |. B0 64 MOV AL,64
00405DAE |. EB 3E JMP SHORT 00405DEE
00405DB0 |> 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
00405DB3 |. 6BC9 03 IMUL ECX,ECX,3
00405DB6 |. D1E9 SHR ECX,1
00405DB8 |. 394D FC CMP DWORD PTR SS:[EBP-4],ECX
00405DBB |. 72 15 JB SHORT 00405DD2
00405DBD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00405DC0 |. 2BC1 SUB EAX,ECX
00405DC2 |. 69C0 8C000000 IMUL EAX,EAX,8C
00405DC8 |. 33D2 XOR EDX,EDX
00405DCA |. F775 F8 DIV DWORD PTR SS:[EBP-8]
00405DCD |. 83C0 1E ADD EAX,1E
00405DD0 |. EB 1C JMP SHORT 00405DEE
00405DD2 |> 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
00405DD5 |. 394D FC CMP DWORD PTR SS:[EBP-4],ECX
00405DD8 |. 72 12 JB SHORT 00405DEC
00405DDA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00405DDD |. 2BC1 SUB EAX,ECX
00405DDF |. 6BC0 1C IMUL EAX,EAX,1C
00405DE2 |. 33D2 XOR EDX,EDX
00405DE4 |. F775 F8 DIV DWORD PTR SS:[EBP-8]
00405DE7 |. 83C0 02 ADD EAX,2
00405DEA |. EB 02 JMP SHORT 00405DEE
00405DEC |> B0 01 MOV AL,1
00405DEE |> 8BE5 MOV ESP,EBP
00405DF0 |. 5D POP EBP
00405DF1 \. C3 RETN
上面是致命一击机率的计算,我这里是改成了岳飞传的爆击率,再将100的上限去掉了。下面的才是伤害的计算。
00405E06 . 83EC 20 SUB ESP,20
00405EFB . E8 69FEFFFF CALL 00405D69 -----获取致命一击的机率
00405F00 . E9 12340000 JMP 00409317
(注:如果是STAR175带必杀的引擎,这里要加一条 MOV DWORD PTR SS:[EBP-20],0)
00409317 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
0040931A 3C 64 CMP AL,64
0040931C 76 02 JBE SHORT 00409320
0040931E . B0 64 MOV AL,64
00409320 > 25 FF000000 AND EAX,0FF
00409325 .^E9 DBCBFFFF JMP 00405F05
先将机率数值存入[EBP-20]里面,如果机率超过100,将机率改回100,接后面的机率测试函数;如果不超过100,直接接后面的机率测试函数。
00405F4B . 6BC0 03 IMUL EAX,EAX,3
00405F4E . 99 CDQ
00405F4F . 2BC2 SUB EAX,EDX
00405F51 . E9 D4330000 JMP 0040932A
0040932A > D1F8 SAR EAX,1
0040932C . 33C9 XOR ECX,ECX
0040932E . 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
00409331 83F9 64 CMP ECX,64
00409334 76 0C JBE SHORT 00409342
00409336 . 0FAFC1 IMUL EAX,ECX
00409339 . 33D2 XOR EDX,EDX
0040933B . B9 64000000 MOV ECX,64
00409340 . F7F1 DIV ECX
00409342 > 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00409345 .^E9 0CCCFFFF JMP 00405F56
计算最后的致命一击伤害。先取出存在[EBP-20]的数值,如果这个值不超过100就跳过,接回原来的;如果超过100,就在原来150%的伤害的基础上,再乘以这个数值
实际的测试效果,A武将士气286,B武将士气131,A武将攻击B武将,普通的伤害是116,按上面的爆击率计算出来的爆击率是126%,原来的最终伤害是177(174+3),改良后就变成了217(219-2)
[ 本帖最后由 972255103 于 2010-9-3 22:44 编辑 ]
附件:
新引擎.rar (2010-9-3 22:37, 241.26 K)
该附件被下载次数 132
|