Board logo

标题: 武将专属武器代码 [打印本页]

作者: 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



QUOTE:
原帖由 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



QUOTE:
其他引擎请参考着来改

写得很清楚了。
作者: 李小哥    时间: 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