标题: 模仿异能:可以模仿周围神兵的特效
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-27 23:56 资料 短消息 看全部作者
模仿异能:可以模仿周围神兵的特效

最近在追看沧海兄写的冰之无限中的神兵玄奇那一卷,里面有看到魔兵无妄天诛的异能:模仿(可以模仿其它魔、神兵的异能),感觉有点意思,就动了在曹操传里修改出这个技能的念头,经过几天研究终于改出将其改出了。我是用毅兄的EXE改的,下面就是模仿异能的代码:

004D40B6      E8 B50F0000                    call Ekd5.004D5070

004D5070      55                             push ebp
004D5071      8BEC                           mov ebp,esp
004D5073      83EC 14                        sub esp,14
004D5076      894D FC                        mov dword ptr ss:[ebp-4],ecx
004D5079      8B45 08                        mov eax,dword ptr ss:[ebp+8]
004D507C      8945 F8                        mov dword ptr ss:[ebp-8],eax
004D507F      6A 3B                          push 3B <---------------------特效号
004D5081      E8 FD28F3FF                    call Ekd5.00407983
004D5086      85C0                           test eax,eax
004D5088      74 4A                          je short Ekd5.004D50D4
004D508A      C745 F0 00000000               mov dword ptr ss:[ebp-10],0
004D5091      8B45 F0                        mov eax,dword ptr ss:[ebp-10]
004D5094      E8 68F1FFFF                    call Ekd5.004D4201
004D5099      395D FC                        cmp dword ptr ss:[ebp-4],ebx
004D509C      74 05                          je short Ekd5.004D50A3
004D509E      FF45 F0                        inc dword ptr ss:[ebp-10]
004D50A1    ^ EB EE                          jmp short Ekd5.004D5091
004D50A3      C745 EC 00000000               mov dword ptr ss:[ebp-14],0
004D50AA      8B45 F0                        mov eax,dword ptr ss:[ebp-10]
004D50AD      8B5D EC                        mov ebx,dword ptr ss:[ebp-14]
004D50B0      3BC3                           cmp eax,ebx
004D50B2      74 1B                          je short Ekd5.004D50CF
004D50B4      83FB 72                        cmp ebx,72
004D50B7      77 1B                          ja short Ekd5.004D50D4
004D50B9      E8 BEF1FFFF                    call Ekd5.004D427C
004D50BE      85C0                           test eax,eax
004D50C0      74 0D                          je short Ekd5.004D50CF
004D50C2      8B45 EC                        mov eax,dword ptr ss:[ebp-14]
004D50C5      E8 CEF2FFFF                    call Ekd5.004D4398
004D50CA      3A45 F8                        cmp al,byte ptr ss:[ebp-8]
004D50CD      74 12                          je short Ekd5.004D50E1
004D50CF      FF45 EC                        inc dword ptr ss:[ebp-14]
004D50D2    ^ EB D6                          jmp short Ekd5.004D50AA
004D50D4      8B4D FC                        mov ecx,dword ptr ss:[ebp-4]
004D50D7      FF75 F8                        push dword ptr ss:[ebp-8]
004D50DA      E8 A428F3FF                    call Ekd5.00407983
004D50DF      EB 0F                          jmp short Ekd5.004D50F0
004D50E1      8B45 EC                        mov eax,dword ptr ss:[ebp-14]
004D50E4      E8 F1F2FFFF                    call Ekd5.004D43DA
004D50E9      8BD0                           mov edx,eax
004D50EB      B8 01000000                    mov eax,1
004D50F0      8BE5                           mov esp,ebp
004D50F2      5D                             pop ebp
004D50F3      C3                             retn

里面有用到一些我自己写的参数

武将A的战场、DATA内存地址:

004D4201      55                             push ebp
004D4202      8BEC                           mov ebp,esp
004D4204      25 FF000000                    and eax,0FF
004D4209      6BC0 24                        imul eax,eax,24
004D420C      05 502C4B00                    add eax,Ekd5.004B2C50
004D4211      8B18                           mov ebx,dword ptr ds:[eax]
004D4213      6BDB 48                        imul ebx,ebx,48
004D4216      031D 70404D00                  add ebx,dword ptr ds:[4D4070]
004D421C      8BE5                           mov esp,ebp
004D421E      5D                             pop ebp
004D421F      C3                             retn

输入:eax=武将A战场编号
输出:eax=武将A战场内存地址,ebx=武将A DATA内存地址


武将A是否在武将B的九宫范围内:

004D427C      55                             push ebp
004D427D      8BEC                           mov ebp,esp
004D427F      E8 9EFFFFFF                    call Ekd5.004D4222
004D4284      3C 01                          cmp al,1
004D4286      77 0C                          ja short Ekd5.004D4294
004D4288      80FB 01                        cmp bl,1
004D428B      77 07                          ja short Ekd5.004D4294
004D428D      B8 01000000                    mov eax,1
004D4292      EB 05                          jmp short Ekd5.004D4299
004D4294      B8 00000000                    mov eax,0
004D4299      8BE5                           mov esp,ebp
004D429B      5D                             pop ebp
004D429C      C3                             retn

004D4222      55                             push ebp
004D4223      8BEC                           mov ebp,esp
004D4225      33C9                           xor ecx,ecx
004D4227      0FB6C8                         movzx ecx,al
004D422A      6BC9 24                        imul ecx,ecx,24
004D422D      81C1 502C4B00                  add ecx,Ekd5.004B2C50
004D4233      8A41 06                        mov al,byte ptr ds:[ecx+6]
004D4236      8A61 07                        mov ah,byte ptr ds:[ecx+7]
004D4239      33C9                           xor ecx,ecx
004D423B      0FB6CB                         movzx ecx,bl
004D423E      6BC9 24                        imul ecx,ecx,24
004D4241      81C1 502C4B00                  add ecx,Ekd5.004B2C50
004D4247      8A59 06                        mov bl,byte ptr ds:[ecx+6]
004D424A      8A79 07                        mov bh,byte ptr ds:[ecx+7]
004D424D      3AC3                           cmp al,bl
004D424F      72 04                          jb short Ekd5.004D4255
004D4251      2AC3                           sub al,bl
004D4253      EB 04                          jmp short Ekd5.004D4259
004D4255      2AD8                           sub bl,al
004D4257      8AC3                           mov al,bl
004D4259      3AE7                           cmp ah,bh
004D425B      72 04                          jb short Ekd5.004D4261
004D425D      2AE7                           sub ah,bh
004D425F      EB 04                          jmp short Ekd5.004D4265
004D4261      2AFC                           sub bh,ah
004D4263      8AE7                           mov ah,bh
004D4265      8ADC                           mov bl,ah
004D4267      25 FF000000                    and eax,0FF
004D426C      81E3 FF000000                  and ebx,0FF
004D4272      8BC8                           mov ecx,eax
004D4274      03CB                           add ecx,ebx
004D4276      8BE5                           mov esp,ebp
004D4278      5D                             pop ebp
004D4279      C3                             retn

输入:eax=武将A战场编号,ebx=武将B战场编号
输出:eax=0(不是),1(是)


读取武将A的武器、防具、辅助品的特效号:

004D4398      55                             push ebp
004D4399      8BEC                           mov ebp,esp
004D439B      E8 D0FFFFFF                    call Ekd5.004D4370
004D43A0      6BC0 19                        imul eax,eax,19
004D43A3      05 40114A00                    add eax,Ekd5.004A1140
004D43A8      8A40 14                        mov al,byte ptr ds:[eax+14]
004D43AB      25 FF000000                    and eax,0FF
004D43B0      6BDB 19                        imul ebx,ebx,19
004D43B3      81C3 40114A00                  add ebx,Ekd5.004A1140
004D43B9      8A5B 14                        mov bl,byte ptr ds:[ebx+14]
004D43BC      81E3 FF000000                  and ebx,0FF
004D43C2      6BC9 19                        imul ecx,ecx,19
004D43C5      81C1 40114A00                  add ecx,Ekd5.004A1140
004D43CB      8A49 14                        mov cl,byte ptr ds:[ecx+14]
004D43CE      81E1 FF000000                  and ecx,0FF
004D43D4      8BE5                           mov esp,ebp
004D43D6      5D                             pop ebp
004D43D7      C3                             retn

004D4370      55                             push ebp
004D4371      8BEC                           mov ebp,esp
004D4373      83EC 04                        sub esp,4
004D4376      E8 86FEFFFF                    call Ekd5.004D4201
004D437B      33C0                           xor eax,eax
004D437D      8A43 2E                        mov al,byte ptr ds:[ebx+2E]
004D4380      8945 FC                        mov dword ptr ss:[ebp-4],eax
004D4383      8BC3                           mov eax,ebx
004D4385      33DB                           xor ebx,ebx
004D4387      33C9                           xor ecx,ecx
004D4389      8A58 31                        mov bl,byte ptr ds:[eax+31]
004D438C      8A48 34                        mov cl,byte ptr ds:[eax+34]
004D438F      8B45 FC                        mov eax,dword ptr ss:[ebp-4]
004D4392      8BE5                           mov esp,ebp
004D4394      5D                             pop ebp
004D4395      C3                             retn

输入:eax=武将A战场编号
输出:eax=武器特效号,ebx=防具特效号,ecx=辅助品特效号


读取武将A的武器、防具、辅助品的效果值:

004D43DA      55                             push ebp
004D43DB      8BEC                           mov ebp,esp
004D43DD      E8 8EFFFFFF                    call Ekd5.004D4370
004D43E2      6BC0 19                        imul eax,eax,19
004D43E5      05 40114A00                    add eax,Ekd5.004A1140
004D43EA      8A40 16                        mov al,byte ptr ds:[eax+16]
004D43ED      25 FF000000                    and eax,0FF
004D43F2      6BDB 19                        imul ebx,ebx,19
004D43F5      81C3 40114A00                  add ebx,Ekd5.004A1140
004D43FB      8A5B 16                        mov bl,byte ptr ds:[ebx+16]
004D43FE      81E3 FF000000                  and ebx,0FF
004D4404      6BC9 19                        imul ecx,ecx,19
004D4407      81C1 40114A00                  add ecx,Ekd5.004A1140
004D440D      8A49 16                        mov cl,byte ptr ds:[ecx+16]
004D4410      81E1 FF000000                  and ecx,0FF
004D4416      8BE5                           mov esp,ebp
004D4418      5D                             pop ebp
004D4419      C3                             retn

输入:eax=武将A战场编号
输出:eax=武器效果值,ebx=防具效果值,ecx=辅助品效果值


顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-28 10:26 资料 短消息 看全部作者
瓦岗的代码地址我不熟,不好加到瓦岗中。

[ 本帖最后由 aaa132536 于 2011-4-28 10:29 编辑 ]


顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-28 18:05 资料 短消息 看全部作者
呵呵,我这个是模仿周围武器特效的。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-29 12:31 资料 短消息 看全部作者
回复 #11 冰麒麟 的帖子

1.是不分敌我都模仿
2、3.只模仿武将九宫范围内的武器特效,是将几个特效都叠加,因此特效有0——8个,当存在几个冲突的特效时,最终取哪个可以参考在毅兄的EXE里将几个冲突的特效设在一起,看哪个取作用。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-29 12:53 资料 短消息 看全部作者
我还没研究到策略模仿,因此不知道原理是否一样。平常特效是否起作用要先判断下宝物特效号是否是该特效的特效号,是才会起作用。而模仿异能的原理是当周围有人的宝物特效号是该特效的特效号,就跳过检测自己宝物特效号是否是该特效的特效号的代码,特效直接起作用。例如混乱攻击:

当装备有模仿异能宝物的武将周围有存在装备着混乱特效武器的武将,则跳过自己是否有混乱特效宝物的检测,直接发到混乱攻击。
顶部
性别:男-离线 aaa132536
(辉夜)

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 363
编号 36085
注册 2005-4-6


发表于 2011-4-29 13:38 资料 短消息 看全部作者
回复 #15 冰麒麟 的帖子

模仿特效上限这个很好设,不过模仿特效的优先顺序就有点难了。你能不能提供个优先特效顺序我试着做一下。
顶部

正在浏览此帖的会员 - 共 0 人在线




当前时区 GMT+8, 现在时间是 2025-8-11 23:11
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.011691 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP