
标题: 武将专属武器代码 [打印本页]
作者:
godtype 时间: 2011-3-3 10:50 标题: 武将专属武器代码
写扩展教程的时候,突然想起漏了研究武将专属武器的代码,所以先随便研究了一下,并帖出相关的参考代码。
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
以上代码是原版引擎的,其他引擎请参考着来改,同时以上代码只有一个武将对应一件物品,如果需要设置多人对就不同的物品,继续参考着来添加修改就是了。
作者:
513633522 时间: 2011-3-3 12:10
这个好啊!!
作者:
希布 时间: 2011-3-3 12:44
收到,非常有用~
作者:
leo003 时间: 2011-3-3 16:42
又研究新方向了,太强了
作者:
WHITESHIP 时间: 2011-3-4 17:36
呐~毅大又有神研究了……于是……
00407927 |. E8 D41B0000 CALL 00409500
这一条如果改成获取武将兵种的话,能不能引申成兵种专用的道具呢?比如某种弓,弓兵不能用,而弓骑兵可以用~~
本人不懂汇编,只是随便发表下看法= =只看到这个地方似乎可以改,其他就不清楚了,所以才问问毅大能否实现这样一个小变动。
作者:
godtype 时间: 2011-3-4 17:54 标题: 回复 #5 WHITESHIP 的帖子
call 409500改成call 4077d0就可以了,注意是用AL输出。
[ 本帖最后由 godtype 于 2011-3-4 18:56 编辑 ]
作者:
ydldc0810 时间: 2011-3-9 20:02
请教毅大,如果改成特效专署该如何改(武器相同的兵种都能装备,但特效只有特定的人物才有效果)。
作者:
godtype 时间: 2011-3-10 16:53
原帖由 ydldc0810 于 2011-3-9 20:02 发表
请教毅大,如果改成特效专署该如何改(武器相同的兵种都能装备,但特效只有特定的人物才有效果)。
指定的特效只有由指定的人物使用,将对应的特效里面的
PUSH **
CALL 407A09
改成武将编号的判断就了。
作者:
李小哥 时间: 2013-10-17 18:12
……这教程5.9的有效吗?
作者:
李小哥 时间: 2013-11-5 18:09
请教毅大,请问能不能给我一个Star175版本5.9的引擎的代码呢
作者:
godtype 时间: 2013-11-5 18:39
其他引擎请参考着来改
写得很清楚了。
作者:
李小哥 时间: 2013-11-6 13:15
请教毅大,这是什么情况……弄不了啊

[ 本帖最后由 李小哥 于 2013-11-6 13:38 编辑 ]
作者:
燧火氏 时间: 2013-11-6 13:58 标题: 回复 #12 李小哥 的帖子
不是已经写了?将JNZ SHORT 改成 JNZ LONG即可。
作者:
李小哥 时间: 2013-11-6 14:28 标题: 回复 #13 燧火氏 的帖子
……真的吗?没骗我?感觉很不对劲,但是我没试过
[ 本帖最后由 李小哥 于 2013-11-6 14:29 编辑 ]
作者:
李小哥 时间: 2013-11-8 16:44 标题: 回复 #1 godtype 的帖子
请教毅大大,这些代码我真心不会参考着5.9引擎来改
能不能帮我弄
求你了
有三个的
人物序号1,2,3物品序号21,25,26,如果嫌麻烦可以也可以不弄……拜托了
[ 本帖最后由 李小哥 于 2013-11-8 16:47 编辑 ]
附件:
[拜托了]
Ekd5.zip (2013-11-8 16:44, 292.25 K) / 该附件被下载次数 117
http://xycq.org.cn/forum/attachment.php?aid=129978
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |