2010-2-23 11:53
武骧金星
[轉貼]zhangju新特效
真是可悲啊~这个帖子本来发在轩辕,现在只有传承社区才找得到,而且居然还要权限ORZ
[color=red]学会全部策略特效[/color],如果仅仅是我方武将使用很容易,若想让AI可以使用,共需要修改四个地方
[color=blue]00465DD7 JMP 004CE03E ; [color=red]点击策略命令的处理,显示出全部策略[/color]
0043E0DE jmp 004CE061 ; [color=red]显示命令列表时的处理,若有此特效的武将本来不会策略,那么"策略"命令按钮是灰色的.需修改此处[/color]
00465961 JE 004CE085 ; [color=red]查看武将信息的处理[/color]
0043845B jmp 004CE0AD ; [color=red]AI行动时,真正让AI具有此种特效的修改是此处.[/color]
[/color]PS:还有一处, 00420447 //这是用万能调试器控制非我方人员时,若此人有学会策略的特性,那么使用策略时可能会失败,我想真正作战时,没人会去控制非我方人员吧,这不是作弊吗? 所以就不改了
要注意的是,即使AI学会了全部策略,他也不一定使用学会的这些策略,比如有此特效的武将是骑兵,那么他会优先攻击敌人,等到实在没人打了才会使用策略.
[color=blue]004CE000 55 PUSH EBP ;[/color] [color=red]新函数,判断指定武将是否有学会所有策略的特性
[/color][color=blue]004CE001 8BEC MOV EBP,ESP
004CE003 81F9 00010000 CMP ECX,100 ; [color=red]会此特性的武将编号[/color]
004CE009 74 1F JE SHORT Ekd5.004CE02A
004CE00B 6BC9 48 IMUL ECX,ECX,48
004CE00E 81C1 681B4A00 ADD ECX,Ekd5.004A1B68
004CE014 8A41 2B MOV AL,BYTE PTR DS:[ECX+2B]
004CE017 3C 40 CMP AL,40 ; [color=red]会此特性的兵种[/color]
004CE019 74 0F JE SHORT Ekd5.004CE02A
004CE01B 6A 33 PUSH 33 ; [color=red]宝物特效编号[/color]
004CE01D E8 E799F3FF CALL Ekd5.00407A09
004CE022 85C0 TEST EAX,EAX
004CE024 75 04 JNZ SHORT Ekd5.004CE02A
004CE026 33C0 XOR EAX,EAX
004CE028 EB 05 JMP SHORT Ekd5.004CE02F
004CE02A B8 01000000 MOV EAX,1
004CE02F 8BE5 MOV ESP,EBP
004CE031 5D POP EBP
004CE032 C3 RETN
004CE03E 8B8D 98FEFFFF MOV ECX,DWORD PTR SS:[EBP-168] ; [color=red]点击策略命令的处理[/color]
004CE044 8B49 50 MOV ECX,DWORD PTR DS:[ECX+50]
004CE047 8B09 MOV ECX,DWORD PTR DS:[ECX]
004CE049 E8 B2FFFFFF CALL Ekd5.004CE000
004CE04E 85C0 TEST EAX,EAX
004CE050 - 0F85 977DF9FF JNZ Ekd5.00465DED
004CE056 8B95 C4FEFFFF MOV EDX,DWORD PTR SS:[EBP-13C]
004CE05C - E9 7C7DF9FF JMP Ekd5.00465DDD
004CE061 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C] ; [color=red]显示命令列表时的处理[/color]
004CE064 8B09 MOV ECX,DWORD PTR DS:[ECX]
004CE066 E8 95FFFFFF CALL Ekd5.004CE000
004CE06B 85C0 TEST EAX,EAX
004CE06D 74 07 JE SHORT Ekd5.004CE076
004CE06F C745 E8 0100000>MOV DWORD PTR SS:[EBP-18],1
004CE076 837D E8 00 CMP DWORD PTR SS:[EBP-18],0
004CE07A - 0F84 7000F7FF JE Ekd5.0043E0F0
004CE080 - E9 5F00F7FF JMP Ekd5.0043E0E4
004CE085 A1 04754B00 MOV EAX,DWORD PTR DS:[4B7504] ; [color=red]查看武将信息的处理[/color]
004CE08A 3E:8B0C85 F06C4>MOV ECX,DWORD PTR DS:[EAX*4+4B6CF0]
004CE092 E8 69FFFFFF CALL Ekd5.004CE000
004CE097 85C0 TEST EAX,EAX
004CE099 - 0F85 2C79F9FF JNZ Ekd5.004659CB
004CE09F 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
004CE0A2 81E2 FF000000 AND EDX,0FF
004CE0A8 - E9 BD78F9FF JMP Ekd5.0046596A
004CE0AD 8B4D A8 MOV ECX,DWORD PTR SS:[EBP-58] ; [color=red]AI方行动时[/color]
004CE0B0 51 PUSH ECX
004CE0B1 E8 C7DDF3FF CALL Ekd5.0040BE7D
004CE0B6 83C4 04 ADD ESP,4
004CE0B9 8BC8 MOV ECX,EAX
004CE0BB E8 40FFFFFF CALL Ekd5.004CE000
004CE0C0 85C0 TEST EAX,EAX
004CE0C2 - 0F85 FFA3F6FF JNZ Ekd5.004384C7
004CE0C8 8B4D A8 MOV ECX,DWORD PTR SS:[EBP-58]
004CE0CB E8 4085F3FF CALL Ekd5.00406610
004CE0D0 - E9 8EA3F6FF JMP Ekd5.00438463[/color]
[color=Silver][[i] 本帖最后由 武骧金星 于 2010-2-23 11:59 编辑 [/i]][/color]
2010-2-23 11:53
武骧金星
[i=s] 本帖最后由 summer3965 于 2009-5-14 18:59 编辑 [/i]
[color=red]环击[/color],想了一下,环击和奋战攻击还是有点不太一样,所以还是做了一下. 不过好像还没多大意思.
仅限近身攻击
[color=blue]00406508 jmp 004CE051 [color=red]跳到空白代码处新代码[/color]
004CE051 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE054 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE057 51 PUSH ECX
004CE058 E8 20DEF3FF CALL Ekd5.0040BE7D
004CE05D 25 FF0F0000 AND EAX,0FFF
004CE062 3D 00010000 CMP EAX,100 ; [color=red]你希望有此特性的武将的编号[/color]
004CE067 74 35 JE SHORT Ekd5.004CE09E
004CE069 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE06C 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE06F E8 9C85F3FF CALL Ekd5.00406610
004CE074 25 FF000000 AND EAX,0FF
004CE079 83F8 00 CMP EAX,0 ;[color=red]希望有此特性的兵种[/color]
004CE07C 74 20 JE SHORT Ekd5.004CE09E
004CE07E 6A 3A PUSH 3A ;[color=red]希望有此特性的特效编号[/color]
004CE080 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE083 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE086 E8 7E99F3FF CALL Ekd5.00407A09
004CE08B 85C0 TEST EAX,EAX
004CE08D 75 0F JNZ SHORT Ekd5.004CE09E
004CE08F 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004CE092 C682 08060000 0>MOV BYTE PTR DS:[EDX+608],0
004CE099 - E9 7484F3FF JMP Ekd5.00406512
004CE09E 6A 02 PUSH 2
004CE0A0 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE0A3 8B51 0C MOV EDX,DWORD PTR DS:[ECX+C]
004CE0A6 52 PUSH EDX
004CE0A7 83C1 11 ADD ECX,11
004CE0AA E8 02000000 CALL Ekd5.004CE0B1
004CE0AF ^ EB CF JMP SHORT Ekd5.004CE080
004CE0B1 55 PUSH EBP
004CE0B2 8BEC MOV EBP,ESP
004CE0B4 83EC 2C SUB ESP,2C
004CE0B7 33C0 XOR EAX,EAX
004CE0B9 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
004CE0BC 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004CE0BF 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
004CE0C2 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004CE0C5 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
004CE0C8 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
004CE0CB 66:8B42 06 MOV AX,WORD PTR DS:[EDX+6]
004CE0CF 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004CE0D2 8A45 FC MOV AL,BYTE PTR SS:[EBP-4]
004CE0D5 FEC8 DEC AL
004CE0D7 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE0DA 8801 MOV BYTE PTR DS:[ECX],AL
004CE0DC 8A55 FD MOV DL,BYTE PTR SS:[EBP-3]
004CE0DF FECA DEC DL
004CE0E1 8851 01 MOV BYTE PTR DS:[ECX+1],DL
004CE0E4 FEC0 INC AL
004CE0E6 8841 02 MOV BYTE PTR DS:[ECX+2],AL
004CE0E9 8851 03 MOV BYTE PTR DS:[ECX+3],DL
004CE0EC FEC0 INC AL
004CE0EE 8841 04 MOV BYTE PTR DS:[ECX+4],AL
004CE0F1 8851 05 MOV BYTE PTR DS:[ECX+5],DL
004CE0F4 FEC2 INC DL
004CE0F6 8841 06 MOV BYTE PTR DS:[ECX+6],AL
004CE0F9 8851 07 MOV BYTE PTR DS:[ECX+7],DL
004CE0FC FEC2 INC DL
004CE0FE 8841 08 MOV BYTE PTR DS:[ECX+8],AL
004CE101 8851 09 MOV BYTE PTR DS:[ECX+9],DL
004CE104 FEC8 DEC AL
004CE106 8841 0A MOV BYTE PTR DS:[ECX+A],AL
004CE109 8851 0B MOV BYTE PTR DS:[ECX+B],DL
004CE10C FEC8 DEC AL
004CE10E 8841 0C MOV BYTE PTR DS:[ECX+C],AL
004CE111 8851 0D MOV BYTE PTR DS:[ECX+D],DL
004CE114 FECA DEC DL
004CE116 8841 0E MOV BYTE PTR DS:[ECX+E],AL
004CE119 8851 0F MOV BYTE PTR DS:[ECX+F],DL
004CE11C 51 PUSH ECX
004CE11D E8 6277F6FF CALL Ekd5.00435884
004CE122 83C4 04 ADD ESP,4
004CE125 25 FF000000 AND EAX,0FF
004CE12A 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
004CE12D 3D FF000000 CMP EAX,0FF
004CE132 74 28 JE SHORT Ekd5.004CE15C
004CE134 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE137 3A41 FF CMP AL,BYTE PTR DS:[ECX-1]
004CE13A 90 NOP
004CE13B 74 1F JE SHORT Ekd5.004CE15C
004CE13D 6BC8 24 IMUL ECX,EAX,24
004CE140 81C1 502C4B00 ADD ECX,Ekd5.004B2C50
004CE146 8A41 05 MOV AL,BYTE PTR DS:[ECX+5]
004CE149 3C 02 CMP AL,2
004CE14B 72 0F JB SHORT Ekd5.004CE15C
004CE14D 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE150 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
004CE153 8A45 EC MOV AL,BYTE PTR SS:[EBP-14]
004CE156 880411 MOV BYTE PTR DS:[ECX+EDX],AL
004CE159 FF45 F0 INC DWORD PTR SS:[EBP-10]
004CE15C FF45 E0 INC DWORD PTR SS:[EBP-20]
004CE15F 837D E0 08 CMP DWORD PTR SS:[EBP-20],8
004CE163 7D 0D JGE SHORT Ekd5.004CE172
004CE165 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE168 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20]
004CE16B 6BD2 02 IMUL EDX,EDX,2
004CE16E 03CA ADD ECX,EDX
004CE170 ^ EB AA JMP SHORT Ekd5.004CE11C
004CE172 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004CE175 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE178 C60408 FF MOV BYTE PTR DS:[EAX+ECX],0FF
004CE17C 8BE5 MOV ESP,EBP
004CE17E 5D POP EBP
004CE17F C3 RETN[/color]
2010-2-23 11:53
武骧金星
[color=red]二次法术攻击
[/color]首先更改四类策略攻击>>>
[color=blue]004231B3 JMP 004CE53B ;[/color][color=red]到这里,刚判断并确认可以使用当前法术.我们跳到新位置添加一个攻击计数[/color]
[color=blue]0042334A jmp 004CE54f ;[/color][color=red]到这里,攻击已经完成,这时跳去新代码处,检查是否可以二次攻击[/color]
[color=red]设置攻击计数[/color]
[color=blue]004CE53B C705 EC2C4B00 0>MOV DWORD PTR DS:[4B2CEC],0 ; [color=red]设置一个攻击计数[/color]
004CE545 6A 00 PUSH 0
004CE547 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE54A - E9 694CF5FF JMP Ekd5.004231B8 ; [color=red]设置完毕,跳回原处[/color]
[color=red]检查是否可以二次攻击[/color]
004CE54F 8B0D EC2C4B00 MOV ECX,DWORD PTR DS:[4B2CEC]
004CE555 83F9 01 CMP ECX,1 ; [color=red]检查是否为第二次攻击[/color]
004CE558 75 2D JNZ SHORT Ekd5.004CE587
004CE55A 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE55D 8B0D F02C4B00 MOV ECX,DWORD PTR DS:[4B2CF0] ; [color=red]第一次攻击得到的经验值
[/color]004CE563 0188 D0020000 ADD DWORD PTR DS:[EAX+2D0],ECX ; [color=red]两次攻击得到的经验值累加[/color]
004CE569 8B0D F42C4B00 MOV ECX,DWORD PTR DS:[4B2CF4] ; [color=red]第一次攻击得到的武器经验值[/color]
004CE56F 0188 D4020000 ADD DWORD PTR DS:[EAX+2D4],ECX ; [color=red]两次攻击得到的武器经验值累加
[/color]004CE575 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004CE578 C782 AC040000 0>MOV DWORD PTR DS:[EDX+4AC],1
004CE582 - E9 D04DF5FF JMP Ekd5.00423357
004CE587 41 INC ECX
004CE588 890D EC2C4B00 MOV DWORD PTR DS:[4B2CEC],ECX ; [color=red]攻击计数加一[/color]
004CE58E 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE591 8B88 D0020000 MOV ECX,DWORD PTR DS:[EAX+2D0] ; [color=red]第一次攻击所得的经验[/color]
004CE597 890D F02C4B00 MOV DWORD PTR DS:[4B2CF0],ECX
004CE59D 8B88 D4020000 MOV ECX,DWORD PTR DS:[EAX+2D4] ; [color=red]第一次攻击所得的武器经验[/color]
004CE5A3 890D F42C4B00 MOV DWORD PTR DS:[4B2CF4],ECX
004CE5A9 6A 34 PUSH 34 ;这句没用, NOP掉好了
004CE5AB 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE5AE 8A48 01 MOV CL,BYTE PTR DS:[EAX+1]
004CE5B1 81E1 FF000000 AND ECX,0FF
004CE5B7 6BC9 24 IMUL ECX,ECX,24
004CE5BA 81C1 502C4B00 ADD ECX,Ekd5.004B2C50 ; [color=red]得到攻击方武将战场内存索引[/color]
004CE5C0 E8 AB10F9FF CALL Ekd5.0045F670
004CE5C5 3D 00040000 CMP EAX,400 ;[color=red]可为指定武将添加此特性
[/color]004CE5CA - 0F84 ED4BF5FF JE Ekd5.004231BD
004CE5D0 6A 33 PUSH 33 ;[color=red]宝物特效编号[/color]
004CE5D2 8BC8 MOV ECX,EAX
004CE5D4 6BC9 48 IMUL ECX,ECX,48
004CE5D7 81C1 681B4A00 ADD ECX,Ekd5.004A1B68
004CE5DD E8 2794F3FF CALL Ekd5.00407A09
004CE5E2 85C0 TEST EAX,EAX
004CE5E4 - 0F85 D34BF5FF JNZ Ekd5.004231BD
004CE5EA 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE5ED 8A48 01 MOV CL,BYTE PTR DS:[EAX+1]
004CE5F0 81E1 FF000000 AND ECX,0FF
004CE5F6 6BC9 24 IMUL ECX,ECX,24
004CE5F9 81C1 502C4B00 ADD ECX,Ekd5.004B2C50
004CE5FF E8 0C80F3FF CALL Ekd5.00406610
004CE604 25 FF000000 AND EAX,0FF
004CE609 83F8 40 CMP EAX,40 ;[color=red]兵种
[/color]004CE60C - 0F84 AB4BF5FF JE Ekd5.004231BD
004CE612 ^ E9 5EFFFFFF JMP Ekd5.004CE575[/color]
[color=red]下面更改妨碍策略攻击[/color]>>>>>>
[color=blue]004235C9 JMP Ekd5.004CE711 ;[/color][color=red]到这里,刚判断并确认可以使用当前法术.我们跳到新位置添加一个攻击计数[/color]
[color=blue]0042377A JMP Ekd5.004CE727 ;[/color][color=red]到这里,攻击已经完成,这时跳去新代码处,检查是否可以二次攻击[/color]
[color=red]设置攻击计数[/color]
[color=blue]004CE711 C705 04FF4C00 0>MOV DWORD PTR DS:[4B2CEC],0 ; [color=red]设置一个攻击计数[/color]
004CE71B 33C0 XOR EAX,EAX
004CE71D 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
004CE721 - E9 A94EF5FF JMP Ekd5.004235CF ; [/color][color=red]设置完毕,回到原处
[/color]
[color=red]检查是否可以二次攻击[/color]
[color=blue]004CE727 8B0D 04FF4C00 MOV ECX,DWORD PTR DS:[4B2CEC] ; [color=red]检查是否为第二次攻击[/color]
004CE72D 83F9 01 CMP ECX,1
004CE730 75 2D JNZ SHORT Ekd5.004CE75F ; [color=red]不是则继续进行[/color]
004CE732 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE735 8B0D 08FF4C00 MOV ECX,DWORD PTR DS:[4B2CF0] ; [color=red]第一次攻击得到的经验值[/color]
004CE73B 0188 D0020000 ADD DWORD PTR DS:[EAX+2D0],ECX ; [color=red]两次攻击得到的经验值累加[/color]
004CE741 8B0D 0CFF4C00 MOV ECX,DWORD PTR DS:[4B2CF4] ; [color=red]第一次攻击得到的武器经验值[/color]
004CE747 0188 D4020000 ADD DWORD PTR DS:[EAX+2D4],ECX ; [color=red]两次攻击得到的武器经验值累加[/color]
004CE74D 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; [color=red]这是原来处的代码[/color]
004CE750 C782 AC040000 0>MOV DWORD PTR DS:[EDX+4AC],1
004CE75A - E9 2850F5FF JMP Ekd5.00423787
004CE75F 41 INC ECX
004CE760 890D 04FF4C00 MOV DWORD PTR DS:[4B2CEC],ECX ; [color=red]攻击计数加一[/color]
004CE766 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE769 8B88 D0020000 MOV ECX,DWORD PTR DS:[EAX+2D0] ; [color=red]第一次攻击所得的经验[/color]
004CE76F 890D 08FF4C00 MOV DWORD PTR DS:[4B2CF0],ECX
004CE775 8B88 D4020000 MOV ECX,DWORD PTR DS:[EAX+2D4] ; [color=red]第一次攻击所得的武器经验[/color]
004CE77B 890D 0CFF4C00 MOV DWORD PTR DS:[4B2CF4],ECX
004CE781 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE784 8A48 01 MOV CL,BYTE PTR DS:[EAX+1]
004CE787 81E1 FF000000 AND ECX,0FF
004CE78D 6BC9 24 IMUL ECX,ECX,24
004CE790 81C1 502C4B00 ADD ECX,Ekd5.004B2C50 ; [color=red]得到武将战场内存索引[/color]
004CE796 E8 D50EF9FF CALL Ekd5.0045F670 ;[color=red]得到武将编号[/color]
004CE79B 3D 00040000 CMP EAX,400 ;[color=red]可为指定武将添加此特性
[/color]004CE7A0 - 0F84 354EF5FF JE Ekd5.004235DB
004CE7A6 6A 33 PUSH 33 ;[color=red]宝物特效编号[/color]
004CE7A8 8BC8 MOV ECX,EAX
004CE7AA 6BC9 48 IMUL ECX,ECX,48
004CE7AD 81C1 681B4A00 ADD ECX,Ekd5.004A1B68
004CE7B3 E8 5192F3FF CALL Ekd5.00407A09
004CE7B8 85C0 TEST EAX,EAX
004CE7BA - 0F85 1B4EF5FF JNZ Ekd5.004235DB
004CE7C0 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE7C3 8A48 01 MOV CL,BYTE PTR DS:[EAX+1]
004CE7C6 81E1 FF000000 AND ECX,0FF
004CE7CC 6BC9 24 IMUL ECX,ECX,24
004CE7CF 81C1 502C4B00 ADD ECX,Ekd5.004B2C50
004CE7D5 E8 367EF3FF CALL Ekd5.00406610
004CE7DA 25 FF000000 AND EAX,0FF
004CE7DF 83F8 40 CMP EAX,40 ;[color=red]可为指定兵种添加此特性[/color]
004CE7E2 - 0F84 F34DF5FF JE Ekd5.004235DB
004CE7E8 ^ E9 60FFFFFF JMP Ekd5.004CE74D[/color]
2010-2-23 11:54
武骧金星
[i=s] 本帖最后由 summer3965 于 2009-5-14 18:50 编辑 [/i]
[color=red]借力打力[/color]
效果为:在自己的攻击范围内同时有2个或2个以上的敌人时,被打中时能将敌人的攻击牵引到血最少的敌人(除了发起攻击的人)上,同时自己受到的伤害减少一半
一些可以设置的地方:
[color=blue]004CE05B PUSH 200 ; [color=red]具有这种特性的武将编号[/color]
004CE060 PUSH 40 ; [color=red]具有此特性的宝物特效编号[/color]
004CE062 PUSH 40 ; [color=red]具有此特性的兵种编号[/color]
004CE15B IMUL EAX,EAX,32 ; [/color][color=red]转移50%的伤害给敌人,改为64,那么有此特性的武将伤害为0,全部转移到敌人身上[/color]
[color=red]修改开始[/color]
[color=blue]00406541 JMP 004CE041 ; [/color][color=red]跳到新代码处[/color]
[color=red]新代码
[/color][color=blue]004CE041 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
004CE044 81E1 FF000000 AND ECX,0FF
004CE04A 6BC9 24 IMUL ECX,ECX,24
004CE04D 81C1 502C4B00 ADD ECX,Ekd5原版.004B2C50
004CE053 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
004CE056 8B09 MOV ECX,DWORD PTR DS:[ECX]
004CE058 83EC 20 SUB ESP,20
004CE05B 68 00020000 PUSH 200 ; [color=red]具有这种特性的武将编号[/color]
004CE060 6A 40 PUSH 40 ; [color=red]具有此特性的宝物特效编号[/color]
004CE062 6A 40 PUSH 40 ; [color=red]具有此特性的兵种编号[/color]
004CE064 E8 97FFFFFF CALL Ekd5原版.004CE000 ; [color=red]新函数检查ECX武将是否具有当前特性,见此段代码结束处[/color].
004CE069 85C0 TEST EAX,EAX
004CE06B 75 0D JNZ SHORT Ekd5原版.004CE07A
004CE06D 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE070 E8 CF76F3FF CALL Ekd5原版.00405744
004CE075 - E9 CF84F3FF JMP Ekd5原版.00406549
004CE07A 83EC 20 SUB ESP,20
004CE07D 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE080 BA 00000000 MOV EDX,0
004CE085 807C11 10 FF CMP BYTE PTR DS:[ECX+EDX+10],0FF
004CE08A 74 03 JE SHORT Ekd5原版.004CE08F
004CE08C 42 INC EDX
004CE08D ^ EB F6 JMP SHORT Ekd5原版.004CE085
004CE08F 817C11 11 63850>CMP DWORD PTR DS:[ECX+EDX+11],8563
004CE097 75 0E JNZ SHORT Ekd5原版.004CE0A7
004CE099 C64411 0F FF MOV BYTE PTR DS:[ECX+EDX+F],0FF ; [color=red]把被打力过的武将从伤害列表中排除, 不然会重复添加[/color]
004CE09E C74411 11 FFFF0>MOV DWORD PTR DS:[ECX+EDX+11],0FFFF
004CE0A6 4A DEC EDX
004CE0A7 8955 E0 MOV DWORD PTR SS:[EBP-20],EDX
004CE0AA 68 FF000000 PUSH 0FF ; [color=red]下面这段是为了获取武将攻击范围内所有敌方武将战场编号[/color]
004CE0AF 68 40060000 PUSH 640
004CE0B4 6A 04 PUSH 4
004CE0B6 6A 00 PUSH 0
004CE0B8 68 C0120000 PUSH 12C0
004CE0BD B9 38EB4A00 MOV ECX,Ekd5原版.004AEB38
004CE0C2 E8 7919FBFF CALL Ekd5原版.0047FA40
004CE0C7 50 PUSH EAX
004CE0C8 E8 461CFBFF CALL Ekd5原版.0047FD13
004CE0CD 6A 00 PUSH 0
004CE0CF 6A 00 PUSH 0
004CE0D1 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE0D4 E8 E517F7FF CALL Ekd5原版.0043F8BE
004CE0D9 50 PUSH EAX
004CE0DA 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE0DD 83C1 06 ADD ECX,6
004CE0E0 51 PUSH ECX
004CE0E1 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE0E4 E8 9D84F6FF CALL Ekd5原版.00436586
004CE0E9 C745 F0 0000000>MOV DWORD PTR SS:[EBP-10],0 ; [color=red]下面遍历获取攻击范围内HP最少的敌人[/color]
004CE0F0 C745 EC FF00000>MOV DWORD PTR SS:[EBP-14],0FF
004CE0F7 C745 E8 FFFF0F0>MOV DWORD PTR SS:[EBP-18],0FFFFF
004CE0FE EB 03 JMP SHORT Ekd5原版.004CE103
004CE100 FF45 F0 INC DWORD PTR SS:[EBP-10]
004CE103 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004CE106 8A88 48C74A00 MOV CL,BYTE PTR DS:[EAX+4AC748]
004CE10C 80F9 FF CMP CL,0FF
004CE10F 74 2C JE SHORT Ekd5原版.004CE13D
004CE111 3A4D 08 CMP CL,BYTE PTR SS:[EBP+8]
004CE114 74 25 JE SHORT Ekd5原版.004CE13B ; [color=red]如果是攻方本人就忽略[/color]
004CE116 81E1 FF000000 AND ECX,0FF
004CE11C 894D E4 MOV DWORD PTR SS:[EBP-1C],ECX
004CE11F 6BC9 24 IMUL ECX,ECX,24
004CE122 81C1 502C4B00 ADD ECX,Ekd5原版.004B2C50
004CE128 E8 634BFAFF CALL Ekd5原版.00472C90
004CE12D 3B45 E8 CMP EAX,DWORD PTR SS:[EBP-18]
004CE130 73 09 JNB SHORT Ekd5原版.004CE13B ; [color=red]只保留HP最少的[/color]
004CE132 8B4D E4 MOV ECX,DWORD PTR SS:[EBP-1C]
004CE135 894D EC MOV DWORD PTR SS:[EBP-14],ECX
004CE138 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
004CE13B ^ EB C3 JMP SHORT Ekd5原版.004CE100
004CE13D 8A4D EC MOV CL,BYTE PTR SS:[EBP-14]
004CE140 80F9 FF CMP CL,0FF
004CE143 ^ 0F84 24FFFFFF JE Ekd5原版.004CE06D ; [color=red]最终没找到可以借力打击的敌人,则跳回去[/color]
004CE149 8B5D FC MOV EBX,DWORD PTR SS:[EBP-4]
004CE14C 8B83 84000000 MOV EAX,DWORD PTR DS:[EBX+84] ; [color=red]有此特性的武将此次伤害值[/color]
004CE152 83F8 02 CMP EAX,2
004CE155 ^ 0F82 12FFFFFF JB Ekd5原版.004CE06D
004CE15B 6BC0 32 IMUL EAX,EAX,32 ; [color=red]分出50%的伤害给敌人
[/color]004CE15E 33D2 XOR EDX,EDX
004CE160 B9 64000000 MOV ECX,64
004CE165 F7F1 DIV ECX
004CE167 2983 84000000 SUB DWORD PTR DS:[EBX+84],EAX
004CE16D 3B45 E8 CMP EAX,DWORD PTR SS:[EBP-18]
004CE170 76 03 JBE SHORT Ekd5原版.004CE175
004CE172 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; [color=red]下面是把此敌人加入到伤害列表中[/color]
004CE175 8B4D EC MOV ECX,DWORD PTR SS:[EBP-14]
004CE178 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20]
004CE17B 8B5D FC MOV EBX,DWORD PTR SS:[EBP-4]
004CE17E 884C1A 10 MOV BYTE PTR DS:[EDX+EBX+10],CL
004CE182 C6441A 11 FF MOV BYTE PTR DS:[EDX+EBX+11],0FF
004CE187 898493 84000000 MOV DWORD PTR DS:[EBX+EDX*4+84],EAX
004CE18E C7441A 12 63850>MOV DWORD PTR DS:[EDX+EBX+12],8563
004CE196 ^ E9 D2FEFFFF JMP Ekd5原版.004CE06D ; [color=red]返回原代码处[/color]
[color=red]新函数,检查武将ECX是否为10栈的武将,若不是检查是否有0C栈的宝物,若没有则检查是否为08栈的兵种.
共四个参数,08栈 : 兵种编号 ; 0C栈 :宝物特效编号 ; 10栈 :武将编号 ;
还有一个ECX参数 ;当前要检查的武将编号[/color]
004CE000 55 PUSH EBP
004CE001 8BEC MOV EBP,ESP
004CE003 3B4D 10 CMP ECX,DWORD PTR SS:[EBP+10]
004CE006 74 21 JE SHORT Ekd5原版.004CE029
004CE008 6BC9 48 IMUL ECX,ECX,48
004CE00B 81C1 681B4A00 ADD ECX,Ekd5原版.004A1B68
004CE011 8A41 2B MOV AL,BYTE PTR DS:[ECX+2B]
004CE014 3A45 08 CMP AL,BYTE PTR SS:[EBP+8]
004CE017 74 10 JE SHORT Ekd5原版.004CE029
004CE019 FF75 0C PUSH DWORD PTR SS:[EBP+C]
004CE01C E8 E899F3FF CALL Ekd5原版.00407A09
004CE021 85C0 TEST EAX,EAX
004CE023 75 04 JNZ SHORT Ekd5原版.004CE029
004CE025 33C0 XOR EAX,EAX
004CE027 EB 05 JMP SHORT Ekd5原版.004CE02E
004CE029 B8 01000000 MOV EAX,1
004CE02E 8BE5 MOV ESP,EBP
004CE030 5D POP EBP
004CE031 C3 RETN[/color]
2010-2-23 11:54
武骧金星
[i=s] 本帖最后由 summer3965 于 2009-5-14 18:47 编辑 [/i]
[color=red]吃果子即时成长[/color],保留了原先吃果效果,和剧本等额外加成的能力
首先修改原代码处的这两个地方
[color=blue]0041D083 83EC 30 SUB ESP,30
0041D155 |. 8B4D E4 jmp 4ce06f[/color] [color=red]跳到新位置[/color]
[color=red]新位置代码 ,新函数,用来重新计算武将某项能力值.08栈为能力值,0-4 ; ECX为武将DATA内存索引
[/color][color=blue]004CE000 55 PUSH EBP
004CE001 8BEC MOV EBP,ESP
004CE003 83EC 30 SUB ESP,30
004CE006 894D FC MOV DWORD PTR SS:[EBP-4],ECX
004CE009 FF75 08 PUSH DWORD PTR SS:[EBP+8] ; [color=red]0-4 要获取的能力标记
[/color]004CE00C 33D2 XOR EDX,EDX
004CE00E 8A51 2B MOV DL,BYTE PTR DS:[ECX+2B]
004CE011 8BCA MOV ECX,EDX
004CE013 6BC9 1B IMUL ECX,ECX,1B
004CE016 81C1 A0BF4A00 ADD ECX,计算能力.004ABFA0
004CE01C E8 7FB5F3FF CALL 计算能力.004095A0
004CE021 25 FF000000 AND EAX,0FF
004CE026 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004CE029 FF75 08 PUSH DWORD PTR SS:[EBP+8]
004CE02C 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE02F E8 C892F3FF CALL 计算能力.004072FC
004CE034 25 FF000000 AND EAX,0FF
004CE039 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004CE03C 03D0 ADD EDX,EAX
004CE03E D1EA SHR EDX,1
004CE040 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
004CE043 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE046 E8 8585F3FF CALL 计算能力.004065D0
004CE04B 25 FF000000 AND EAX,0FF
004CE050 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004CE053 0FAFC2 IMUL EAX,EDX
004CE056 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004CE059 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4] ; [color=red]武将DATA内存[/color]
004CE05C 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8] ; [color=red]加哪项能力[/color]
004CE05F 8A4411 21 MOV AL,BYTE PTR DS:[ECX+EDX+21] ; [color=red]得到武力等值
[/color]004CE063 25 FF000000 AND EAX,0FF
004CE068 0345 F8 ADD EAX,DWORD PTR SS:[EBP-8]
004CE06B 8BE5 MOV ESP,EBP
004CE06D 5D POP EBP
004CE06E C3 RETN[/color]
[color=blue]跳转来自0041D155
004CE06F 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
004CE072 25 FF000000 AND EAX,0FF
004CE077 83F8 01 CMP EAX,1
004CE07A 75 07 JNZ SHORT 计算能力.004CE083
004CE07C B8 02000000 MOV EAX,2
004CE081 EB 08 JMP SHORT 计算能力.004CE08B
004CE083 83F8 02 CMP EAX,2
004CE086 75 03 JNZ SHORT 计算能力.004CE08B
004CE088 83E8 01 SUB EAX,1
004CE08B 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
004CE08E FF75 D4 PUSH DWORD PTR SS:[EBP-2C]
004CE091 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004CE094 8B48 10 MOV ECX,DWORD PTR DS:[EAX+10]
004CE097 E8 64FFFFFF CALL 计算能力.004CE000
004CE09C 8945 D0 MOV DWORD PTR SS:[EBP-30],EAX
004CE09F 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004CE0A2 8B48 10 MOV ECX,DWORD PTR DS:[EAX+10]
004CE0A5 8B41 11 MOV EAX,DWORD PTR DS:[ECX+11]
004CE0A8 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
004CE0AB 33D2 XOR EDX,EDX
004CE0AD 83F8 00 CMP EAX,0
004CE0B0 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C] ; [color=red]是哪项能力[/color]
004CE0B3 74 07 JE SHORT 计算能力.004CE0BC
004CE0B5 66:8B5441 11 MOV DX,WORD PTR DS:[ECX+EAX*2+11]
004CE0BA EB 04 JMP SHORT 计算能力.004CE0C0
004CE0BC 8A5408 15 MOV DL,BYTE PTR DS:[EAX+ECX+15]
004CE0C0 FF75 D0 PUSH DWORD PTR SS:[EBP-30]
004CE0C3 52 PUSH EDX
004CE0C4 E8 D519FBFF CALL 计算能力.0047FA9E
004CE0C9 8945 D0 MOV DWORD PTR SS:[EBP-30],EAX
004CE0CC 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004CE0CF 8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
004CE0D2 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18]
004CE0D5 8B49 10 MOV ECX,DWORD PTR DS:[ECX+10]
004CE0D8 004411 21 ADD BYTE PTR DS:[ECX+EDX+21],AL
004CE0DC FF75 D4 PUSH DWORD PTR SS:[EBP-2C]
004CE0DF 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004CE0E2 8B48 10 MOV ECX,DWORD PTR DS:[EAX+10]
004CE0E5 E8 16FFFFFF CALL 计算能力.004CE000
004CE0EA 0145 D0 ADD DWORD PTR SS:[EBP-30],EAX
004CE0ED 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004CE0F0 8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
004CE0F3 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18]
004CE0F6 8B49 10 MOV ECX,DWORD PTR DS:[ECX+10]
004CE0F9 284411 21 SUB BYTE PTR DS:[ECX+EDX+21],AL
004CE0FD 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
004CE100 837D D8 00 CMP DWORD PTR SS:[EBP-28],0
004CE104 74 07 JE SHORT 计算能力.004CE10D
004CE106 66:894451 11 MOV WORD PTR DS:[ECX+EDX*2+11],AX
004CE10B EB 04 JMP SHORT 计算能力.004CE111
004CE10D 884411 15 MOV BYTE PTR DS:[ECX+EDX+15],AL
004CE111 8B4D E4 MOV ECX,DWORD PTR SS:[EBP-1C]
004CE114 3E:FF248D B1D34>JMP DWORD PTR DS:[ECX*4+41D3B1][/color]
2010-2-23 11:54
武骧金星
[i=s] 本帖最后由 summer3965 于 2009-5-14 18:41 编辑 [/i]
[color=red]二次移动[/color]
需要修改两个地方
[color=red]修改处一[/color]
[color=blue]0044AF70 /EB 03 JMP SHORT Ekd5.0044AF75
0044AF72 |FE45 DC INC BYTE PTR SS:[EBP-24]
0044AF75 \8B4D DC MOV ECX,DWORD PTR SS:[EBP-24]
0044AF78 80F9 73 CMP CL,73
0044AF7B 7D 26 JGE SHORT Ekd5.0044AFA3
0044AF7D 6A 06 PUSH 6
0044AF7F 33C9 XOR ECX,ECX
0044AF81 8A4D DC MOV CL,BYTE PTR SS:[EBP-24]
0044AF84 6BC9 24 IMUL ECX,ECX,24
0044AF87 81C1 502C4B00 ADD ECX,Ekd5.004B2C50
0044AF8D E8 FEB6FBFF CALL Ekd5.00406690
0044AF92 33C0 XOR EAX,EAX
0044AF94 8A45 DC MOV AL,BYTE PTR SS:[EBP-24]
0044AF97 05 10FF4C00 ADD EAX,Ekd5.004CF000 ;[color=red]4CF000大家根据自己的EXE设置,但这个位置开始往后的115字节不要有其它代码使用.
[/color]0044AF9C C600 00 MOV BYTE PTR DS:[EAX],0
0044AF9F 90 NOP
0044AFA0 90 NOP
0044AFA1 ^ EB CF JMP SHORT Ekd5.0044AF72
[/color]
[color=red]修改处二
[/color][color=blue]0044E5FB - E9 26FB0700 JMP 004CE126 [color=red]跳到新代码处[/color]
[color=red]新代码[/color]
004CE126 FF75 D8 PUSH DWORD PTR SS:[EBP-28]
004CE129 E8 0A000000 CALL 004CE138
004CE12E 8B4D C8 MOV ECX,DWORD PTR SS:[EBP-38]
004CE131 33D2 XOR EDX,EDX
004CE133 - E9 C804F8FF JMP 0044E600
004CE138 55 PUSH EBP
004CE139 8BEC MOV EBP,ESP
004CE13B 83EC 08 SUB ESP,8
004CE13E 33C9 XOR ECX,ECX
004CE140 8A4D 08 MOV CL,BYTE PTR SS:[EBP+8]
004CE143 6BC9 24 IMUL ECX,ECX,24
004CE146 81C1 502C4B00 ADD ECX,004B2C50
004CE14C 894D FC MOV DWORD PTR SS:[EBP-4],ECX
004CE14F 33C0 XOR EAX,EAX
004CE151 8A45 08 MOV AL,BYTE PTR SS:[EBP+8]
004CE154 05 00F04C00 ADD EAX,004CF000 ;[color=red]即上面的4CF000[/color]
004CE159 8A10 MOV DL,BYTE PTR DS:[EAX]
004CE15B 84D2 TEST DL,DL
004CE15D 75 49 JNZ SHORT 004CE1A8
004CE15F 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004CE162 E8 0915F9FF CALL 0045F670
004CE167 6BC0 48 IMUL EAX,EAX,48
004CE16A 05 681B4A00 ADD EAX,004A1B68 ;[color=red]根据你的EXE,如果是新引擎是00D60000[/color]
004CE16F 8BC8 MOV ECX,EAX
004CE171 8A41 2B MOV AL,BYTE PTR DS:[ECX+2B]
004CE174 3C 2E CMP AL,40 ;[color=red]兵种编号,修改为你想要的[/color]
004CE176 74 0B JE SHORT 004CE183
004CE178 6A 40 PUSH 40 ;[color=red]宝物特效编号,修改为你想要的[/color]
004CE17A E8 8A98F3FF CALL 00407A09
004CE17F 85C0 TEST EAX,EAX
004CE181 74 25 JE SHORT 004CE1A8
004CE183 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004CE186 6A 06 PUSH 6
004CE188 E8 0385F3FF CALL 00406690
004CE18D 8B09 MOV ECX,DWORD PTR DS:[ECX]
004CE18F 51 PUSH ECX
004CE190 E8 4103F7FF CALL 0043E4D6
004CE195 68 88000000 PUSH 88
004CE19A 6A 06 PUSH 6
004CE19C 50 PUSH EAX
004CE19D E8 FD04F7FF CALL 0043E69F
004CE1A2 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004CE1A5 C601 FF MOV BYTE PTR DS:[ECX],0FF
004CE1A8 8BE5 MOV ESP,EBP
004CE1AA 5D POP EBP
004CE1AB C3 RETN[/color]
2010-2-23 11:55
武骧金星
[color=red]诱惑法术的修改,可控制敌军一定回合[/color]
[color=red]修改处一.[/color]
[color=blue]0044A4C9 MOV BYTE PTR SS:[EBP-8],7F[/color]
[color=red]修改处二.
[/color][color=blue]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
[/color]
[color=red]修改处三
[/color][color=blue]0044E636 CMP DWORD PTR SS:[EBP-34], 73[/color] ;[color=red]本来只检查前23人中的可控制人员.改为全部检查[/color]
[color=red]修改处四
[/color][color=blue]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 ;[color=red]原为23
[/color]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 ;[color=red]若是敌军,则跳走不处理[/color].
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
[/color]
[color=red]修改处五 .去除诱惑法术的攻击性[/color]
[color=blue]00440757 |. E8 4EB8FFFF CALL ATest1.0043BFAA
0044075C 807D 10 14 CMP BYTE PTR SS:[EBP+10],14 ;[color=red]判断是否为诱惑[/color]
00440760 75 02 JNZ SHORT ATest1.00440764
00440762 33C0 XOR EAX,EAX ;[color=red]如果是伤害清零[/color].
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][/color]
[color=red]修改处六[/color]
[color=blue]0043C7F6 jmp 004CE201 ;[/color][color=red]跳到新位置进行武将是否摆脱诱惑的处理.
[/color][color=red]新位置代码[/color]
[color=blue]004CE201 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; [color=red]武将战场内存索引[/color]
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] ; [color=red]诱惑状态,为0表示正常,否则就是将在哪回合摆脱诱惑[/color]
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 ; [color=red]标记清零[/color]
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 ;[color=red]跳回去原代码处.[/color]
[color=red]修改处七[/color]
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 ;[color=red]如果伤害值不为0表示攻击成功.跳到新代码处进行处理[/color]
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]
[color=red]新位置代码[/color]
004CE251 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004CE254 8A10 MOV DL,BYTE PTR DS:[EAX] ; [color=red]法术编号[/color]
004CE256 80FA 14 CMP DL,14
004CE259 - 0F85 2350F5FF JNZ ATest1.00423282 ; [color=red]若不是诱惑则跳回原处[/color]
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 ; [color=red]被攻方内存索引[/color]
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] ; [color=red]如果是敌主将,那么伤害值清零.并跳转到原攻击失败代码处[/color]
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 ; [color=red]伤害清0[/color]
004CE28E - E9 D94FF5FF JMP ATest1.0042326C ; [color=red]跳到原攻击失败代码处[/color]
004CE293 8079 05 02 CMP BYTE PTR DS:[ECX+5],2
004CE297 ^ 72 DF JB SHORT ATest1.004CE278 ; [color=red]若为我军和友军,也是攻击失败[/color]
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 ; [color=red]正常状态是0.若不是0,则为摆脱诱惑的回合数[/color]
004CE2A5 ^ 75 D1 JNZ SHORT ATest1.004CE278 ; [color=red]如果当前已被诱惑,则攻击失败[/color]
004CE2A7 C641 05 03 MOV BYTE PTR DS:[ECX+5],3 ; [color=red]下面是成功的处理. 部队属性改为3[/color]
004CE2AB C641 0E 07 MOV BYTE PTR DS:[ECX+E],7 ; [color=red]可受我方控制
[/color]004CE2AF A0 0A3D4B00 MOV AL,BYTE PTR DS:[4B3D0A] ; [color=red]当前回合数[/color]
004CE2B4 04 02 ADD AL,2 ; [color=red]两回合后摆脱诱惑[/color]
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 ; [color=red]伤害值归0,因为现在的诱惑不是伤害性法术了[/color]
004CE2D2 - E9 AB4FF5FF JMP ATest1.00423282 ;[/color][color=red] 则回原处[/color]
恩…
剛好其他人有備份到
所以就再轉過來囉
不過這個改法好像有bug
[quote]
游戏过程中到也正常,但一保存后,再重新读出玩,就发现受控的人怎么也不会再变回为敌人.
[/quote]
請阿斌有空研究看看
如果能改良成敵軍可用就更完美了~
2010-2-23 11:55
武骧金星
[i=s] 本帖最后由 summer3965 于 2009-5-15 17:07 编辑 [/i]
{:5_245:}
原來軒轅的norton前輩有整理到文字檔
我還傻傻的在這邊編輯…
[quote]原帖由 [i]majiming[/i] 于 2009-5-15 01:30 发表於[color=red]軒轅春秋[/color]
今天研究了下,总结出两个方法:
方法一. 扩展存档文件,就像新引擎那样多加一个存档文件 sv0xb.e5s
然后开辟出一块内存,存放存档文件数据.
方法二.如果嫌麻烦可以用这个方法.
用29个全局变量替代4CF100存放战场115个武将的被诱惑状态.
为什么是29个变量呢,因为一个变量占4字节. 保存诱惑状态只需要一字节
充下,每关开始时别忘了把这29个变量数据置0
要是用局部变量就不用这步了,可惜局部变量资源紧张啊
492F90+变量号*4+38 = 就是指定变量的地址.每个变量四字节.
以492F90为基址,直接操作就行了.这就是内存数据
我用的是2010-2039这29个变量
494F30是2010变量
直接用494F30替换掉上面的4CF100就行了.
也就是说原作者的代码只需要改两个地方就行了.
一.用494F30替换掉4CF100.
二,进入战场时把这29个变量清0
0041226D /EB 03 JMP SHORT a原版Ekd.00412272
0041226F |FF45 F4 /INC DWORD PTR SS:[EBP-C]
00412272 \8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C]
00412275 83F8 73 |CMP EAX,73
00412278 7D 2A JGE SHORT a原版Ekd.004122A4
0041227A C680 304F4900>MOV BYTE PTR DS:[EAX+494F30],0
00412281 50 |PUSH EAX ; /Arg1
[/quote]
2010-2-23 11:56
武骧金星
发完了……
其实我觉得本坛的各位前辈们总结了大量优秀而精简的代码,要是后辈根本连见都没见过就太可惜了。
这个帖子原帖在[url]http://www.xycq.net/forum/viewthread.php?tid=188913&highlight=%2Bzhangju[/url]
可惜,LZ一句“人在帖在,人走帖走”……
所以我们要感谢GOOGLE。
[color=Silver][[i] 本帖最后由 武骧金星 于 2010-2-23 12:04 编辑 [/i]][/color]
2010-2-24 15:42
wysjbc
问一下,这些代码原版引擎能用不?
2010-2-24 23:04
武骧金星
当然可以,但是要先扩展EKD5.e5文件才行,否则就只能将许子将一脚踢开了……
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.