武将专属武器代码
写扩展教程的时候,突然想起漏了研究武将专属武器的代码,所以先随便研究了一下,并帖出相关的参考代码。
00407907 /$ 55 PUSH EBP
00407908 |. 8BEC MOV EBP,ESP
0040790A |. 83EC 0C SUB ESP,0C
0040790D |. 56 PUSH ESI
0040790E |. 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
00407911 |. 807D 08 FF CMP BYTE PTR SS:[EBP+8],0FF
00407915 |. 75 07 JNZ SHORT 0040791E
00407917 |. B0 01 MOV AL,1
00407919 |. E9 83000000 JMP 004079A1
0040791E |> 807D 08 17 CMP BYTE PTR SS:[EBP+8],17 ——[EBP+8]是物品编号
00407922 |. 75 15 JNZ SHORT 00407939
00407924 |. 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C] ——[EBP-C]是武将数据的内存地址
00407927 |. E8 D41B0000 CALL 00409500
0040792C |. 83F8 00 CMP EAX,0 ——CALL 409500后出来的EAX值就是武将编号
0040792F |. 75 04 JNZ SHORT 00407935
00407931 |. B0 01 MOV AL,1
00407933 |. EB 6C JMP SHORT 004079A1
00407935 |> 33C0 XOR EAX,EAX
00407937 |. EB 6B JMP SHORT 004079A4
00407939 |> 0FB64D 08 MOVZX ECX,BYTE PTR SS:[EBP+8]
0040793D |. 6BC9 19 IMUL ECX,ECX,19
00407940 |. 81C1 40114A00 ADD ECX,004A1140
00407946 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
00407949 |. E8 9C4D0000 CALL 0040C6EA
0040794E |. 3C 03 CMP AL,3
00407950 |. 75 04 JNZ SHORT 00407956
00407952 |. 33C0 XOR EAX,EAX
00407954 |. EB 4E JMP SHORT 004079A4
00407956 |> 3C 02 CMP AL,2
00407958 |. 75 26 JNZ SHORT 00407980
0040795A |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
0040795D |. E8 8E640100 CALL 0041DDF0
00407962 |. 3C FF CMP AL,0FF
00407964 |. 74 12 JE SHORT 00407978
00407966 |. 0FB6F0 MOVZX ESI,AL
00407969 |. 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
0040796C |. E8 5FFEFFFF CALL 004077D0
00407971 |. 0FB6C0 MOVZX EAX,AL
00407974 |. 3BF0 CMP ESI,EAX
00407976 |. 75 04 JNZ SHORT 0040797C
00407978 |> B0 01 MOV AL,1
0040797A |. EB 25 JMP SHORT 004079A1
0040797C |> 33C0 XOR EAX,EAX
0040797E |. EB 24 JMP SHORT 004079A4
00407980 |> 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
00407983 |. E8 B81B0000 CALL 00409540
00407988 |. 0FB6C0 MOVZX EAX,AL
0040798B |. 50 PUSH EAX
0040798C |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0040798F |. 0FB648 2B MOVZX ECX,BYTE PTR DS:[EAX+2B]
00407993 |. 6BC9 1B IMUL ECX,ECX,1B
00407996 |. 81C1 A0BF4A00 ADD ECX,004ABFA0
0040799C |. E8 1F1C0000 CALL 004095C0
004079A1 |> 0FB6C0 MOVZX EAX,AL
004079A4 |> 5E POP ESI
004079A5 |. 8BE5 MOV ESP,EBP
004079A7 |. 5D POP EBP
004079A8 \. C2 0400 RETN 4
以上代码修改后,原版的17倚天剑就只能给0号曹操装备,其他用剑类部队都不可装备。
若要修改成某个武将可以装备某件非本职部队可以装备的物品,同时不影响该物品原来对应的部队装备,改成这样即可:
0040792F |. 75 08 JNZ SHORT 00407939
以上代码是原版引擎的,其他引擎请参考着来改,同时以上代码只有一个武将对应一件物品,如果需要设置多人对就不同的物品,继续参考着来添加修改就是了。
|