轩辕春秋文化论坛 » 曹操传MOD制作交流 » [轉貼]zhangju新特效


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]
查看完整版本: [轉貼]zhangju新特效


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.