轩辕春秋文化论坛 » 曹操传MOD制作交流 » 关于6B指令-法术,能否实现加强?


2010-2-21 18:09 a117398902
关于6B指令-法术,能否实现加强?

6B指令-法术,目前只能对应指定的坐标区域,不知能否实现单纯对应个别单位呢?:hz1039:

2010-2-21 18:27 godtype
我的4.0已经改出来了。

2010-2-21 18:37 a117398902
请问毅大,能否透露下代码,因为我想弄在新引擎里,看看OK不:hz1026:

2010-2-21 20:42 godtype
4.0的代码用了两个整形变量,下面的是改良后的,用一个整形变量就可以了:
0041405B  /. 55             PUSH EBP
0041405C  |. 8BEC           MOV EBP,ESP
0041405E  |. 83EC 24        SUB ESP,24
00414061  |. 6A 04          PUSH 4
00414063  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
00414066  |. E8 8C430000    CALL 004183F7
0041406B  |. 25 FFFF0000    AND EAX,0FFFF
00414070  |. 8945 FC        MOV DWORD PTR SS:[EBP-4],EAX
00414073  |. 3D 00800000    CMP EAX,8000
00414078  |. 74 4B          JE SHORT 004140C5
0041407A  |. 6A 04          PUSH 4
0041407C  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
0041407F  |. E8 73430000    CALL 004183F7
00414084  |. 25 FFFF0000    AND EAX,0FFFF
00414089  |. 8945 F8        MOV DWORD PTR SS:[EBP-8],EAX
0041408C  |. 3D 00800000    CMP EAX,8000
00414091  |. 74 32          JE SHORT 004140C5
00414093  |. 6A 4B          PUSH 4B
00414095  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
00414098  |. E8 5A430000    CALL 004183F7
0041409D  |. 25 FFFF0000    AND EAX,0FFFF
004140A2  |. 8945 F4        MOV DWORD PTR SS:[EBP-C],EAX
004140A5  |. 3D 00800000    CMP EAX,8000
004140AA  |. 74 19          JE SHORT 004140C5
004140AC  |. 6A 26          PUSH 26
004140AE  |. 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
004140B1  |. E8 41430000    CALL 004183F7
004140B6  |. 25 FFFF0000    AND EAX,0FFFF
004140BB  |. 8945 E4        MOV DWORD PTR SS:[EBP-1C],EAX
004140BE  |. 3D 00800000    CMP EAX,8000
004140C3  |. 75 0A          JNZ SHORT 004140CF
004140C5  |> B8 05000000    MOV EAX,5
004140CA  |. E9 84010000    JMP 00414253
004140CF  |> 807D FC 28     CMP BYTE PTR SS:[EBP-4],28
004140D3  |. 72 2C          JB SHORT 00414101
004140D5  |. 807D F8 28     CMP BYTE PTR SS:[EBP-8],28
004140D9  |. 72 26          JB SHORT 00414101
004140DB  |. B9 9D0F0000    MOV ECX,0F9D   <——整形变量编号,用来指定武将
004140E0  |. E8 41D00B00    CALL 004D1126
004140E5  |. E8 C2CEFFFF    CALL 00410FAC
004140EA  |. 85C0           TEST EAX,EAX
004140EC  |. 75 0A          JNZ SHORT 004140F8
004140EE  |. B8 05000000    MOV EAX,5
004140F3  |. E9 5B010000    JMP 00414253
004140F8  |> 8875 FC        MOV BYTE PTR SS:[EBP-4],DH
004140FB  |. 8855 F8        MOV BYTE PTR SS:[EBP-8],DL
004140FE  |. 90             NOP
004140FF  |. 90             NOP
00414100  |. 90             NOP
上面的代码是在原来的6B指令里面修改,下面的代码要自己找位置:
00410FAC  /$ 55             PUSH EBP
00410FAD  |. 8BEC           MOV EBP,ESP
00410FAF  |. 83EC 08        SUB ESP,8
00410FB2  |. 50             PUSH EAX
00410FB3  |. E8 1ED50200    CALL 0043E4D6
00410FB8  |. 83C4 04        ADD ESP,4
00410FBB  |. 3C FF          CMP AL,0FF
00410FBD  |. 74 12          JE SHORT 00410FD1
00410FBF  |. 8AC8           MOV CL,AL
00410FC1  |. E8 4A010C00    CALL 004D1110
00410FC6  |. 8A71 06        MOV DH,BYTE PTR DS:[ECX+6]
00410FC9  |. 8A51 07        MOV DL,BYTE PTR DS:[ECX+7]
00410FCC  |. 33C0           XOR EAX,EAX
00410FCE  |. 40             INC EAX
00410FCF  |. EB 02          JMP SHORT 00410FD3
00410FD1  |> 33C0           XOR EAX,EAX
00410FD3  |> 8BE5           MOV ESP,EBP
00410FD5  |. 5D             POP EBP
00410FD6  \. C3             RETN

004D1126   55               PUSH EBP
004D1127   8BEC             MOV EBP,ESP
004D1129   33C0             XOR EAX,EAX
004D112B   8B048D 00B05500  MOV EAX,DWORD PTR DS:[ECX*4+55B000]
004D1132   8BE5             MOV ESP,EBP
004D1134   5D               POP EBP
004D1135   C3               RETN
上面这段是岱瀛新引擎用的,STAR引擎55B000要改成502000
004D1110   55               PUSH EBP
004D1111   8BEC             MOV EBP,ESP
004D1113   81E1 FF000000    AND ECX,0FF
004D1119   6BC9 24          IMUL ECX,ECX,24
004D111C   81C1 502C4B00    ADD ECX,004B2C50
004D1122   8BE5             MOV ESP,EBP
004D1124   5D               POP EBP
004D1125   C3               RETN
上面这段STAR引擎也有写上,具体是哪里忘了,自己找一下。

修改后,在剧本中设置法术的坐标为40,40的时候,就可以从指定的整形变量里面读出武将编号,再根据武将所在位置来显示法术。

2010-2-21 22:52 a117398902
谢谢毅大,我试试:Th

页: [1]


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