回复 #95 norton 的帖子
我把原作者的代码贴上,看有办法解除BUG不.
诱惑法术的修改,可控制敌军一定回合
修改处一.
0044A4C9 MOV BYTE PTR SS:[EBP-8],7F
修改处二.
00406710 /$ 55 PUSH EBP
00406711 |. 8BEC MOV EBP,ESP
00406713 33D2 XOR EDX,EDX
00406715 8A51 05 MOV DL,BYTE PTR DS:[ECX+5]
00406718 80FA 03 CMP DL,3
0040671B 75 02 JNZ SHORT aTest.0040671F
0040671D B2 00 MOV DL,0
0040671F 33C0 XOR EAX,EAX
00406721 83FA 02 CMP EDX,2
00406724 0F9CC0 SETL AL
00406727 |. 8BE5 MOV ESP,EBP
00406729 |. 5D POP EBP
0040672A \. C3 RETN
修改处三
0044E636 CMP DWORD PTR SS:[EBP-34], 73 ;本来只检查前23人中的可控制人员.改为全部检查
修改处四
0044EDE8 |> \C645 FC 00 MOV BYTE PTR SS:[EBP-4],0
0044EDEC |. EB 08 JMP SHORT aTest.0044EDF6
0044EDEE 8A45 FC MOV AL,BYTE PTR SS:[EBP-4]
0044EDF1 04 01 ADD AL,1
0044EDF3 8845 FC MOV BYTE PTR SS:[EBP-4],AL
0044EDF6 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0044EDF9 81E1 FF000000 AND ECX,0FF
0044EDFF 83F9 73 CMP ECX,73 ;原为23
0044EE02 7D 30 JGE SHORT aTest.0044EE34
0044EE04 6BC9 24 IMUL ECX,ECX,24
0044EE07 81C1 502C4B00 ADD ECX,aTest.004B2C50
0044EE0D 8079 05 02 CMP BYTE PTR DS:[ECX+5],2
0044EE11 74 1F JE SHORT aTest.0044EE32 ;若是敌军,则跳走不处理.
0044EE13 90 NOP
0044EE14 90 NOP
0044EE15 90 NOP
0044EE16 |. E8 BBD9FEFF |CALL aTest.0043C7D6
0044EE1B |. 8B4D FC |MOV ECX,DWORD PTR SS:[EBP-4]
0044EE1E |. 81E1 FF000000 |AND ECX,0FF
0044EE24 |. 6BC9 24 |IMUL ECX,ECX,24
0044EE27 |. 81C1 502C4B00 |ADD ECX,aTest.004B2C50
0044EE2D |. E8 43DBFEFF |CALL aTest.0043C975
0044EE32 |.^ EB BA \JMP SHORT aTest.0044EDEE
修改处五 .去除诱惑法术的攻击性
00440757 |. E8 4EB8FFFF CALL ATest1.0043BFAA
0044075C 807D 10 14 CMP BYTE PTR SS:[EBP+10],14 ;判断是否为诱惑
00440760 75 02 JNZ SHORT ATest1.00440764
00440762 33C0 XOR EAX,EAX ;如果是伤害清零.
00440764 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
00440767 6A 02 PUSH 2
00440769 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]
0044076C 8B48 10 MOV ECX,DWORD PTR DS:[EAX+10]
0044076F 2B4D E8 SUB ECX,DWORD PTR SS:[EBP-18]
00440772 51 PUSH ECX
00440773 FF70 10 PUSH DWORD PTR DS:[EAX+10]
00440776 3E:FF75 F0 PUSH DWORD PTR DS:[EBP-10]
0044077A 8345 EC 14 ADD DWORD PTR SS:[EBP-14],14
0044077E 90 NOP
0044077F |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
修改处六
0043C7F6 jmp 004CE201 ;跳到新位置进行武将是否摆脱诱惑的处理.
新位置代码
004CE201 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; 武将战场内存索引
004CE204 33D2 XOR EDX,EDX
004CE206 8A51 04 MOV DL,BYTE PTR DS:[ECX+4]
004CE209 8A82 00F14C00 MOV AL,BYTE PTR DS:[EDX+4CF100] ; 诱惑状态,为0表示正常,否则就是将在哪回合摆脱诱惑
004CE20F 3C 00 CMP AL,0
004CE211 74 31 JE SHORT aTest.004CE244
004CE213 3805 0A3D4B00 CMP BYTE PTR DS:[4B3D0A],AL
004CE219 72 29 JB SHORT aTest.004CE244
004CE21B C682 00F14C00 0>MOV BYTE PTR DS:[EDX+4CF100],0 ; 标记清零
004CE222 C641 05 02 MOV BYTE PTR DS:[ECX+5],2
004CE226 C641 0E 01 MOV BYTE PTR DS:[ECX+E],1
004CE22A 68 88000000 PUSH 88
004CE22F 6A 06 PUSH 6
004CE231 52 PUSH EDX
004CE232 E8 6804F7FF CALL aTest.0043E69F
004CE237 83C4 0C ADD ESP,0C
004CE23A B9 083D4B00 MOV ECX,aTest.004B3D08
004CE23F E8 46C6F7FF CALL aTest.0044A88A
004CE244 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE247 E8 E4FDF4FF CALL aTest.0041E030
004CE24C - E9 ADE5F6FF JMP aTest.0043C7FE ;跳回去原代码处.
修改处七
0042323F |. E8 668D0100 |CALL ATest1.0043BFAA ; \ATest1.0043BFAA
00423244 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00423247 81E1 FF000000 AND ECX,0FF
0042324D 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
00423250 89848A 840000>MOV DWORD PTR DS:[EDX+ECX*4+84],EAX
00423257 83F8 00 CMP EAX,0
0042325A - 0F85 A0AD0A00 JNZ 004CE251 ;如果伤害值不为0表示攻击成功.跳到新代码处进行处理
00423260 90 NOP
00423261 90 NOP
00423262 90 NOP
00423263 90 NOP
00423264 90 NOP
00423265 90 NOP
00423266 90 NOP
00423267 90 NOP
00423268 90 NOP
00423269 90 NOP
0042326A 90 NOP
0042326B 90 NOP
0042326C 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
新位置代码
004CE251 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE254 8A10 MOV DL,BYTE PTR DS:[EAX] ; 法术编号
004CE256 80FA 14 CMP DL,14
004CE259 - 0F85 2350F5FF JNZ ATest1.00423282 ; 若不是诱惑则跳回原处
004CE25F 33C9 XOR ECX,ECX
004CE261 8A48 0C MOV CL,BYTE PTR DS:[EAX+C]
004CE264 6BC9 24 IMUL ECX,ECX,24
004CE267 81C1 502C4B00 ADD ECX,ATest1.004B2C50 ; 被攻方内存索引
004CE26D 8B01 MOV EAX,DWORD PTR DS:[ECX]
004CE26F 66:3B05 966C490>CMP AX,WORD PTR DS:[496C96]
004CE276 75 1B JNZ SHORT ATest1.004CE293
004CE278 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 如果是敌主将,那么伤害值清零.并跳转到原攻击失败代码处
004CE27B 25 FF000000 AND EAX,0FF
004CE280 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE283 C78481 84000000>MOV DWORD PTR DS:[ECX+EAX*4+84],0 ; 伤害清0
004CE28E - E9 D94FF5FF JMP ATest1.0042326C ; 跳到原攻击失败代码处
004CE293 8079 05 02 CMP BYTE PTR DS:[ECX+5],2
004CE297 ^ 72 DF JB SHORT ATest1.004CE278 ; 若为我军和友军,也是攻击失败
004CE299 33D2 XOR EDX,EDX
004CE29B 8A51 04 MOV DL,BYTE PTR DS:[ECX+4]
004CE29E 80BA 00F14C00 0>CMP BYTE PTR DS:[EDX+4CF100],0 ; 正常状态是0.若不是0,则为摆脱诱惑的回合数
004CE2A5 ^ 75 D1 JNZ SHORT ATest1.004CE278 ; 如果当前已被诱惑,则攻击失败
004CE2A7 C641 05 03 MOV BYTE PTR DS:[ECX+5],3 ; 下面是成功的处理. 部队属性改为3
004CE2AB C641 0E 07 MOV BYTE PTR DS:[ECX+E],7 ; 可受我方控制
004CE2AF A0 0A3D4B00 MOV AL,BYTE PTR DS:[4B3D0A] ; 当前回合数
004CE2B4 04 02 ADD AL,2 ; 两回合后摆脱诱惑
004CE2B6 8882 00F14C00 MOV BYTE PTR DS:[EDX+4CF100],AL
004CE2BC 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CE2BF 25 FF000000 AND EAX,0FF
004CE2C4 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE2C7 C78481 84000000>MOV DWORD PTR DS:[ECX+EAX*4+84],0 ; 伤害值归0,因为现在的诱惑不是伤害性法术了
004CE2D2 - E9 AB4FF5FF JMP ATest1.00423282 ; 则回原处
[ 本帖最后由 norton 于 2009-5-15 09:29 编辑 ]
附件:
[全部代码]
特效.rar (2009-5-15 09:29, 16.72 K)
该附件被下载次数 195
|