标题: 关于0043F8BE(获取武将攻击范围)的问题
性别:男-离线 武骧金星

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 前将军
功绩 29
帖子 1763
编号 56399
注册 2005-12-31
来自 上海


发表于 2010-2-14 09:58 资料 个人空间 短消息 只看该作者 QQ
关于0043F8BE(获取武将攻击范围)的问题

教程贴中先手攻击的代码中,有一步是判断武将是否相邻:

0048CCCA   E8 FBE2FCFF      CALL 0045AFCA      // 判断武将是否相邻
0048CCCF   85C0             TEST EAX,EAX            
0048CCD1   74 22            JE SHORT 0048CCF5  

我试图将0048CCCA处的代码换成:CALL 0043F8BE,结果发现,这样的结果是无视攻击范围进行先手攻击。

通过阅读EKD5.exe中原有的代码,发现凡是调用子程序0043F8BE,都不会立即进行TEST EAX,EAX的测试,因此可能是这个测试不能用于0043F8BE的返回值。

那么,如果要测试0043F8BE的返回值(也就是测试是否在攻击范围内)应该如何写代码呢?谢谢。


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2010-2-14 10:27 资料 个人空间 短消息 只看该作者
给你看我的4.0的代码,是参考了STAR引擎后改的根据攻击范围来先手:
0043AAFB  /$ 55             PUSH EBP
0043AAFC  |. 8BEC           MOV EBP,ESP
0043AAFE  |. 83EC 10        SUB ESP,10
0043AB01  |. 894D F0        MOV DWORD PTR SS:[EBP-10],ECX
0043AB04  |. 68 FF000000    PUSH 0FF                                 ; /Arg3 = 000000FF
0043AB09  |. 68 40060000    PUSH 640                                 ; |Arg2 = 00000640
0043AB0E  |. 6A 04          PUSH 4                                   ; |/Arg3 = 00000004
0043AB10  |. 6A 00          PUSH 0                                   ; ||Arg2 = 00000000
0043AB12  |. 6A 00          PUSH 0                                   ; ||Arg1 = 00000000
0043AB14  |. B9 38EB4A00    MOV ECX,004AEB38                      ; ||
0043AB19  |. E8 224F0400    CALL 0047FA40                         ; |\0047FA40
0043AB1E  |. 05 C0120000    ADD EAX,12C0                             ; |
0043AB23  |. 50             PUSH EAX                                 ; |Arg1
0043AB24  |. E8 EA510400    CALL 0047FD13                         ; \0047FD13
0043AB29  |. 83C4 0C        ADD ESP,0C
0043AB2C  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AB2F  |. E8 3C34FEFF    CALL 0041DF70
0043AB34  |. 8845 FC        MOV BYTE PTR SS:[EBP-4],AL
0043AB37  |. 6A 00          PUSH 0
0043AB39  |. 6A 00          PUSH 0
0043AB3B  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AB3E  |. E8 7B4D0000    CALL 0043F8BE
0043AB43  |. 50             PUSH EAX                                 ; |Arg2
0043AB44  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]            ; |
0043AB47  |. 83C0 06        ADD EAX,6                                ; |
0043AB4A  |. 50             PUSH EAX                                 ; |Arg1
0043AB4B  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043AB4E  |. E8 33BAFFFF    CALL 00436586                         ; \00436586
0043AB53  |. 8845 F8        MOV BYTE PTR SS:[EBP-8],AL
0043AB56  |. 68 80000000    PUSH 80                                  ; /Arg1 = 00000080
0043AB5B  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043AB5E  |. E8 8DAFFEFF    CALL 00425AF0                         ; \00425AF0
0043AB63  |. 85C0           TEST EAX,EAX
0043AB65  |. 75 4E          JNZ SHORT 0043ABB5
0043AB67  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AB6A  |. E8 61AFFEFF    CALL 00425AD0
0043AB6F  |. 3C 04          CMP AL,4
0043AB71  |. 74 42          JE SHORT 0043ABB5
0043AB73  |. 6A 00          PUSH 0
0043AB75  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AB78  |. E8 03950900    CALL 004D4080
0043AB7D  |. E8 6EBAFCFF    CALL 004065F0                         ; \004065F0
0043AB82  |. 50             PUSH EAX
0043AB83  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AB86  |. E8 F5940900    CALL 004D4080
0043AB8B  |. E8 77CDFCFF    CALL 00407907                         ; \00407907
0043AB90  |. 85C0           TEST EAX,EAX
0043AB92  |. 74 21          JE SHORT 0043ABB5
0043AB94  |. 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8]
0043AB97  |. 3C FF          CMP AL,0FF
0043AB99  |. 74 1A          JE SHORT 0043ABB5
0043AB9B  |. 6A 02          PUSH 2                                   ; /Arg1 = 00000002
0043AB9D  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043ABA0  |. E8 4BAFFEFF    CALL 00425AF0                         ; \00425AF0
0043ABA5  |. 85C0           TEST EAX,EAX
0043ABA7  |. 75 0C          JNZ SHORT 0043ABB5
0043ABA9  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043ABAC  |. E8 1FAFFEFF    CALL 00425AD0
0043ABB1  |. 3C 04          CMP AL,4
0043ABB3  |. 75 05          JNZ SHORT 0043ABBA
0043ABB5  |> E9 C4000000    JMP 0043AC7E
0043ABBA  |> 8B4D F8        MOV ECX,DWORD PTR SS:[EBP-8]
0043ABBD  |. E8 24B1FCFF    CALL 00405CE6
0043ABC2  |. E8 9987FCFF    CALL 00403360
0043ABC7  |. 66:8B08        MOV CX,WORD PTR DS:[EAX]
0043ABCA  |. 66:894D F4     MOV WORD PTR SS:[EBP-C],CX
0043ABCE  |. 8A55 F8        MOV DL,BYTE PTR SS:[EBP-8]
0043ABD1  |. 52             PUSH EDX                                 ; /Arg2
0043ABD2  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]            ; |
0043ABD5  |. 8A48 04        MOV CL,BYTE PTR DS:[EAX+4]               ; |
0043ABD8  |. 51             PUSH ECX                                 ; |Arg1
0043ABD9  |. E8 4BACFFFF    CALL 00435829                         ; \00435829
0043ABDE  |. 83C4 08        ADD ESP,8
0043ABE1  |. 68 FF000000    PUSH 0FF                                 ; /Arg3 = 000000FF
0043ABE6  |. 8A55 F8        MOV DL,BYTE PTR SS:[EBP-8]               ; |
0043ABE9  |. 52             PUSH EDX                                 ; |Arg2
0043ABEA  |. 6A 01          PUSH 1                                   ; |Arg1 = 00000001
0043ABEC  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043ABEF  |. E8 94680000    CALL 00441488                         ; \00441488
0043ABF4  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
0043ABF7  |. 8B4D F8        MOV ECX,DWORD PTR SS:[EBP-8]
0043ABFA  |. E8 97BBFFFF    CALL 00436796
0043ABFF  |. 90             NOP
0043AC00  |. 90             NOP
0043AC01  |. 90             NOP
0043AC02  |. 85C0           TEST EAX,EAX
0043AC04  |. 74 0D          JE SHORT 0043AC13
0043AC06  |. 8A45 F8        MOV AL,BYTE PTR SS:[EBP-8]
0043AC09  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AC0C  |. 8A51 04        MOV DL,BYTE PTR DS:[ECX+4]
0043AC0F  |. 52             PUSH EDX
0043AC10  |. 50             PUSH EAX
0043AC11  |. EB 0A          JMP SHORT 0043AC1D
0043AC13  |> FF75 F8        PUSH DWORD PTR SS:[EBP-8]
0043AC16  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
0043AC19  |. 8A51 04        MOV DL,BYTE PTR DS:[ECX+4]
0043AC1C  |. 52             PUSH EDX
0043AC1D  |> B9 F0274900    /MOV ECX,004927F0                     ; |
0043AC22  |. E8 CAB8FCFF    |CALL 004064F1                        ; \004064F1
0043AC27  |. 8B4D F0        |MOV ECX,DWORD PTR SS:[EBP-10]
0043AC2A  |. FF75 F8        |PUSH DWORD PTR SS:[EBP-8]               ; /Arg1
0043AC2D  |. E8 B6BCFFFF    |CALL 004368E8                        ; \004368E8
0043AC32  |. 85C0           |TEST EAX,EAX
0043AC34  |. 75 2A          |JNZ SHORT 0043AC60
0043AC36  |. 8A4D F8        |MOV CL,BYTE PTR SS:[EBP-8]
0043AC39  |. E8 A8B0FCFF    |CALL 00405CE6
0043AC3E  |. E8 4D800300    |CALL 00472C90
0043AC43  |. 85C0           |TEST EAX,EAX
0043AC45  |. 75 19          |JNZ SHORT 0043AC60
0043AC47  |. 8B4D F0        |MOV ECX,DWORD PTR SS:[EBP-10]
0043AC4A  |. E8 1DBCFFFF    |CALL 0043686C
0043AC4F  |. 84C0           |TEST AL,AL
0043AC51  |. 74 0D          |JE SHORT 0043AC60
0043AC53  |. 8855 F8        |MOV BYTE PTR SS:[EBP-8],DL
0043AC56  |. 52             |PUSH EDX
0043AC57  |. 8B45 F0        |MOV EAX,DWORD PTR SS:[EBP-10]
0043AC5A  |. 8A50 04        |MOV DL,BYTE PTR DS:[EAX+4]
0043AC5D  |. 52             |PUSH EDX
0043AC5E  |.^EB BD          \JMP SHORT 0043AC1D
0043AC60  |> 6A 02          PUSH 2                                   ; /Arg1 = 00000002
0043AC62  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043AC65  |. E8 AE7A0000    CALL 00442718                         ; \00442718
0043AC6A  |. 6A 04          PUSH 4                                   ; /Arg1 = 00000004
0043AC6C  |. 8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]            ; |
0043AC6F  |. E8 A47A0000    CALL 00442718                         ; \00442718
0043AC74  |. B9 50424B00    MOV ECX,004B4250
0043AC79  |. E8 958E0100    CALL 00453B13
0043AC7E  |> 8BE5           MOV ESP,EBP
0043AC80  |. 5D             POP EBP
0043AC81  \. C3             RETN

0043DADA  /$ 55             PUSH EBP
0043DADB  |. 8BEC           MOV EBP,ESP
0043DADD  |. 83EC 0C        SUB ESP,0C
0043DAE0  |. 894D F4        MOV DWORD PTR SS:[EBP-C],ECX
0043DAE3  |. C645 F8 FF     MOV BYTE PTR SS:[EBP-8],0FF
0043DAE7  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
0043DAEA  |. E8 461E0000    CALL 0043F935
0043DAEF  |. 8845 FC        MOV BYTE PTR SS:[EBP-4],AL
0043DAF2  |. 68 FF000000    PUSH 0FF
0043DAF7  |. 6A 01          PUSH 1
0043DAF9  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
0043DAFC  |. E8 BD1D0000    CALL 0043F8BE
0043DB01  |. 50             PUSH EAX                                 ; |Arg2
0043DB02  |. 8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]             ; |
0043DB05  |. 8A48 04        MOV CL,BYTE PTR DS:[EAX+4]               ; |
0043DB08  |. 51             PUSH ECX                                 ; |Arg1
0043DB09  |. B9 50424B00    MOV ECX,004B4250                      ; |
0043DB0E  |. E8 2A780100    CALL 0045533D                         ; \0045533D
0043DB13  |. 8845 F8        MOV BYTE PTR SS:[EBP-8],AL
0043DB16  |. 8B55 F8        MOV EDX,DWORD PTR SS:[EBP-8]
0043DB19  |. 80FA FF        CMP DL,0FF
0043DB1C  |. 0F84 94000000  JE 0043DBB6
0043DB22  |. 8A45 F8        MOV AL,BYTE PTR SS:[EBP-8]
0043DB25  |. 50             PUSH EAX                                 ; /Arg2
0043DB26  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]             ; |
0043DB29  |. 8A51 04        MOV DL,BYTE PTR DS:[ECX+4]               ; |
0043DB2C  |. 52             PUSH EDX                                 ; |Arg1
0043DB2D  |. E8 F77CFFFF    CALL 00435829                         ; \00435829
0043DB32  |. 83C4 08        ADD ESP,8
0043DB35  |. 8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]
0043DB38  |. 8B4D F8        MOV ECX,DWORD PTR SS:[EBP-8]
0043DB3B  |. E8 568CFFFF    CALL 00436796
0043DB40  |. 90             NOP
0043DB41  |. 90             NOP
0043DB42  |. 90             NOP
0043DB43  |. 85C0           TEST EAX,EAX
0043DB45  |. 74 0D          JE SHORT 0043DB54
0043DB47  |. 8A45 F8        MOV AL,BYTE PTR SS:[EBP-8]
0043DB4A  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
0043DB4D  |. 8A51 04        MOV DL,BYTE PTR DS:[ECX+4]
0043DB50  |. 52             PUSH EDX
0043DB51  |. 50             PUSH EAX
0043DB52  |. EB 0B          JMP SHORT 0043DB5F
0043DB54  |> 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8]
0043DB57  |. 50             PUSH EAX
0043DB58  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
0043DB5B  |. 8A51 04        MOV DL,BYTE PTR DS:[ECX+4]
0043DB5E  |. 52             PUSH EDX
0043DB5F  |> B9 F0274900    /MOV ECX,004927F0                     ; |
0043DB64  |. E8 8889FCFF    |CALL 004064F1                        ; \004064F1
0043DB69  |. 8B4D F4        |MOV ECX,DWORD PTR SS:[EBP-C]
0043DB6C  |. FF75 F8        |PUSH DWORD PTR SS:[EBP-8]               ; /Arg1
0043DB6F  |. E8 748DFFFF    |CALL 004368E8                        ; \004368E8
0043DB74  |. 85C0           |TEST EAX,EAX
0043DB76  |. 75 2A          |JNZ SHORT 0043DBA2
0043DB78  |. 8A4D F8        |MOV CL,BYTE PTR SS:[EBP-8]
0043DB7B  |. E8 6681FCFF    |CALL 00405CE6
0043DB80  |. E8 0B510300    |CALL 00472C90
0043DB85  |. 85C0           |TEST EAX,EAX
0043DB87  |. 75 19          |JNZ SHORT 0043DBA2
0043DB89  |. 8B4D F4        |MOV ECX,DWORD PTR SS:[EBP-C]
0043DB8C  |. E8 DB8CFFFF    |CALL 0043686C
0043DB91  |. 84C0           |TEST AL,AL
0043DB93  |. 74 0D          |JE SHORT 0043DBA2
0043DB95  |. 8855 F8        |MOV BYTE PTR SS:[EBP-8],DL
0043DB98  |. 52             |PUSH EDX
0043DB99  |. 8B45 F4        |MOV EAX,DWORD PTR SS:[EBP-C]
0043DB9C  |. 8A50 04        |MOV DL,BYTE PTR DS:[EAX+4]
0043DB9F  |. 52             |PUSH EDX
0043DBA0  |.^EB BD          \JMP SHORT 0043DB5F
0043DBA2  |> 6A 06          PUSH 6                                   ; /Arg1 = 00000006
0043DBA4  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]             ; |
0043DBA7  |. E8 6C4B0000    CALL 00442718                         ; \00442718
0043DBAC  |. B9 50424B00    MOV ECX,004B4250
0043DBB1  |. E8 5D5F0100    CALL 00453B13
0043DBB6  |> 8BE5           MOV ESP,EBP
0043DBB8  |. 5D             POP EBP
0043DBB9  \. C3             RETN

00436796  /$ 55             PUSH EBP
00436797  |. 8BEC           MOV EBP,ESP
00436799  |. 83EC 18        SUB ESP,18
0043679C  |. 8945 F8        MOV DWORD PTR SS:[EBP-8],EAX
0043679F  |. 894D FC        MOV DWORD PTR SS:[EBP-4],ECX
004367A2  |. E8 3FF5FCFF    CALL 00405CE6
004367A7  |. 894D F4        MOV DWORD PTR SS:[EBP-C],ECX
004367AA  |. 6A 08          PUSH 8                                   ; /Arg1 = 00000008
004367AC  |. E8 2FFFFCFF    CALL 004066E0                         ; \004066E0
004367B1  |. 85C0           TEST EAX,EAX
004367B3  |. 75 64          JNZ SHORT 00436819
004367B5  |. 8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
004367B8  |. E8 C3D80900    CALL 004D4080
004367BD  |. 894D F0        MOV DWORD PTR SS:[EBP-10],ECX
004367C0  |. 6A 45          PUSH 45
004367C2  |. E8 D4D80900    CALL 004D409B
004367C7  |. 85C0           TEST EAX,EAX
004367C9  |. 74 4E          JE SHORT 00436819
004367CB  |. 33D2           XOR EDX,EDX
004367CD  |. 42             INC EDX
004367CE  |> 8B4D F8        /MOV ECX,DWORD PTR SS:[EBP-8]
004367D1  |. E8 9A8E0200    |CALL 0045F670
004367D6  |. 8945 EC        |MOV DWORD PTR SS:[EBP-14],EAX
004367D9  |. 8B4D F4        |MOV ECX,DWORD PTR SS:[EBP-C]
004367DC  |. E8 8F8E0200    |CALL 0045F670
004367E1  |. 83FA 00        |CMP EDX,0
004367E4  |. 74 16          |JE SHORT 004367FC
004367E6  |. FF75 EC        |PUSH DWORD PTR SS:[EBP-14]              ; /Arg2
004367E9  |. 50             |PUSH EAX                                ; |Arg1
004367EA  |. B9 F05D4B00    |MOV ECX,004B5DF0                     ; |
004367EF  |. E8 2B000000    |CALL 0043681F                        ; \0043681F
004367F4  |. 84C0           |TEST AL,AL
004367F6  |. 74 21          |JE SHORT 00436819
004367F8  |. 33D2           |XOR EDX,EDX
004367FA  |.^EB D2          \JMP SHORT 004367CE
004367FC  |> 6A 00          PUSH 0                                   ; /Arg6 = 00000000
004367FE  |. 6A 00          PUSH 0                                   ; |Arg5 = 00000000
00436800  |. 6A 00          PUSH 0                                   ; |Arg4 = 00000000
00436802  |. 68 FF000000    PUSH 0FF                                 ; |Arg3 = 000000FF
00436807  |. FF75 EC        PUSH DWORD PTR SS:[EBP-14]               ; |Arg2
0043680A  |. 50             PUSH EAX                                 ; |Arg1
0043680B  |. B9 F05D4B00    MOV ECX,004B5DF0                      ; |
00436810  |. E8 130C0200    CALL 00457428                         ; \00457428
00436815  |. B0 01          MOV AL,1
00436817  |. EB 02          JMP SHORT 0043681B
00436819  |> 33C0           XOR EAX,EAX
0043681B  |> 8BE5           MOV ESP,EBP
0043681D  |. 5D             POP EBP
0043681E  \. C3             RETN
0043681F  /$ 55             PUSH EBP
00436820  |. 8BEC           MOV EBP,ESP
00436822  |. 83EC 1C        SUB ESP,1C
00436825  |. 56             PUSH ESI
00436826  |. 894D E4        MOV DWORD PTR SS:[EBP-1C],ECX
00436829  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
0043682C  |. E8 1FD80900    CALL 004D4050
00436831  |. E8 A6120400    CALL 00477ADC
00436836  |. 8845 F4        MOV BYTE PTR SS:[EBP-C],AL
00436839  |. 8B4D 0C        MOV ECX,DWORD PTR SS:[EBP+C]
0043683C  |. E8 0FD80900    CALL 004D4050
00436841  |. E8 96120400    CALL 00477ADC
00436846  |. 8845 F8        MOV BYTE PTR SS:[EBP-8],AL
00436849  |. C605 FA3F5000 >MOV BYTE PTR DS:[503FFA],1
00436850  |. FF75 F8        PUSH DWORD PTR SS:[EBP-8]                ; /Arg2
00436853  |. FF75 F4        PUSH DWORD PTR SS:[EBP-C]                ; |Arg1
00436856  |. E8 4D4A0200    CALL 0045B2A8                         ; \0045B2A8
0043685B  |. 83C4 08        ADD ESP,8
0043685E  |. 5E             POP ESI
0043685F  |. C605 FA3F5000 >MOV BYTE PTR DS:[503FFA],0
00436866  |. 8BE5           MOV ESP,EBP
00436868  |. 5D             POP EBP
00436869  \. C2 0800        RETN 8
前两段是调用先手、引导、奋战的程序,后面是先手的代码。最好参考着4.0来看,否则你不知道某些函数的作用是什么。


顶部

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




当前时区 GMT+8, 现在时间是 2025-8-10 11:27
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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