关于在战场中使用75特殊形象指定后实时改变形象的代码
有很多人反映在战场中使用了75:S特殊形象指定 后,不能实时显示出新的形象,特此研究了一下,并发一下修正后的代码。
以我的引擎4.0系列为准,其他引擎请参考之。
将
00405C08 |. B8 01000000 MOV EAX,1
改成
00405C08 |. E8 44B00000 CALL 00410C51
这里写入新代码:
00410C51 /$ 55 PUSH EBP
00410C52 |. 8BEC MOV EBP,ESP
00410C54 |. 52 PUSH EDX
00410C55 |. E8 7CD80200 CALL 0043E4D6
00410C5A |. 83C4 04 ADD ESP,4
00410C5D |. 3C FF CMP AL,0FF
00410C5F |. 74 0C JE SHORT 00410C6D
00410C61 |. 8AC8 MOV CL,AL
00410C63 |. E8 7E50FFFF CALL 00405CE6
00410C68 |. E8 BFF10200 CALL 0043FE2C
00410C6D |> B8 01000000 MOV EAX,1
00410C72 |. 8BE5 MOV ESP,EBP
00410C74 |. 5D POP EBP
00410C75 \. C3 RETN
这样改就可以了。
附上S5.6引擎的75指令的代码
0043E164 /. 55 PUSH EBP
0043E165 |. 8BEC MOV EBP,ESP
0043E167 |. 6A 02 PUSH 2
0043E169 |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0043E16C |. E8 86A2FDFF CALL Ekd5_56.004183F7
0043E171 |. 0FB7C0 MOVZX EAX,AX
0043E174 |. 50 PUSH EAX
0043E175 |. 6A 50 PUSH 50
0043E177 |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0043E17A |. E8 78A2FDFF CALL Ekd5_56.004183F7
0043E17F |. 0FB7C0 MOVZX EAX,AX
0043E182 |. 5A POP EDX
0043E183 90 NOP
0043E184 |. 90 NOP
0043E185 |. 8882 00105000 MOV BYTE PTR DS:[EDX+501000],AL
0043E18B |. 90 NOP
0043E18C |. 33C0 XOR EAX,EAX
0043E18E |. B0 01 MOV AL,1
0043E190 |. 8BE5 MOV ESP,EBP
0043E192 |. 5D POP EBP
0043E193 \. C3 RETN
附上岱瀛版新引擎的75指令的代码
004D100D 55 PUSH EBP
004D100E 8BEC MOV EBP,ESP
004D1010 83EC 08 SUB ESP,8
004D1013 6A 02 PUSH 2
004D1015 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
004D1018 E8 DA73F4FF CALL 35SLG.004183F7
004D101D 25 FFFF0000 AND EAX,0FFFF
004D1022 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004D1025 6A 50 PUSH 50
004D1027 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
004D102A E8 C873F4FF CALL 35SLG.004183F7
004D102F 25 FFFF0000 AND EAX,0FFFF
004D1034 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004D1037 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004D103A 8882 00A05500 MOV BYTE PTR DS:[EDX+55A000],AL
004D1040 B8 01000000 MOV EAX,1
004D1045 8BE5 MOV ESP,EBP
004D1047 5D POP EBP
004D1048 C3 RETN
谢绝转载!
[ 本帖最后由 godtype 于 2010-12-12 22:50 编辑 ]
|