2010-1-21 16:56
蛇夫座
《瓦崗》绝技定制
参考资料: 岱大的《解读KOEI曹操传代码》
周大的《曹操传exe部分函数功能》
严大的《各种兵种与宝物特效》
zhangju的《诚征新特效,你说想法我来实现》
感谢: Godtype大指出上一篇文章的错误,并提供参考资料
经验: 定制绝技很简单,函数岱大已经封装好了,只要分析出参数再调用就好了,难的是调试与执行逻辑
对于复杂的逻辑可以先用高级语言写出来(强烈推荐用WIN32汇编)再通过调试器看反汇编代码或者
直接复制二进制数据最后来修正,要注意为远跳转指令预留空间
对于经常重复调用的函数或者指令可以写成宏函数
大部分地方都可以使用压栈空出寄存器,使用8位指令代替32位省下字节空间
对游戏感兴趣的话最好亲身反汇编一下,会学到很多东西
文章较长, 提供文本和修改过的引擎下载参考
由于暂停上网, 提问可能无法在短期内回复, 有错处请版主代为修正, 谢谢!!
2010-1-21 16:57
蛇夫座
谢映登----[坠天贯日式]
普通爆击落、必中无反、直线穿透3格,被攻击武将一定机率降1~2项能力(种类随机),其余被穿透
武将则一定机率降之前两项能力中的一种(种类也是随机)
修改处一: 添加绝招名字符串
UE中查找字符串: 【绝】 二进制: A1 BE BE F8 A1 BF
文件偏移: 00126500H
在所有绝招名末尾粘贴以下字符串: 【绝】坠天贯日式
查看文件偏移对应区块: .rdata2 00155000 00004800 00125E00 00004800 E0000060
查看PE映像基址: 00400000H
绝招字符串所在区块内存地址 = 00400000H + 00155000H + (00126500H - 00125E00H) = 555700H
00555700 A1 BE BE F8 A1 BF C8 FD B0 E5 B8 AB 00 00 00 0A 【绝】三板斧....
00555710 A1 BE BE F8 A1 BF B2 D4 C1 FA B9 FD D5 F3 C7 B9 【绝】苍龙过阵枪
00555720 00 A1 BE BE F8 A1 BF C9 B1 CA D6 EF B5 00 00 00 .【绝】杀手锏...
00555730 A1 BE BE F8 A1 BF BB D8 C2 ED C7 B9 00 00 00 00 【绝】回马枪....
00555740 A1 BE BE F8 A1 BF BE A1 C3 FC C8 FD B4 B8 00 00 【绝】尽命三锤..
00555750 A1 BE BE F8 A1 BF CD FE D5 F0 B0 CB BB C4 00 00 【绝】威震八荒..
00555760 A1 BE BE F8 A1 BF BA E1 C9 A8 C7 A7 BE FC 00 00 【绝】横扫千军..
00555770 A1 BE BE F8 A1 BF CC A4 C6 C6 C1 AC D3 AA 00 00 【绝】踏破连营..
00555780 A1 BE BE F8 A1 BF D7 D3 C4 B8 B4 A9 D4 C6 C6 C6 【绝】子母穿云破
00555790 00 CE DE 00 00 00 00 00 00 00 00 00 00 00 00 00 .无.............
005557A0 A1 BE BC BC A1 BF B7 EF CE E8 BE C5 CC EC 00 00 【技】凤舞九天..
005557B0 A1 BE BC BC A1 BF C1 FA D2 F7 00 00 00 00 00 00 【技】龙吟......
005557C0 A1 BE BC BC A1 BF B9 ED C3 C5 B5 B6 00 00 00 00 【技】鬼门刀....
005557D0 00 00 A1 BE BC BC A1 BF BA E1 CD C6 B0 CB C2 ED ..【技】横推八马
005557E0 B5 B9 00 00 A1 BE BC BC A1 BF CB AB C0 D7 D2 FD 倒..【技】双雷引
005557F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00555800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00555810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00555820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00555830 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00555840 A1 BE BE F8 A1 BF D7 B9 CC EC B9 E1 C8 D5 CA BD 【绝】坠天贯日式
00555850 00 00 A1 BE BC BC A1 BF D6 EF CF C9 BD A3 00 00 ..【技】诛仙剑..
00555860 00 00 00 00 A1 BE BC BC A1 BF D1 AA C4 A7 B5 B6 ....【技】血魔刀
00555870 00 00 00 00 00 00 A1 BE BC BC A1 BF D5 E6 BF D5 ......【技】真空
00555880 C8 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 刃..............
修改处二: 右键点击武将时显示绝技名
004D3C1E /E9 ED000000 jmp 004D3D10
004D3D10 83F8 22 cmp eax, 22 ; 李无霸
004D3D13 ^74 9D je short 004D3CB2
004D3D15 83F8 2B cmp eax, 2B ; 魏文通
004D3D18 ^74 A2 je short 004D3CBC
004D3D1A 83F8 2C cmp eax, 2C ; 新文礼
004D3D1D ^74 A7 je short 004D3CC6
004D3D1F 83F8 18 cmp eax, 18 ; 谢映登
004D3D22 ^74 84 je short 004D3CA8
004D3D24 83F8 23 cmp eax, 23 ; 苏烈
004D3D27 ^0F84 71FFFFFF je 004D3C9E
004D3D2D ^E9 97FEFFFF jmp 004D3BC9
004D3C9E 68 52585500 push 00555852
004D3CA3 -E9 8F4AFAFF jmp 00478737
004D3CA8 68 40585500 push 00555840
004D3CAD -E9 854AFAFF jmp 00478737
修改处三: 启用绝招按钮
004D5495 83F8 18 cmp eax, 18 ; 谢映登 DATA_24
004D5498 ^74 9B je short 004D5435
004D549A ^EB 92 jmp short 004D542E
修改处四: 增加武将绝招响应
004D3183 /EB 15 jmp short 004D319A
004D3185 |90 nop
004D3186 |90 nop
004D3187 |90 nop
004D3188 |90 nop
004D319A /0F84 AE000000 je 004D324E ; 是罗成
004D31A0 |83FB 18 cmp ebx, 18 ; 是否谢映登??
004D31A3 |0F84 A70B0000 je 004DA10C
004D31A9 ^|EB DE jmp short 004D3189 ; 其它武将不处理
修改处五: 更改武将致命一击台词(随便,可以不改)
Fhua.wa ==> Imsg.e5
修改处六: 使普通爆击与绝招爆击伤害计算分开(随便,可以不改)
00405F44 . 8D8C90 84000000 lea ecx, dword ptr [eax+edx*4+84] ; 取内存[eax+edx*4+84]的偏移
00405F4B . 51 push ecx ; 保护偏移地址
00405F4C . 8B09 mov ecx, dword ptr [ecx] ; 取物理伤害值
00405F4E 8B45 F8 mov eax, dword ptr [ebp-8] ; 被攻方SAV映射指针
00405F51 50 push eax
00405F52 . 8B45 F4 mov eax, dword ptr [ebp-C] ; 取攻击信息指针
00405F55 8B40 08 mov eax, dword ptr [eax+8] ; 攻方SAV映射指针
00405F58 50 push eax
00405F59 51 push ecx
00405F5A E8 A1400D00 call 004DA000 ; 新爆击伤害计算函数
00405F5F 59 pop ecx ; 弹出[eax+edx*4+84]偏移
00405F60 8901 mov dword ptr [ecx], eax ; 保存计算到的爆击伤害值
00405F62 90 nop
00405F63 90 nop
00405F64 . 90 nop
00405F65 . 90 nop
二进制数据: 点数据窗,CTRL+G(到指定地址)==> CTRL+E(编辑二进制数据)
==> SHIFT+INSERT(粘贴二进制数据)
8D 8C 90 84 00 00 00 51 8B 09 8B 45 F8 50 8B 45
F4 8B 40 08 50 51 E8 A1 40 0D 00 59 89 01 90 90
90 90
注意: 对正上面反汇编代码修正CALL或者其它远跳转指令的地址
004D9FFF 90 nop
004DA000 55 push ebp ; 新爆击伤害计算函数,武力越高伤害越大
004DA001 8BEC mov ebp, esp ; (区分普通爆击与绝招爆击)
004DA003 83EC 0C sub esp, 0C
004DA006 8B45 08 mov eax, dword ptr [ebp+8]
004DA009 85C0 test eax, eax ; 检测伤害值是否为0
004DA00B 0F84 95000000 je 004DA0A6 ; 若为0表示MISS
004DA011 833D 14F34C00 00 cmp dword ptr [4CF314], 0 ; 检测是绝招爆击还是一般爆击
004DA018 75 0E jnz short 004DA028
004DA01A B9 82000000 mov ecx, 82 ; 普通爆击输出最低伤害130%
004DA01F C745 F4 A0000000 mov dword ptr [ebp-C], 0A0 ; 普通爆击浮动线160%
004DA026 EB 19 jmp short 004DA041
004DA028 8B4D 0C mov ecx, dword ptr [ebp+C]
004DA02B 66:8B11 mov dx, word ptr [ecx] ; 取武将代码
004DA02E 66:81FA 1810 cmp dx, 1018 ; 检查是否谢映登有绝招
004DA033^ 74 E5 je short 004DA01A ; 是则普通爆击伤害
004DA035 B9 AA000000 mov ecx, 0AA ; 绝招爆击输出最低伤害170%
004DA03A C745 F4 C8000000 mov dword ptr [ebp-C], 0C8 ; 绝招爆击浮动线200
004DA041 F7E1 mul ecx
004DA043 B9 64000000 mov ecx, 64
004DA048 33D2 xor edx, edx
004DA04A F7F1 div ecx
004DA04C 8945 FC mov dword ptr [ebp-4], eax ; 最少输出
004DA04F 8B4D 10 mov ecx, dword ptr [ebp+10]
004DA052 6A 01 push 1
004DA054 6A 00 push 0
004DA056 E8 3FD0F2FF call 0040709A ; 获取被攻方武力
004DA05B 8945 F8 mov dword ptr [ebp-8], eax
004DA05E 8B4D 0C mov ecx, dword ptr [ebp+C]
004DA061 6A 01 push 1
004DA063 6A 00 push 0
004DA065 E8 30D0F2FF call 0040709A ; 获取攻方武力
004DA06A 2B45 F8 sub eax, dword ptr [ebp-8] ; 求双方武力差
004DA06D 83F8 CE cmp eax, -32
004DA070 7C 24 jl short 004DA096 ; 若攻方武力低于被攻方50,则最少输出
004DA072 83C0 64 add eax, 64 ; 武力差+100
004DA075 8945 F8 mov dword ptr [ebp-8], eax
004DA078 8B45 08 mov eax, dword ptr [ebp+8]
004DA07B F765 F4 mul dword ptr [ebp-C] ; 物伤*浮动线
004DA07E B9 64000000 mov ecx, 64
004DA083 33D2 xor edx, edx
004DA085 F7F1 div ecx
004DA087 F765 F8 mul dword ptr [ebp-8]
004DA08A 33D2 xor edx, edx
004DA08C F7F1 div ecx ; 物*浮动线/100*(差+100)/100
004DA08E 3B45 FC cmp eax, dword ptr [ebp-4] ; 检查新的爆击伤害与最少伤害
004DA091 72 03 jb short 004DA096
004DA093 8945 FC mov dword ptr [ebp-4], eax
004DA096 6A 08 push 8
004DA098 E8 765AFAFF call 0047FB13 ; 生成0~7的随机数
004DA09D 83C4 04 add esp, 4
004DA0A0 83E8 03 sub eax, 3 ; 取值:-3~4
004DA0A3 0345 FC add eax, dword ptr [ebp-4] ; 随机数+爆击伤害值
004DA0A6 8BE5 mov esp, ebp
004DA0A8 5D pop ebp
004DA0A9 C2 0C00 retn 0C
004DA0AC 90 nop
004DA0AD 90 nop
二进制数据:
90 55 8B EC 83 EC 0C 8B 45 08 85 C0 0F 84 95 00
00 00 83 3D 14 F3 4C 00 00 75 0E B9 82 00 00 00
C7 45 F4 A0 00 00 00 EB 19 8B 4D 0C 66 8B 11 66
81 FA 18 10 74 E5 B9 AA 00 00 00 C7 45 F4 C8 00
00 00 F7 E1 B9 64 00 00 00 33 D2 F7 F1 89 45 FC
8B 4D 10 6A 01 6A 00 E8 3F D0 F2 FF 89 45 F8 8B
4D 0C 6A 01 6A 00 E8 30 D0 F2 FF 2B 45 F8 83 F8
CE 7C 24 83 C0 64 89 45 F8 8B 45 08 F7 65 F4 B9
64 00 00 00 33 D2 F7 F1 F7 65 F8 33 D2 F7 F1 3B
45 FC 72 03 89 45 FC 6A 08 E8 76 5A FA FF 83 C4
04 83 E8 03 03 45 FC 8B E5 5D C2 0C 00 90 90
修改处七: 穿透特效设置
00407821 /E9 28050000 jmp 00407D4E
00407826 |E8 A5FFFFFF call 004077D0 ; 获取ECX武将职业(三转兵种为一个职业)
0040782B |833D 20AC5500 01 cmp dword ptr [55AC20], 1 ; 若这个地址中的值为1,则九宫穿透
00407832 |74 41 je short 00407875
00407D4E 803D 14F34C00 00 cmp byte ptr [4CF314], 0 ; 检测绝招发动标志
00407D55 -0F85 89230D00 jnz 004DA0E4
00407D5B C645 FC 00 mov byte ptr [ebp-4], 0 ; 初始化局部变量为0(无穿透)
00407D5F ^E9 C2FAFFFF jmp 00407826 ; 继续下一个判定
004DA0E4 0FB701 movzx eax, word ptr [ecx] ; 取武将代码
004DA0E7 66:3D 1810 cmp ax, 1018 ; 检查是否谢映登
004DA0EB 74 09 je short 004DA0F6
004DA0ED C645 FC 00 mov byte ptr [ebp-4], 0 ; 原来处代码
004DA0F1 -E9 30D7F2FF jmp 00407826
004DA0F6 66:B8 0700 mov ax, 7 ; 穿3格
004DA0FA -E9 8CD7F2FF jmp 0040788B ; 跳转至穿透函数结束
004DA0FF 90 nop
00435D26 0FB64D 0C movzx ecx, byte ptr [ebp+C]
00435D2A 894D E0 mov dword ptr [ebp-20], ecx
00435D2D 80F9 06 cmp cl, 6 ; 检查穿透特效值
00435D30 76 0A jbe short 00435D3C
00435D32 806D E0 05 sub byte ptr [ebp-20], 5 ; 特效值-5作为循环计数器
00435D36 E9 4F040000 jmp 0043618A
00435D3B 90 nop
0043623A /EB 03 jmp short 0043623F ; for循环头部
0043623C |FF45 F0 inc dword ptr [ebp-10] ; 当前循环次数
0043623F \8B4D F0 mov ecx, dword ptr [ebp-10]
00436242 3B4D E0 cmp ecx, dword ptr [ebp-20] ; 检查要循环的次数
00436245 90 nop
00436246 90 nop
00436247 90 nop
00436248 90 nop
修改处八: 记录被穿透武将战场编号
00405E46 0FB645 FC movzx eax, byte ptr [ebp-4]
00405E4A 8B4D F4 mov ecx, dword ptr [ebp-C]
00405E4D 8A5408 10 mov dl, byte ptr [eax+ecx+10] ; 取被攻击武将战场编号
00405E51 80FA FF cmp dl, 0FF ; 检查是否大于255人
00405E54 0F84 23030000 je 0040617D
00405E5A 8851 01 mov byte ptr [ecx+1], dl ; 转存被攻击武将战场编号
00405E5D B9 14F34C00 mov ecx, 004CF314
00405E62 83C1 06 add ecx, 6 ; 绝招标志位+6处
00405E65 8079 FC 18 cmp byte ptr [ecx-4], 18 ; 检查是否谢映登的绝招
00405E69 75 13 jnz short 00405E7E
00405E6B 8079 FE 00 cmp byte ptr [ecx-2], 0 ; 要记录的武将人数
00405E6F 74 0D je short 00405E7E
00405E71 FE49 FE dec byte ptr [ecx-2]
00405E74 0FB641 FF movzx eax, byte ptr [ecx-1] ; 取当前计数值
00405E78 881408 mov byte ptr [eax+ecx], dl
00405E7B FE41 FF inc byte ptr [ecx-1]
00405E7E 0FB6CA movzx ecx, dl
00405E81 90 nop
二进制数据:
0F B6 45 FC 8B 4D F4 8A 54 08 10 80 FA FF 0F 84
23 03 00 00 88 51 01 B9 14 F3 4C 00 83 C1 06 80
79 FC 18 75 13 80 79 FE 00 74 0D FE 49 FE 0F B6
41 FF 88 14 08 FE 41 FF 0F B6 CA 90
修改处九: 执行逻辑
004DA100 6A 01 push 1 ; 为0则不显示动画
004DA102 6A 00 push 0 ; 为6则增加,3或以下则减
004DA104 50 push eax ; 想要增减的能力种类,0=攻1=防~~5=移004DA105 52 push edx ; 要增减能力的武将DATA编号
004DA106 E8 5109F8FF call 0045AA5C ; 增减武将能力函数,ECX参数:常量4B5DF0h
004DA10B C3 retn
004DA10C E8 D9C3FFFF call 004D64EA ; 绘制红色背景光栅
004DA111 68 46585500 push 00555846 ; "坠天贯日式"
004DA116 B9 083D4B00 mov ecx, 004B3D08
004DA11B E8 46C2FFFF call 004D6366 ; 战场背景显示绝招名
004DA120 B9 14F34C00 mov ecx, 004CF314
004DA125 C641 02 18 mov byte ptr [ecx+2], 18 ; 填写谢映登DATA编号
004DA129 83C1 04 add ecx, 4 ; 指向绝招标志+4处
004DA12C 894D C4 mov dword ptr [ebp-3C], ecx
004DA12F 8B01 mov eax, dword ptr [ecx]
004DA131 8B51 04 mov edx, dword ptr [ecx+4]
004DA134 8945 CC mov dword ptr [ebp-34], eax ; 保护原全局变量
004DA137 8945 D0 mov dword ptr [ebp-30], eax ; 注意堆栈地址由高向低
004DA13A 66:C701 0200 mov word ptr [ecx], 2 ; 要记录被穿透武将计数,超过6会缓冲区溢出
004DA13F FF75 F8 push dword ptr [ebp-8]
004DA142 FF75 E4 push dword ptr [ebp-1C]
004DA145 E8 3794FFFF call 004D3581 ; 致命一击台词并产生攻击动作
004DA14A 8B45 CC mov eax, dword ptr [ebp-34]
004DA14D 8B4D C4 mov ecx, dword ptr [ebp-3C]
004DA150 8701 xchg dword ptr [ecx], eax
004DA152 8945 CC mov dword ptr [ebp-34], eax ; 注意堆栈地址由高向低
004DA155 8B45 D0 mov eax, dword ptr [ebp-30]
004DA158 8741 04 xchg dword ptr [ecx+4], eax
004DA15B 8945 D0 mov dword ptr [ebp-30], eax
004DA15E 33C0 xor eax, eax
004DA160 8945 E0 mov dword ptr [ebp-20], eax ; 被穿透武将增减能力计数清0
004DA163 48 dec eax
004DA164 8945 DC mov dword ptr [ebp-24], eax ; 能力增减标志(1)为未发生
004DA167 8945 D8 mov dword ptr [ebp-28], eax ; 能力增减标志(2)为未发生
004DA16A C745 C8 F05D4B00 mov dword ptr [ebp-38], 004B5DF0
004DA171 E8 00C4FFFF call 004D6576
004DA176 6A 0A push 0A
004DA178 E8 9659FAFF call 0047FB13 ; 产生0~9的随机数
004DA17D 59 pop ecx
004DA17E 8945 D4 mov dword ptr [ebp-2C], eax ; 保存第一个随机数
004DA181 3C 05 cmp al, 5
004DA183 77 12 ja short 004DA197 ; 若大于5则第二次机会
004DA185 75 02 jnz short 004DA189 ; 正常取值0~4
004DA187 B0 01 mov al, 1 ; 预定义增减能力种类
004DA189 8945 DC mov dword ptr [ebp-24], eax ; 保存增减的第一种能力
004DA18C 8B55 F0 mov edx, dword ptr [ebp-10]
004DA18F 8B4D C8 mov ecx, dword ptr [ebp-38]
004DA192 E8 69FFFFFF call 004DA100 ; 调用减敌能力宏
004DA197 6A 0A push 0A
004DA199 E8 7559FAFF call 0047FB13
004DA19E 59 pop ecx
004DA19 0145 D4 add dword ptr [ebp-2C], eax ; 计算两次随机数之和
004DA1A2 3C 04 cmp al, 4
004DA1A4 77 23 ja short 004DA1C9 ; 若大于4则跳转至其它武将能力处理
004DA1A6 8B4D DC mov ecx, dword ptr [ebp-24]
004DA1A9 8BD1 mov edx, ecx
004DA1AB 42 inc edx ; 检查发生能力下降的次数
004DA1AC 75 05 jnz short 004DA1B3 ; 被攻击武将能力已发生下降了一次
004DA1AE 8945 DC mov dword ptr [ebp-24], eax
004DA1B1 EB 0B jmp short 004DA1BE
004DA1B3 3AC1 cmp al, cl ; 检查第二个随机数与第一次能力是否相同
004DA1B5 75 04 jnz short 004DA1BB
004DA1B7 B0 05 mov al, 5
004DA1B9 FEC8 dec al ; 增减能力种类前移一种,避免重复
004DA1BB 8945 D8 mov dword ptr [ebp-28], eax
004DA1BE 8B55 F0 mov edx, dword ptr [ebp-10]
004DA1C1 8B4D C8 mov ecx, dword ptr [ebp-38]
004DA1C4 E8 37FFFFFF call 004DA100
004DA1C9 8D5D CC lea ebx, dword ptr [ebp-34] ; 被穿透的其它武将能力下降处理
004DA1CC 83C3 02 add ebx, 2
004DA1CF 807B FF 01 cmp byte ptr [ebx-1], 1 ; 检测被穿透的其它武将人数
004DA1D3 76 56 jbe short 004DA22B ; 若少于等于1则结束
004DA1D5 8B45 DC mov eax, dword ptr [ebp-24]
004DA1D8 40 inc eax ; 检查被攻击武将发生能力下降次数
004DA1D9 74 50 je short 004DA22B ; 若两次机会都失败跳转至结束
004DA1DB 8B45 D8 mov eax, dword ptr [ebp-28]
004DA1DE 8BC8 mov ecx, eax
004DA1E0 41 inc ecx
004DA1E1 74 0D je short 004DA1F0 ; 被攻击武将只发生了一次能力下降
004DA1E3 8A4D D4 mov cl, byte ptr [ebp-2C]
004DA1E6 F6C1 01 test cl, 1 ; 检查两次随机数之和的最低位
004DA1E9 75 10 jnz short 004DA1FB
004DA1EB 8B45 DC mov eax, dword ptr [ebp-24] ; 若最低位为0则取第一次随机数代表的能力
004DA1EE EB 0B jmp short 004DA1FB
004DA1F0 8A4D D4 mov cl, byte ptr [ebp-2C]
004DA1F3 F6C1 01 test cl, 1 ; 检查两次随机数之和的最低位
004DA1F6 74 33 je short 004DA22B ; 跳转至循环结束
004DA1F8 8B45 DC mov eax, dword ptr [ebp-24]
004DA1FB 8B4D C8 mov ecx, dword ptr [ebp-38]
004DA1FE 8A53 FF mov dl, byte ptr [ebx-1]
004DA201 FECA dec dl ; 循环次数=要记录人数-1
004DA203 3855 E0 cmp byte ptr [ebp-20], dl
004DA206 73 23 jnb short 004DA22B
004DA208 FE45 E0 inc byte ptr [ebp-20] ; 当前循环计数加1
004DA20B 0FB655 E0 movzx edx, byte ptr [ebp-20] ; 取当前循环计数作变址
004DA20F 0FB6141A movzx edx, byte ptr [edx+ebx] ; 取记录下来的其它武将战场编号
004DA213 6BD2 24 imul edx, edx, 24
004DA216 81C2 502C4B00 add edx, 004B2C50 ; 其它武将战场信息地址
004DA21C 8B12 mov edx, dword ptr [edx] ; 取DATA编号
004DA21E 53 push ebx
004DA21F 51 push ecx
004DA220 50 push eax
004DA221 E8 DAFEFFFF call 004DA100
004DA226 58 pop eax
004DA227 59 pop ecx
004DA228 5B pop ebx
004DA229 ^EB D3 jmp short 004DA1FE
004DA22B ^E9 598FFFFF jmp 004D3189 ; 谢映登绝招处理结束
二进制数据:(由于太长了要分两次不间断粘贴)
6A 01 6A 00 50 52 E8 51 09 F8 FF C3 E8 D9 C3 FF
FF 68 46 58 55 00 B9 08 3D 4B 00 E8 46 C2 FF FF
B9 14 F3 4C 00 C6 41 02 18 83 C1 04 89 4D C4 8B
01 8B 51 04 89 45 CC 89 45 D0 66 C7 01 02 00 FF
75 F8 FF 75 E4 E8 37 94 FF FF 8B 45 CC 8B 4D C4
87 01 89 45 CC 8B 45 D0 87 41 04 89 45 D0 33 C0
89 45 E0 48 89 45 DC 89 45 D8 C7 45 C8 F0 5D 4B
00 E8 00 C4 FF FF 6A 0A E8 96 59 FA FF 59 89 45
D4 3C 05 77 12 75 02 B0 01 89 45 DC 8B 55 F0 8B
4D C8 E8 69 FF FF FF 6A 0A E8 75 59 FA FF 59 01
45 D4 3C 04 77 23 8B 4D DC 8B D1 42 75 05 89 45
DC EB 0B 3A C1 75 04 B0 05 FE C8 89 45 D8 8B 55
F0 8B 4D C8 E8 37 FF FF FF
8D 5D CC 83 C3 02 80
7B FF 01 76 56 8B 45 DC 40 74 50 8B 45 D8 8B C8
41 74 0D 8A 4D D4 F6 C1 01 75 10 8B 45 DC EB 0B
8A 4D D4 F6 C1 01 74 33 8B 45 DC 8B 4D C8 8A 53
FF FE CA 38 55 E0 73 23 FE 45 E0 0F B6 55 E0 0F
B6 14 1A 6B D2 24 81 C2 50 2C 4B 00 8B 12 53 51
50 E8 DA FE FF FF 58 59 5B EB D3 E9 59 8F FF FF
2010-1-21 16:58
蛇夫座
管毅---- 增加吹飞特性,短兵相接时发动
修改处一:
004D3A9D /E9 BA030000 jmp 004DA300
004D3AA8 /E9 8B040000 jmp 004DA400
修改处二: 吹飞攻击预处理
004DA300 60 pushad ; 管毅吹飞攻击预处理
004DA301 BE 14F34C00 mov esi, 004CF314
004DA306 83C6 04 add esi, 4
004DA309 8975 D8 mov dword ptr [ebp-28], esi
004DA30C 8B06 mov eax, dword ptr [esi]
004DA30E 8945 E0 mov dword ptr [ebp-20], eax ; 保护全局变量
004DA311 8B46 04 mov eax, dword ptr [esi+4]
004DA314 8945 DC mov dword ptr [ebp-24], eax
004DA317 8B45 F4 mov eax, dword ptr [ebp-C] ; 被攻击武将战场信息指针
004DA31A 8906 mov dword ptr [esi], eax
004DA31C 83C6 04 add esi, 4
004DA31F 66:C746 02 0010 mov word ptr [esi+2], 1000 ; 管毅武将代码
004DA325 8A45 ED mov al, byte ptr [ebp-13] ; 攻方战场横坐标(左到右数)
004DA328 8A5D EC mov bl, byte ptr [ebp-14] ; 攻方战场纵坐标(上到下数
004DA32B 8A4D EF mov cl, byte ptr [ebp-11]
004DA32E 8A55 EE mov dl, byte ptr [ebp-12]
004DA331 3AC1 cmp al, cl
004DA333 75 0D jnz short 004DA342
004DA335 3ADA cmp bl, dl
004DA337 73 09 jnb short 004DA342
004DA339 880E mov byte ptr [esi], cl ; 攻方在被攻方上方时
004DA33B FEC2 inc dl
004DA33D 8856 01 mov byte ptr [esi+1], dl
004DA340 EB 36 jmp short 004DA378
004DA342 3AC1 cmp al, cl
004DA344 75 0D jnz short 004DA353
004DA346 3ADA cmp bl, dl
004DA348 76 09 jbe short 004DA353
004DA34A 880E mov byte ptr [esi], cl ; 攻方在被攻方下方时
004DA34C FECA dec dl
004DA34E 8856 01 mov byte ptr [esi+1], dl
004DA351 EB 25 jmp short 004DA378
004DA353 3ADA cmp bl, dl
004DA355 75 0D jnz short 004DA364
004DA357 3AC1 cmp al, cl
004DA359 73 09 jnb short 004DA364
004DA35B FEC1 inc cl
004DA35D 880E mov byte ptr [esi], cl ; 攻方在被攻方左侧时
004DA35F 8856 01 mov byte ptr [esi+1], dl
004DA362 EB 14 jmp short 004DA378
004DA364 3ADA cmp bl, dl
004DA366 75 0D jnz short 004DA375
004DA368 3AC1 cmp al, cl
004DA36A 76 09 jbe short 004DA375
004DA36C FEC9 dec cl ; 攻方在被攻方右侧时
004DA36E 880E mov byte ptr [esi], cl
004DA370 8856 01 mov byte ptr [esi+1], dl
004DA373 EB 03 jmp short 004DA378
004DA375 61 popad ; 非短兵相接
004DA376 EB 2B jmp short 004DA3A3
004DA378 61 popad
004DA379 8B55 D8 mov edx, dword ptr [ebp-28]
004DA37C 83C2 04 add edx, 4
004DA37F 52 push edx ; 要检测的坐标指针
004DA380 E8 FFB4F5FF call 00435884 ; 获取08栈坐标上武将的战场编号
004DA385 5A pop edx
004DA386 3C FF cmp al, 0FF ; 若坐标上无武将则返回0FFh
004DA388 75 19 jnz short 004DA3A3
004DA38A 52 push edx ; 要检测的坐标指针
004DA38B E8 01B6F5FF call 00435991 ; 检查坐标是否合法??
004DA390 5A pop edx
004DA391 25 FF000000 and eax, 0FF
004DA396 50 push eax
004DA397 8B4D F4 mov ecx, dword ptr [ebp-C] ; 攻方武将战场信息指针
004DA39A E8 3054F6FF call 0043F7CF ; 获取移动到目标位置所消耗的移动力
004DA39F 3C FF cmp al, 0FF ; 0FFh为不可移动
004DA3A1 75 0B jnz short 004DA3AE
004DA3A3 33C0 xor eax, eax
004DA3A5 48 dec eax
004DA3A6 8B4D D8 mov ecx, dword ptr [ebp-28]
004DA3A9 8901 mov dword ptr [ecx], eax ; 清除全局标志位(1)
004DA3AB 8941 04 mov dword ptr [ecx+4], eax ; 清除全局标志位(2)
004DA3AE FF75 F8 push dword ptr [ebp-8]
004DA3B1 FF75 E4 push dword ptr [ebp-1C]
004DA3B4 ^E9 EA96FFFF jmp 004D3AA3
二进制数据:
60 BE 14 F3 4C 00 83 C6 04 89 75 D8 8B 06 89 45
E0 8B 46 04 89 45 DC 8B 45 F4 89 06 83 C6 04 66
C7 46 02 00 10 8A 45 ED 8A 5D EC 8A 4D EF 8A 55
EE 3A C1 75 0D 3A DA 73 09 88 0E FE C2 88 56 01
EB 36 3A C1 75 0D 3A DA 76 09 88 0E FE CA 88 56
01 EB 25 3A DA 75 0D 3A C1 73 09 FE C1 88 0E 88
56 01 EB 14 3A DA 75 0D 3A C1 76 09 FE C9 88 0E
88 56 01 EB 03 61 EB 2B 61 8B 55 D8 83 C2 04 52
E8 FF B4 F5 FF 5A 3C FF 75 19 52 E8 01 B6 F5 FF
5A 25 FF 00 00 00 50 8B 4D F4 E8 30 54 F6 FF 3C
FF 75 0B 33 C0 48 8B 4D D8 89 01 89 41 04 FF 75
F8 FF 75 E4 E9 EA 96 FF FF 90
修改处三: 返回后处理,还完全局变量
004DA3C0 8B45 E0 mov eax, dword ptr [ebp-20]
004DA3C3 8B4D D8 mov ecx, dword ptr [ebp-28]
004DA3C6 8901 mov dword ptr [ecx], eax ; 还完全局变量
004DA3C8 8B45 DC mov eax, dword ptr [ebp-24]
004DA3CB 8941 04 mov dword ptr [ecx+4], eax
004DA3CE E8 A3C1FFFF call 004D6576
004DA3D3 ^E9 D596FFFF jmp 004D3AAD
二进制数据:
8B 45 E0 8B 4D D8 89 01 8B 45 DC 89 41 04 E8 A3
C1 FF FF E9 D5 96 FF FF
修改处四: 攻击动画延时
0040463C -E9 AFFD0C00 jmp 004DA407
00404641 90 nop
004DA3E0 51 push ecx ; (武将消失与出现宏)ECX参数:武将战场信息指针
004DA3E1 50 push eax ; EAX参数:战场编号,0FFH表示消失
004DA3E2 8D41 06 lea eax, dword ptr [ecx+6] ; 获取武将横纵坐标地址
004DA3E5 50 push eax
004DA3E6 E8 15B5F5FF call 00435900 ; 装载背景或形象??
004DA3EB 83C4 08 add esp, 8
004DA3EE 59 pop ecx
004DA3EF E8 D558F6FF call 0043FCC9 ; 刷新
004DA3F4 C3 retn
004DA3F5 6A 01 push 1
004DA3F7 EB 06 jmp short 004DA3FF
004DA3F9 6A 02 push 2
004DA3FB EB 02 jmp short 004DA3FF
004DA3FD 6A 0D push 0D
004DA3FF FF15 44614800 call dword ptr [486144] ; kernel32.Sleep
004DA405 EB 34 jmp short 004DA43B
004DA407 8B8D F0EFFFFF mov ecx, dword ptr [ebp-1010]
004DA40D B8 14F34C00 mov eax, 004CF314
004DA412 8338 00 cmp dword ptr [eax], 0 ; 检测绝招发动标志
004DA415 74 24 je short 004DA43B
004DA417 83C0 04 add eax, 4
004DA41A 66:8178 06 0010 cmp word ptr [eax+6], 1000 ; 检测武将代码
004DA420 75 19 jnz short 004DA43B
004DA422 8B10 mov edx, dword ptr [eax]
004DA424 42 inc edx ; 检测是否发动吹飞
004DA425 74 14 je short 004DA43B
004DA427 80F9 09 cmp cl, 9 ; 攻击方武将发光
004DA42A ^74 C9 je short 004DA3F5
004DA42C 80F9 0F cmp cl, 0F ; 被攻击方武将发光
004DA42F ^74 CC je short 004DA3FD
004DA431 80F9 10 cmp cl, 10 ; 显示伤害值
004DA434 ^74 C3 je short 004DA3F9
004DA436 80F9 13 cmp cl, 13 ; 手动结束动画显示循环
004DA439 74 05 je short 004DA440
004DA43B -E9 02A2F2FF jmp 00404642
004DA440 60 pushad
004DA441 8BEC mov ebp, esp
004DA443 83C4 F8 add esp, -8
004DA446 8945 F8 mov dword ptr [ebp-8], eax ; EAX=004CF318
004DA449 8B08 mov ecx, dword ptr [eax] ; 取出被攻击武将战场信息指针
004DA44B 894D FC mov dword ptr [ebp-4], ecx
004DA44E B8 FF000000 mov eax, 0FF ; 清除武将
004DA453 E8 88FFFFFF call 004DA3E0
004DA458 8B55 F8 mov edx, dword ptr [ebp-8]
004DA45B 8A42 04 mov al, byte ptr [edx+4] ; 取出横坐标
004DA45E 8B4D FC mov ecx, dword ptr [ebp-4]
004DA461 8841 06 mov byte ptr [ecx+6], al
004DA464 8A42 05 mov al, byte ptr [edx+5] ; 取出纵坐标
004DA467 8841 07 mov byte ptr [ecx+7], al
004DA46A B8 502C4B00 mov eax, 004B2C50
004DA46F 8A40 0F mov al, byte ptr [eax+F] ; 取管毅的朝向
004DA472 3C 01 cmp al, 1
004DA474 77 04 ja short 004DA47A
004DA476 04 02 add al, 2 ; 朝向取反
004DA478 EB 02 jmp short 004DA47C
004DA47A 2C 02 sub al, 2
004DA47C 8841 0F mov byte ptr [ecx+F], al ; 保存到被攻击武将战场信息
004DA47F 0FB641 04 movzx eax, byte ptr [ecx+4] ; 取被攻击武将战场编号
004DA483 E8 58FFFFFF call 004DA3E0 ; 武将出现
004DA488 8B45 F8 mov eax, dword ptr [ebp-8]
004DA48B 33C9 xor ecx, ecx
004DA48D 49 dec ecx
004DA48E 8908 mov dword ptr [eax], ecx ; 清除全局标志位(1)
004DA490 8948 04 mov dword ptr [eax+4], ecx ; 清除全局标志位(2)
004DA493 8BE5 mov esp, ebp
004DA495 61 popad
004DA496 -E9 62B2F2FF jmp 004056FD
二进制数据:
51 50 8D 41 06 50 E8 15 B5 F5 FF 83 C4 08 59 E8
D5 58 F6 FF C3 6A 01 EB 06 6A 02 EB 02 6A 0D FF
15 44 61 48 00 EB 34 8B 8D F0 EF FF FF B8 14 F3
4C 00 83 38 00 74 24 83 C0 04 66 81 78 06 00 10
75 19 8B 10 42 74 14 80 F9 09 74 C9 80 F9 0F 74
CC 80 F9 10 74 C3 80 F9 13 74 05 E9 02 A2 F2 FF
60 8B EC 83 C4 F8 89 45 F8 8B 08 89 4D FC B8 FF
00 00 00 E8 88 FF FF FF 8B 55 F8 8A 42 04 8B 4D
FC 88 41 06 8A 42 05 88 41 07 B8 50 2C 4B 00 8A
40 0F 3C 01 77 04 04 02 EB 02 2C 02 88 41 0F 0F
B6 41 04 E8 58 FF FF FF 8B 45 F8 33 C9 49 89 08
89 48 04 8B E5 61 E9 62 B2 F2 FF
2010-1-21 16:58
蛇夫座
苏烈----[诛仙剑]
必中无反、精神伤害、精神吸收
修改处一: 添加绝技名字符串(见二楼)
修改处二: 右键点击武将时显示绝技名(见二楼)
修改处三: AI行动时绑定发动率
004D777E /75 26 jnz short 004D77A6
004D7780 |90 nop
004D7781 |90 nop
004D7782 |90 nop
004D7783 |90 nop
004D77A6 83F8 23 cmp eax, 23 ; 苏烈 DATA_35
004D77A9 /0F84 322D0000 je 004DA4E1
004D77AF ^E9 0FFFFFFF jmp 004D76C3
004D77FA FF75 EC push dword ptr [ebp-14] ; 被攻击武将DATA编号
004D77FD FF75 0C push dword ptr [ebp+C] ; 攻击方武将DATA编号
004D7800 E8 CDFDFFFF call 004D75D2 ; 参考双方士气计算出发动机率
004D7805 C3 retn
004DA4E0 90 nop
004DA4E1 E8 14D3FFFF call 004D77FA
004DA4E6 85C0 test eax, eax ; 返回0表示不发动
004DA4E8 ^0F84 D5D1FFFF je 004D76C3
004DA4EE C605 50AC5500 01 mov byte ptr [55AC50], 1 ; 苏烈绝技发动标志置位
004DA4F5 ^E9 CDD1FFFF jmp 004D76C7
修改处四: 绝技发动时的背景处理
004D79A6 /75 19 jnz short 004D79C1
004D79C1 803D 50AC5500 00 cmp byte ptr [55AC50], 0
004D79C8 /0F85 F42A0000 jnz 004DA4C2
004D79CE ^E9 0BFFFFFF jmp 004D78DE
004DA4C1 90 nop
004DA4C2 E8 23C0FFFF call 004D64EA ; 绘制背景红色光栅
004DA4C7 68 58585500 push 00555858 ; "诛仙剑"
004DA4CC B9 083D4B00 mov ecx, 004B3D08
004DA4D1 E8 90BEFFFF call 004D6366 ; 战场背景显示绝招名
004DA4D6 E8 9BC0FFFF call 004D6576 ; 清除光栅
004DA4DB ^E9 FED3FFFF jmp 004D78DE
修改处五: 必中设定
004D2FA1 ^\EB DF jmp short 004D2F82
004D2F82 803D 50AC5500 00 cmp byte ptr [55AC50], 0
004D2F89 75 20 jnz short 004D2FAB
004D2F8B -E9 0986F6FF jmp 0043B599 ; 为0则参考其他情况
修改处六: 无反击处理
0040588C 83EC 14 sub esp, 14
00406462 -E9 94400D00 jmp 004DA4FB ; 无反击攻击特效号
004DA4FA 90 nop
004DA4FB B8 50AC5500 mov eax, 0055AC50
004DA500 8038 00 cmp byte ptr [eax], 0 ; 检测苏烈绝技发动标志
004DA503 74 08 je short 004DA50D
004DA505 C600 00 mov byte ptr [eax], 0
004DA508 -E9 DFBFF2FF jmp 004064EC ; 跳转至反击处理函数结束
004DA50D 6A 2C push 2C ; 原来处的代码
004DA50F 8B4D F0 mov ecx, dword ptr [ebp-10]
004DA512 -E9 50BFF2FF jmp 00406467
004064EC -E9 C43F0D00 jmp 004DA4B5
004DA4B5 C605 50AC5500 00 mov byte ptr [55AC50], 0
004DA4BC 5E pop esi
004DA4BD 8BE5 mov esp, ebp
004DA4BF 5D pop ebp
004DA4C0 C3 retn
修改处七: 插入精神攻击代码
00405A6A -E9 A94A0D00 jmp 004DA518
004DA518 803D 50AC5500 00 cmp byte ptr [55AC50], 0 ; 检测苏烈绝技发动标志
004DA51F 75 0C jnz short 004DA52D
004DA521 8B55 FC mov edx, dword ptr [ebp-4] ; 原来处的代码
004DA524 52 push edx
004DA525 8B45 F8 mov eax, dword ptr [ebp-8]
004DA528 -E9 44B5F2FF jmp 00405A71
004DA52D 8B45 F4 mov eax, dword ptr [ebp-C]
004DA530 05 84000000 add eax, 84
004DA535 8945 F0 mov dword ptr [ebp-10], eax
004DA538 8B00 mov eax, dword ptr [eax]
004DA53A 85C0 test eax, eax ; 检测物理伤害值是否为0
004DA53C 74 48 je short 004DA586
004DA53E 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA541 0FB641 01 movzx eax, byte ptr [ecx+1] ; 被攻击武将的战场编号
004DA545 6BC0 24 imul eax, eax, 24
004DA548 05 502C4B00 add eax, 004B2C50 ; 被攻击武将的战场信息指针
004DA54D 8945 EC mov dword ptr [ebp-14], eax
004DA550 0FB640 14 movzx eax, byte ptr [eax+14] ; 取被攻击武将MPCur
004DA554 85C0 test eax, eax
004DA556 74 2E je short 004DA586
004DA558 50 push eax ; 保护被攻击武将MPCur
004DA559 8B45 F0 mov eax, dword ptr [ebp-10]
004DA55C 8B00 mov eax, dword ptr [eax] ; 取物理伤害值
004DA55E 33D2 xor edx, edx
004DA560 B9 03000000 mov ecx, 3
004DA565 F7F1 div ecx ; 物理伤害值/3
004DA567 59 pop ecx
004DA568 3BC8 cmp ecx, eax ; 比较MPCur与(物理伤害值/3)
004DA56A 7D 02 jge short 004DA56E
004DA56C 8BC1 mov eax, ecx ; 被攻击武将MPCur作为精神伤害值
004DA56E 8945 F0 mov dword ptr [ebp-10], eax
004DA571 8B55 F8 mov edx, dword ptr [ebp-8]
004DA574 81E2 FF000000 and edx, 0FF
004DA57A 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA57D 898491 54020000 mov dword ptr [ecx+edx*4+254], eax ; 被攻击武将MPCur伤害值存入全局变量
004DA584 ^EB 9B jmp short 004DA521
004DA586 33C0 xor eax, eax
004DA588 48 dec eax
004DA589 8945 F0 mov dword ptr [ebp-10], eax ; 设置MP无法吸收标志
004DA58C ^EB 93 jmp short 004DA521
修改处八: 插入精神吸收代码
004DA590 803D 51AC5500 00 cmp byte ptr [55AC51], 0
004DA597 0F85 A9010000 jnz 004DA746 ; 左天成绝技吸血攻击出口
004DA59D 803D 50AC5500 00 cmp byte ptr [55AC50], 0 ; 检测苏烈绝技发动标志
004DA5A4 75 0E jnz short 004DA5B4
004DA5A6 8B55 F8 mov edx, dword ptr [ebp-8] ; 原来处的代码
004DA5A9 81E2 FF000000 and edx, 0FF
004DA5AF -E9 99B5F2FF jmp 00405B4D
004DA5B4 8B45 F0 mov eax, dword ptr [ebp-10]
004DA5B7 40 inc eax ; 检查MP是否无法吸收
004DA5B8 ^74 EC je short 004DA5A6
004DA5BA 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA5BD 8B49 08 mov ecx, dword ptr [ecx+8] ; 攻击方武将SAV映射
004DA5C0 0FB641 20 movzx eax, byte ptr [ecx+20] ; 取存档中的攻击方武将MP最大值
004DA5C4 50 push eax
004DA5C5 6A 06 push 6
004DA5C7 E8 42D6F2FF call 00407C0E ; 获取ECX武将全身装备对某一项能力的加成,根据08栈
004DA5CC 59 pop ecx
004DA5CD 03C1 add eax, ecx ; MP加成+人物最大值
004DA5CF 8945 EC mov dword ptr [ebp-14], eax
004DA5D2 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA5D5 8B49 0C mov ecx, dword ptr [ecx+C] ; 攻击方武将战场信息指针
004DA5D8 0FB641 14 movzx eax, byte ptr [ecx+14] ; 取MPCur
004DA5DC 3B45 EC cmp eax, dword ptr [ebp-14] ; 检查攻方武将MP是否已满
004DA5DF ^7D C5 jge short 004DA5A6
004DA5E1 D16D F0 shr dword ptr [ebp-10], 1 ; 被攻击方武将MP损伤值/2
004DA5E4 8BD0 mov edx, eax
004DA5E6 0345 F0 add eax, dword ptr [ebp-10] ; MPCur+吸收值
004DA5E9 3B45 EC cmp eax, dword ptr [ebp-14] ; 检查是否超过最大值
004DA5EC 7C 07 jl short 004DA5F5
004DA5EE 8B4D EC mov ecx, dword ptr [ebp-14]
004DA5F1 2BCA sub ecx, edx ; 最大值-MPCur
004DA5F3 8BC1 mov eax, ecx
004DA5F5 8945 F0 mov dword ptr [ebp-10], eax ; 最终吸收值
004DA5F8 F7D8 neg eax ; 求补码
004DA5FA 6A 01 push 1 ; 是否显示动画
004DA5FC 6A 00 push 0 ; 防具EXP值
004DA5FE 6A 00 push 0 ; 武器EXP值
004DA600 6A 00 push 0 ; 武将获得的经验值
004DA602 50 push eax ; MP
004DA603 6A 00 push 0 ; HP
004DA605 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA608 0FB641 01 movzx eax, byte ptr [ecx+1]
004DA60C 50 push eax ; ??不明,貌似另一方武将战场编号
004DA60D 0FB601 movzx eax, byte ptr [ecx]
004DA610 50 push eax ; 要增加或减少的武将战场编号
004DA611 E8 205AF7FF call 00450036
004DA616 83C4 20 add esp, 20
004DA619 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA61C 8B41 0C mov eax, dword ptr [ecx+C]
004DA61F 8A55 F0 mov dl, byte ptr [ebp-10]
004DA622 0050 14 add byte ptr [eax+14], dl ; 回复攻击武将MPCur值
004DA625 ^E9 7CFFFFFF jmp 004DA5A6
二进制数据:(修改处三~~六、八,004DA4C1~~004DA625)
90 E8 23 C0 FF FF 68 58 58 55 00 B9 08 3D 4B 00
E8 90 BE FF FF E8 9B C0 FF FF E9 FE D3 FF FF 90
E8 14 D3 FF FF 85 C0 0F 84 D5 D1 FF FF C6 05 50
AC 55 00 01 E9 CD D1 FF FF 90 B8 50 AC 55 00 80
38 00 74 08 C6 00 00 E9 DF BF F2 FF 6A 2C 8B 4D
F0 E9 50 BF F2 FF 90 80 3D 50 AC 55 00 00 75 0C
8B 55 FC 52 8B 45 F8 E9 44 B5 F2 FF 8B 45 F4 05
84 00 00 00 89 45 F0 8B 00 85 C0 74 48 8B 4D F4
0F B6 41 01 6B C0 24 05 50 2C 4B 00 89 45 EC 0F
B6 40 14 85 C0 74 2E 50 8B 45 F0 8B 00 33 D2 B9
03 00 00 00 F7 F1 59 3B C8 7D 02 8B C1 89 45 F0
8B 55 F8 81 E2 FF 00 00 00 8B 4D F4 89 84 91 54
02 00 00 EB 9B 33 C0 48 89 45 F0 EB 93 90 90 80
3D 51 AC 55 00 00 0F 85 A9 01 00 00 80 3D 50 AC
55 00 00 75 0E 8B 55 F8 81 E2 FF 00 00 00 E9 99
B5 F2 FF 8B 45 F0 40 74 EC 8B 4D F4 8B 49 08 0F
B6 41 20 50 6A 06 E8 42 D6 F2 FF 59 03 C1 89 45
EC 8B 4D F4 8B 49 0C 0F B6 41 14 3B 45 EC 7D C5
D1 6D F0 8B D0 03 45 F0 3B 45 EC 7C 07 8B 4D EC
2B CA 8B C1 89 45 F0 F7 D8 6A 01 6A 00 6A 00 6A
00 50 6A 00 8B 4D F4 0F B6 41 01 50 0F B6 01 50
E8 20 5A F7 FF 83 C4 20 8B 4D F4 8B 41 0C 8A 55
F0 00 50 14 E9 7C FF FF FF
2010-1-21 16:59
蛇夫座
左天成----[血魔刀]
吸血攻击,物理攻击伤害40%吸收
注意:此次修改是建立在(苏烈--[诛仙剑])修改的基础上
修改处一: 添加绝技名字符串(见二楼)
修改处二: 右键点击武将时显示绝技名
004D3D2D 83F8 2E cmp eax, 2E ; 左天成
004D3D30 0F84 CA690000 je 004DA700
004D3D36 ^E9 8EFEFFFF jmp 004D3BC9
修改处三: AI行动时绑定发动率
004D77AF 83F8 2E cmp eax, 2E ; 左天成 DATA_46
004D77B2 0F84 542F0000 je 004DA70C
004D77B8 ^E9 06FFFFFF jmp 004D76C3
修改处四: 绝技发动时的背景处理
004D79CE 803D 51AC5500 00 cmp byte ptr [55AC51], 0
004D79D5 0F85 4B2D0000 jnz 004DA726
004D79DB ^E9 FEFEFFFF jmp 004D78DE
修改处五: 绝技处理完毕时清除发动标志
004D7A1A A2 51AC5500 mov byte ptr [55AC51], al
004D7A1F E8 5DE7F2FF call 00406181 ; 判断是否连击函数
004D7A24 -E9 30EBF2FF jmp 00406559
修改处六: 插入吸血攻击代码(包含修改处二~~四处代码)
004DA700 68 64585500 push 00555864
004DA705 -E9 2DE0F9FF jmp 00478737
004DA70A 0000 add byte ptr [eax], al
004DA70C E8 E9D0FFFF call 004D77FA
004DA711 85C0 test eax, eax
004DA713 ^0F84 AACFFFFF je 004D76C3
004DA719 C605 51AC5500 01 mov byte ptr [55AC51], 1
004DA720 ^E9 A2CFFFFF jmp 004D76C7
004DA725 90 nop
004DA726 E8 BFBDFFFF call 004D64EA
004DA72B 68 6A585500 push 0055586A
004DA730 B9 083D4B00 mov ecx, 004B3D08
004DA735 E8 2CBCFFFF call 004D6366
004DA73A E8 37BEFFFF call 004D6576
004DA73F ^E9 9AD1FFFF jmp 004D78DE
004DA744 0000 add byte ptr [eax], al
004DA746 8B45 F4 mov eax, dword ptr [ebp-C]
004DA749 8BC8 mov ecx, eax
004DA74B 05 84000000 add eax, 84
004DA750 8B00 mov eax, dword ptr [eax] ; 取物理伤害值
004DA752 8945 F0 mov dword ptr [ebp-10], eax
004DA755 85C0 test eax, eax
004DA757 75 05 jnz short 004DA75E
004DA759 ^E9 48FEFFFF jmp 004DA5A6 ; 跳转至原来处的代码
004DA75E 8B49 08 mov ecx, dword ptr [ecx+8] ; 攻击方武将SAV映射
004DA761 8B41 1C mov eax, dword ptr [ecx+1C] ; 取存档中的攻击方武将HP最大值
004DA764 50 push eax
004DA765 6A 05 push 5 ; HP
004DA767 E8 A2D4F2FF call 00407C0E ; 获取ECX武将全身装备对某一项能力的加成,根据08栈
004DA76C 59 pop ecx
004DA76D 03C1 add eax, ecx ; HP加成+人物最大值
004DA76F 8945 EC mov dword ptr [ebp-14], eax
004DA772 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA775 8B49 0C mov ecx, dword ptr [ecx+C]
004DA778 8B41 10 mov eax, dword ptr [ecx+10] ; 取HPCur
004DA77B 3B45 EC cmp eax, dword ptr [ebp-14]
004DA77E ^7D D9 jge short 004DA759
004DA780 50 push eax
004DA781 8B45 F0 mov eax, dword ptr [ebp-10]
004DA784 33C9 xor ecx, ecx
004DA786 B1 28 mov cl, 28
004DA788 F7E1 mul ecx ; 物理伤害*40
004DA78A 33D2 xor edx, edx
004DA78C B1 64 mov cl, 64
004DA78E F7F1 div ecx ; 物理伤害*40/100
004DA790 59 pop ecx ; 弹出HPCur
004DA791 8BD1 mov edx, ecx
004DA793 03C8 add ecx, eax ; HPCur+吸血值
004DA795 3B4D EC cmp ecx, dword ptr [ebp-14] ; 检查是否超出最大值
004DA798 7C 07 jl short 004DA7A1
004DA79A 8B4D EC mov ecx, dword ptr [ebp-14]
004DA79D 2BCA sub ecx, edx ; 最大值-HPCur
004DA79F 8BC1 mov eax, ecx
004DA7A1 8945 F0 mov dword ptr [ebp-10], eax
004DA7A4 6A 01 push 1
004DA7A6 6A 00 push 0
004DA7A8 6A 00 push 0
004DA7AA 6A 00 push 0
004DA7AC 6A 00 push 0
004DA7AE F7D8 neg eax
004DA7B0 50 push eax
004DA7B1 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA7B4 0FB641 01 movzx eax, byte ptr [ecx+1]
004DA7B8 50 push eax
004DA7B9 0FB601 movzx eax, byte ptr [ecx]
004DA7BC 50 push eax
004DA7BD E8 7458F7FF call 00450036 ; 处理防具、武器、武将EXP、MP、HP加减动画
004DA7C2 83C4 20 add esp, 20
004DA7C5 8B4D F4 mov ecx, dword ptr [ebp-C]
004DA7C8 8B41 0C mov eax, dword ptr [ecx+C] ; 攻击方武将战场信息指针
004DA7CB 8B4D F0 mov ecx, dword ptr [ebp-10] ; 吸血值
004DA7CE 0148 10 add dword ptr [eax+10], ecx ; 回复攻击方武将HPCur值
004DA7D1 ^E9 D0FDFFFF jmp 004DA5A6 ; 跳转至原来处的代码
004DA7D6 90 nop
二进制数据:(修改处二~~四、六,004DA700~~004DA7D6)
68 64 58 55 00 E9 2D E0 F9 FF 00 00 E8 E9 D0 FF
FF 85 C0 0F 84 AA CF FF FF C6 05 51 AC 55 00 01
E9 A2 CF FF FF 90 E8 BF BD FF FF 68 6A 58 55 00
B9 08 3D 4B 00 E8 2C BC FF FF E8 37 BE FF FF E9
9A D1 FF FF 00 00 8B 45 F4 8B C8 05 84 00 00 00
8B 00 89 45 F0 85 C0 75 05 E9 48 FE FF FF 8B 49
08 8B 41 1C 50 6A 05 E8 A2 D4 F2 FF 59 03 C1 89
45 EC 8B 4D F4 8B 49 0C 8B 41 10 3B 45 EC 7D D9
50 8B 45 F0 33 C9 B1 28 F7 E1 33 D2 B1 64 F7 F1
59 8B D1 03 C8 3B 4D EC 7C 07 8B 4D EC 2B CA 8B
C1 89 45 F0 6A 01 6A 00 6A 00 6A 00 6A 00 F7 D8
50 8B 4D F4 0F B6 41 01 50 0F B6 01 50 E8 74 58
F7 FF 83 C4 20 8B 4D F4 8B 41 0C 8B 4D F0 01 48
10 E9 D0 FD FF FF 90
2010-1-21 16:59
蛇夫座
尚师徒----【技】真空刃
蛇矛穿透
注意:此次修改是建立在(左天成--[血魔刀])修改的基础上
修改处一: 添加绝技名字符串(见二楼)
修改处二: 右键点击武将时显示绝技名
004D3D36 83F8 2A cmp eax, 2A ; 尚师徒
004D3D39 0F84 31690000 je 004DA670
004D3D3F ^E9 85FEFFFF jmp 004D3BC9
修改处三: AI行动时绑定发动率
004D77B8 83F8 2A cmp eax, 2A ; 尚师徒 DATA_42
004D77BB 0F84 BB2E0000 je 004DA67C
004D77C1 ^E9 FDFEFFFF jmp 004D76C3
修改处四: 绝技发动时的背景处理
004D79DB 803D 52AC5500 00 cmp byte ptr [55AC52], 0
004D79E2 0F85 AE2C0000 jnz 004DA696
004D79E8 ^E9 F1FEFFFF jmp 004D78DE
修改处五: 绝技处理完毕时清除发动标志
004D7A1F A2 52AC5500 mov byte ptr [55AC52], al
004D7A24 E8 58E7F2FF call 00406181 ; 判断是否连击函数
004D7A29 -E9 2BEBF2FF jmp 00406559
修改处六: 插入穿透设置代码(包含修改处二~~四处代码)
004DA670 68 76585500 push 00555876
004DA675 -E9 BDE0F9FF jmp 00478737
004DA67A 0000 add byte ptr [eax], al
004DA67C E8 79D1FFFF call 004D77FA
004DA681 85C0 test eax, eax
004DA683 ^0F84 3AD0FFFF je 004D76C3
004DA689 C605 52AC5500 01 mov byte ptr [55AC52], 1
004DA690 ^E9 32D0FFFF jmp 004D76C7
004DA695 90 nop
004DA696 E8 4FBEFFFF call 004D64EA
004DA69B 68 7C585500 push 0055587C ; ASCII "真空刃"
004DA6A0 B9 083D4B00 mov ecx, 004B3D08
004DA6A5 E8 BCBCFFFF call 004D6366
004DA6AA E8 C7BEFFFF call 004D6576
004DA6AF ^E9 2AD2FFFF jmp 004D78DE
004DA6B4 0000 add byte ptr [eax], al
004DA6B6 66:B8 0400 mov ax, 4 ; 蛇矛穿透
004DA6BA -E9 CCD1F2FF jmp 0040788B ; 跳转至穿透函数结束
004DA6BF 90 nop
二进制数据:(修改处二~~四、六,004DA670~~004DA6BF)
68 76 58 55 00 E9 BD E0 F9 FF 00 00 E8 79 D1 FF
FF 85 C0 0F 84 3A D0 FF FF C6 05 52 AC 55 00 01
E9 32 D0 FF FF 90 E8 4F BE FF FF 68 7C 58 55 00
B9 08 3D 4B 00 E8 BC BC FF FF E8 C7 BE FF FF E9
2A D2 FF FF 00 00 66 B8 04 00 E9 CC D1 F2 FF 90
2010-1-21 16:59
蛇夫座
[其它修改]
使全体绝技绝对爆击,由于使用者为敌军或友军可以增加挑战性(不是必中的普通爆击)
注意:此次修改是建立在(使普通爆击与绝招爆击伤害计算分开)修改的基础上
修改处一:
00405EFB - E9 02490D00 jmp 004DA802
修改处二: 增加绝技发动标志位检测
004DA801 90 nop
004DA802 B8 1CAC5500 mov eax, 0055AC1C
004DA807 8338 00 cmp dword ptr [eax], 0 ; 杨林 DATA_32
004DA80A 75 37 jnz short 004DA843
004DA80C 8378 04 00 cmp dword ptr [eax+4], 0 ; 宇文成都 DATA_33
004DA810 75 31 jnz short 004DA843
004DA812 8378 08 00 cmp dword ptr [eax+8], 0 ; 定彦平 DATA_101
004DA816 75 2B jnz short 004DA843
004DA818 8378 0C 00 cmp dword ptr [eax+C], 0 ; 李元霸 DATA_34
004DA81C 75 25 jnz short 004DA843
004DA81E 8378 10 00 cmp dword ptr [eax+10], 0 ; 新文礼 DATA_44
004DA822 75 1F jnz short 004DA843
004DA824 8378 20 00 cmp dword ptr [eax+20], 0 ; 魏文通 DATA_43
004DA828 75 19 jnz short 004DA843
004DA82A 83C0 34 add eax, 34 ; EAX=55AC50H
004DA82D 8038 00 cmp byte ptr [eax], 0 ; 苏烈 DATA_35
004DA830 75 11 jnz short 004DA843
004DA832 8078 01 00 cmp byte ptr [eax+1], 0 ; 左天成 DATA_46
004DA836 75 0B jnz short 004DA843
004DA838 8078 02 00 cmp byte ptr [eax+2], 0 ; 尚师徒 DATA_42
004DA83C 75 05 jnz short 004DA843
004DA83E ^E9 868CFFFF jmp 004D34C9
004DA843 -E9 F0B6F2FF jmp 00405F38
二进制数据:
90 B8 1C AC 55 00 83 38 00 75 37 83 78 04 00 75
31 83 78 08 00 75 2B 83 78 0C 00 75 25 83 78 10
00 75 1F 83 78 20 00 75 19 83 C0 34 80 38 00 75
11 80 78 01 00 75 0B 80 78 02 00 75 05 E9 86 8C
FF FF E9 F0 B6 F2 FF
2010-1-21 17:00
蛇夫座
武将升级时恢复所成长的MP值,修补因为升级了MP未满而无法使用绝招的遗憾..
修改处一:
004D6778 /E9 F5400000 jmp 004DA872 ; 武将SAV映射指针
修改处二:
004DA872 50 push eax ; 保护最终成长值与升级前MP最大值相加后的结果
004DA873 8B4D FC mov ecx, dword ptr [ebp-4] ; 武将SAV映射指针
004DA876 6A 06 push 6 ; MP项
004DA878 E8 91D3F2FF call 00407C0E ; 获取ECX武将全身装备对某一项能力的加成,根据08栈
004DA87D 59 pop ecx
004DA87E 03C1 add eax, ecx ; 人物最大值+全身装备加成
004DA880 50 push eax ; 保护最大值
004DA881 8B4D FC mov ecx, dword ptr [ebp-4]
004DA884 66:8B01 mov ax, word ptr [ecx] ; 取武将代码
004DA887 25 FF0F0000 and eax, 0FFF ; 取武将DATA编号
004DA88C 50 push eax
004DA88D E8 443CF6FF call 0043E4D6 ; 获取08栈武将的战场编号
004DA892 5A pop edx
004DA893 3D FF000000 cmp eax, 0FF
004DA898 74 17 je short 004DA8B1
004DA89A 6BC0 24 imul eax, eax, 24
004DA89D 05 502C4B00 add eax, 004B2C50 ; 武将战场信息指针
004DA8A2 0FB648 14 movzx ecx, byte ptr [eax+14] ; 取武将MPCur
004DA8A6 024D 0C add cl, byte ptr [ebp+C] ; MPCur+成长值
004DA8A9 5A pop edx
004DA8AA 3ACA cmp cl, dl ; 检查是否最大值
004DA8AC 77 0D ja short 004DA8BB
004DA8AE 8848 14 mov byte ptr [eax+14], cl ; 更新武将MPCur
004DA8B1 8B4D FC mov ecx, dword ptr [ebp-4] ; 原来处代码
004DA8B4 8B01 mov eax, dword ptr [ecx]
004DA8B6 ^E9 C2BEFFFF jmp 004D677D
004DA8BB 8ACA mov cl, dl
004DA8BD ^EB EF jmp short 004DA8AE
004DA8BF 90 nop
二进制数据:
50 8B 4D FC 6A 06 E8 91 D3 F2 FF 59 03 C1 50 8B
4D FC 66 8B 01 25 FF 0F 00 00 50 E8 44 3C F6 FF
5A 3D FF 00 00 00 74 17 6B C0 24 05 50 2C 4B 00
0F B6 48 14 02 4D 0C 5A 3A CA 77 0D 88 48 14 8B
4D FC 8B 01 E9 C2 BE FF FF 8A CA EB EF 90
2010-1-21 17:01
js2223
楼主好强啊。
2010-1-21 17:01
蛇夫座
单步跑了非常多的代码,贴一些资料注释部分不一定准确仅供参考:
[绝技按钮消息响应] (详细请参阅岱大的《绝招的修改办法》)
0043E17B .- E9 99460900 jmp 004D2819
004D2819 837D D0 06 cmp dword ptr [ebp-30], 6
004D281D - 0F87 90B9F6FF ja 0043E1B3
004D2823 837D D0 04 cmp dword ptr [ebp-30], 4 ; [绝招]按钮ID
004D2827 74 02 je short 004D282B
004D2829 EB 0D jmp short 004D2838
004D282B 8B4D D4 mov ecx, dword ptr [ebp-2C] ; 取出攻击方武将战场信息指针
004D282E E8 D4070000 call 004D3007 ; 绝招按钮响应函数
004D2833 - E9 7BB9F6FF jmp 0043E1B3
004D2838 837D D0 05 cmp dword ptr [ebp-30], 5
004D3007 55 push ebp ; 绝招按钮响应函数
004D3008 8BEC mov ebp, esp
004D300A 83EC 20 sub esp, 20
004D300D 894D FC mov dword ptr [ebp-4], ecx ; 攻击方武将战场信息指针
004D3010 E8 5BC6F8FF call 0045F670 ; 获取ECX武将DATA编号
004D3015 8945 F8 mov dword ptr [ebp-8], eax
004D3018 50 push eax
004D3019 E8 26240000 call 004D5444 ; 检查08栈武将是否存在绝招
004D301E 83C4 04 add esp, 4
004D3021 85C0 test eax, eax
004D3023 75 11 jnz short 004D3036
004D3025 68 20555500 push 00555520 ; ASCII "无绝招"
004D302A 6A 02 push 2
004D302C E8 68C6F5FF call 0042F699
004D3031 83C4 08 add esp, 8
004D3034 EB 60 jmp short 004D3096
004D3036 90 nop
004D3037 90 nop
004D3038 90 nop
004D3039 8B45 F8 mov eax, dword ptr [ebp-8] ; 取出武将DATA编号
004D303C 6BC0 48 imul eax, eax, 48
004D303F 05 0000D600 add eax, 0D60000 ; 绝招武将SAV映射
004D3044 8BC8 mov ecx, eax ; 输入参数ECX:目标武将SAV映射
004D3046 6A 06 push 6
004D3048 E8 3A3DF3FF call 00406D87 ; 获取ECX武将MP最大值
004D304D 8945 F4 mov dword ptr [ebp-C], eax
004D3050 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D3053 E8 E8F7F9FF call 00472840 ; 取ECX武将MPCur
004D3058 8B4D F4 mov ecx, dword ptr [ebp-C]
004D305B 3BC1 cmp eax, ecx ; 检查MP是否已满
004D305D 74 14 je short 004D3073
004D305F 68 28555500 push 00555528
004D3064 6A 02 push 2
004D3066 E8 2EC6F5FF call 0042F699 ; 提示MP未满
004D306B 83C4 08 add esp, 8
004D306E EB 26 jmp short 004D3096 ; 跳转至绝招按钮事件处理结束
004D3070 90 nop
004D3071 90 nop
004D3072 90 nop
004D3073 C705 14F34C00 01000000 mov dword ptr [4CF314], 1 ; 填写绝招发动标记
004D307D 8B45 F8 mov eax, dword ptr [ebp-8]
004D3080 50 push eax ; @输入参数1:绝招武将DATA编号
004D3081 8B4D FC mov ecx, dword ptr [ebp-4] ; @输入参数ECX:攻击方武将战场信息指针
004D3084 E8 1C000000 call 004D30A5 ; 绝招处理函数
004D3089 83C4 04 add esp, 4
004D308C C705 14F34C00 00000000 mov dword ptr [4CF314], 0 ; 清除绝招标记
004D3096 8BE5 mov esp, ebp
004D3098 5D pop ebp
004D3099 C3 retn
004D5444 55 push ebp ; 检查08栈武将是否存在绝招
004D5445 8BEC mov ebp, esp
004D5447 83EC 0C sub esp, 0C
004D544A 33C0 xor eax, eax
004D544C 8B45 08 mov eax, dword ptr [ebp+8] ; 绝招武将DATA编号
004D544F 85C0 test eax, eax
004D5451 ^ 74 E2 je short 004D5435 ; 管毅 DATA_00
004D5453 83F8 01 cmp eax, 1 ; 程咬金 DATA_01
004D5456 74 02 je short 004D545A
004D5458 EB 18 jmp short 004D5472
004D545A 33C0 xor eax, eax
004D545C 66:A1 04AC5500 mov ax, word ptr [55AC04] ; 特殊控制,检查全局变量标志位
004D5462 85C0 test eax, eax
004D5464 ^ 74 C8 je short 004D542E
004D5466 A0 06AC5500 mov al, byte ptr [55AC06] ; 特殊控制,检查全局变量标志位
004D546B 90 nop
004D546C 85C0 test eax, eax
004D546E ^ 74 C5 je short 004D5435
004D5470 ^ EB BC jmp short 004D542E
004D5472 83F8 05 cmp eax, 5 ; 伍云召 DATA_05
004D5475 ^ 74 BE je short 004D5435
004D5477 83F8 07 cmp eax, 7 ; 伍天锡 DATA_07
004D547A ^ 74 B9 je short 004D5435
004D547C 83F8 08 cmp eax, 8 ; 秦琼 DATA_08
004D547F ^ 74 B4 je short 004D5435
004D5481 83F8 0E cmp eax, 0E ; 姜松 DATA_14
004D5484 ^ 74 AF je short 004D5435
004D5486 83F8 11 cmp eax, 11 ; 裴元庆 DATA_17
004D5489 ^ 74 AA je short 004D5435
004D548B 83F8 13 cmp eax, 13 ; 罗成 DATA_19
004D548E ^ 74 A5 je short 004D5435
004D5490 83F8 1A cmp eax, 1A ; 雄阔海 DATA_26
004D5493 ^ 74 A0 je short 004D5435
004D5495 83F8 18 cmp eax, 18 ; 谢映登 DATA_24
004D5498 ^ 74 9B je short 004D5435
004D549A ^ EB 92 jmp short 004D542E
004D319A /0F84 AE000000 je 004D324E ; 是罗成
004D31A0 |83FB 18 cmp ebx, 18 ; 是否谢映登
004D31A3 |0F84 636F0000 je 004DA10C
004D31A9 ^|EB DE jmp short 004D3189 ; 其它武将不处理
004D542E 33C0 xor eax, eax
004D5430 8BE5 mov esp, ebp
004D5432 5D pop ebp
004D5433 C3 retn
004D5434 90 nop
004D5435 B8 01000000 mov eax, 1 ; 返回真,表示有绝招
004D543A 8BE5 mov esp, ebp
004D543C 5D pop ebp
004D543D C3 retn
004D30A5 55 push ebp ; 绝招处理函数
004D30A6 8BEC mov ebp, esp
004D30A8 83EC 44 sub esp, 44 ; 开避68字节堆栈
004D30AB 894D FC mov dword ptr [ebp-4], ecx ; 攻击方武将战场信息指针
004D30AE 837D 08 1A cmp dword ptr [ebp+8], 1A ; 检查绝招武将是否为 雄阔海 DATA_26
004D30B2 75 0A jnz short 004D30BE
004D30B4 90 nop
004D30B5 90 nop
004D30B6 90 nop
004D30B7 90 nop
004D30B8 90 nop
004D30B9 E9 1B050000 jmp 004D35D9 ; 是雄阔海
004D30BE 68 FF000000 push 0FF ; @函数0045533D输入参数4
004D30C3 6A 01 push 1 ; @函数0045533D输入参数3
004D30C5 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D30C8 E8 F1C7F6FF call 0043F8BE ; 获取ECX武将的攻击范围
004D30CD 50 push eax ; @函数0045533D输入参数2
004D30CE 8B45 FC mov eax, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D30D1 8A48 04 mov cl, byte ptr [eax+4] ; 战场信息+4为战场编号
004D30D4 51 push ecx ; @函数0045533D输入参数1
004D30D5 B9 50424B00 mov ecx, 004B4250 ; @函数0045533D ECX参数
004D30DA E8 5E22F8FF call 0045533D ; 等待并获取选中的敌人
004D30DF 8845 F4 mov byte ptr [ebp-C], al ; 返回被攻方武将战场编号
004D30E2 25 FF000000 and eax, 0FF
004D30E7 3D FF000000 cmp eax, 0FF
004D30EC 0F84 A1000000 je 004D3193 ; 不是敌军
004D30F2 8945 F8 mov dword ptr [ebp-8], eax ; 被攻方武将战场编号
004D30F5 6BC0 24 imul eax, eax, 24
004D30F8 05 502C4B00 add eax, 004B2C50
004D30FD 8945 F4 mov dword ptr [ebp-C], eax ; 指向被攻击方武将战场信息
004D3100 8B45 FC mov eax, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D3103 33DB xor ebx, ebx
004D3105 8A58 04 mov bl, byte ptr [eax+4]
004D3108 895D E4 mov dword ptr [ebp-1C], ebx ; 攻方武将战场编号
004D310B 8B4D FC mov ecx, dword ptr [ebp-4]
004D310E C641 14 00 mov byte ptr [ecx+14], 0 ; 攻方武将MPCur清0
004D3112 33D2 xor edx, edx
004D3114 8B4D FC mov ecx, dword ptr [ebp-4]
004D3117 8A51 06 mov dl, byte ptr [ecx+6] ; 攻方战场横坐标(左到右数)
004D311A 3E:8855 ED mov byte ptr ds:[ebp-13], dl
004D311E 8A51 07 mov dl, byte ptr [ecx+7] ; 攻方战场纵坐标(上到下数)
004D3121 3E:8855 EC mov byte ptr ds:[ebp-14], dl
004D3125 8B45 F8 mov eax, dword ptr [ebp-8] ; 被攻方武将战场编号
004D3128 6BC0 24 imul eax, eax, 24
004D312B 05 502C4B00 add eax, 004B2C50 ; 被攻击方武将战场信息地址
004D3130 8A50 06 mov dl, byte ptr [eax+6] ; 被攻方战场横坐标(左到右数)
004D3133 3E:8855 EF mov byte ptr ds:[ebp-11], dl
004D3137 8A50 07 mov dl, byte ptr [eax+7] ; 被攻方战场纵坐标(上到下数)
004D313A 3E:8855 EE mov byte ptr ds:[ebp-12], dl
004D313E 8B10 mov edx, dword ptr [eax] ; 被攻方DATA编号
004D3140 8955 F0 mov dword ptr [ebp-10], edx
004D3143 8B5D 08 mov ebx, dword ptr [ebp+8] ; 输入参数1:攻方武将DATA编号
004D3146 85DB test ebx, ebx
004D3148 0F84 3B090000 je 004D3A89 ; 管毅
004D314E 83FB 01 cmp ebx, 1 ; 程咬金
004D3151 ^ 0F84 01FDFFFF je 004D2E58
004D3157 83FB 05 cmp ebx, 5 ; 伍云召
004D315A 0F84 E5070000 je 004D3945
004D3160 83FB 07 cmp ebx, 7 ; 伍天锡
004D3163 0F84 0E070000 je 004D3877
004D3169 83FB 08 cmp ebx, 8 ; 秦琼
004D316C 74 52 je short 004D31C0
004D316E 83FB 0E cmp ebx, 0E ; 姜松
004D3171 0F84 A6000000 je 004D321D
004D3177 83FB 11 cmp ebx, 11 ; 裴元庆
004D317A 0F84 AF030000 je 004D352F
004D3180 83FB 13 cmp ebx, 13 ; 检查是否罗成
004D3183 EB 15 jmp short 004D319A
004D3185 90 nop
004D3186 90 nop
004D3187 90 nop
004D3188 90 nop
004D3189 6A 06 push 6
004D318B 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D318E E8 85F5F6FF call 00442718 ; 更新武将是否已行动标记
004D3193 8BE5 mov esp, ebp
004D3195 5D pop ebp
004D3196 C3 retn
0043F8BE $ 55 push ebp ; 获取ECX武将攻击范围
0043F8BF . 8BEC mov ebp, esp
0043F8C1 . 83EC 08 sub esp, 8
0043F8C4 . 894D FC mov dword ptr [ebp-4], ecx ; 攻击方武将战场信息指针
0043F8C7 .- E9 613B0900 jmp 004D342D
0043F8CC . 8B08 mov ecx, dword ptr [eax]
0043F8CE . 6BC9 48 imul ecx, ecx, 48
0043F8D1 . 81C1 0000D600 add ecx, 0D60000
0043F8D7 . 894D F8 mov dword ptr [ebp-8], ecx ; 攻击方武将SAV映射
0043F8DA . E8 2A81FCFF call 00407A09 ; 检查ECX武将是否装备特效为08栈的道具
0043F8DF . 85C0 test eax, eax
0043F8E1 . 74 0C je short 0043F8EF
0043F8E3 . 6A 2A push 2A
0043F8E5 . 8B4D F8 mov ecx, dword ptr [ebp-8]
0043F8E8 . E8 0582FCFF call 00407AF2 ; 获取ECX武将装备为08栈特殊道具的特效值
0043F8ED . EB 24 jmp short 0043F913
0043F8EF > 90 nop
0043F8F0 .^ E9 0ADAFEFF jmp 0042D2FF
0043F8F5 > 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击方武将战场信息指针
0043F8F8 . E8 73E6FDFF call 0041DF70 ; 获取ECX武将的兵种
0043F8FD . 8AC8 mov cl, al
0043F8FF . 81E1 FF000000 and ecx, 0FF
0043F905 . 6BC9 1B imul ecx, ecx, 1B
0043F908 . 81C1 A0BF4A00 add ecx, 004ABFA0
0043F90E . E8 8D000100 call 0044F9A0 ; 获取ECX兵种的攻击范围
0043F913 > 8BE5 mov esp, ebp
0043F915 . 5D pop ebp
0043F916 . C3 retn
004D342D A1 14F34C00 mov eax, dword ptr [4CF314] ; 检查绝招发动标志
004D3432 85C0 test eax, eax
004D3434 75 0A jnz short 004D3440
004D3436 6A 2A push 2A ; 2AH特效号:远距攻击
004D3438 8B45 FC mov eax, dword ptr [ebp-4] ; 攻击方武将战场信息指针
004D343B - E9 8CC4F6FF jmp 0043F8CC ; 非必中的绝招或普通攻击,则继续往后判定
004D3440 8B01 mov eax, dword ptr [ecx] ; 取绝招武将DATA编号
004D3442 83F8 08 cmp eax, 8 ; 秦琼
004D3445 75 0A jnz short 004D3451
004D3447 B8 06000000 mov eax, 6 ; 改变原攻击范围:十字
004D344C - E9 C2C4F6FF jmp 0043F913 ; 跳转至获取攻击范围函数结束
004D3451 83F8 05 cmp eax, 5 ; 伍云召
004D3454 74 11 je short 004D3467
004D3456 83F8 07 cmp eax, 7 ; 伍天锡
004D3459 74 0C je short 004D3467
004D345B 83F8 0E cmp eax, 0E ; 姜松
004D345E 74 07 je short 004D3467
004D3460 83F8 13 cmp eax, 13 ; 罗成
004D3463 74 02 je short 004D3467
004D3465 ^ EB CF jmp short 004D3436 ; 其他带绝招武将
004D3467 33C0 xor eax, eax ; 固定短兵单体
004D3469 - E9 A5C4F6FF jmp 0043F913 ; 跳转至获取攻击范围函数结束
0042D2FF > /6A 15 push 15 ; 15H特效号:每回合获得EXP
0042D301 . |8B4D F8 mov ecx, dword ptr [ebp-8] ; 绝招武将SAV映射
0042D304 . |E8 00A7FDFF call 00407A09 ; 检查ECX武将是否装备特效为08栈的道具
0042D309 . |84C0 test al, al
0042D30B . |74 23 je short 0042D330
0042D30D . |8B4D F8 mov ecx, dword ptr [ebp-8] ; 绝招武将SAV映射
0042D310 . |E8 FB92FDFF call 00406610 ; 获取ECX武将的兵种
0042D315 . |3C 0F cmp al, 0F ; 探马; Switch (cases F..11)
0042D317 . |75 04 jnz short 0042D31D
0042D319 . |B0 07 mov al, 7 ; 改变原攻击范围; Case F of switch 0042D315
0042D31B . |EB 0E jmp short 0042D32B
0042D31D > |3C 10 cmp al, 10 ; 刺客
0042D31F . |75 04 jnz short 0042D325
0042D321 . |B0 08 mov al, 8 ; Case 10 of switch 0042D315
0042D323 . |EB 06 jmp short 0042D32B
0042D325 > |3C 11 cmp al, 11 ; 无影剑
0042D327 . |75 07 jnz short 0042D330
0042D329 . |B0 08 mov al, 8 ; Case 11 of switch 0042D315
0042D32B > |E9 E3250100 jmp 0043F913 ; 跳转至获取攻击范围函数结束
2010-1-21 17:01
蛇夫座
[绝招的必中设定]
004D2F82 803D 50AC5500 00 cmp byte ptr [55AC50], 0
004D2F89 75 20 jnz short 004D2FAB
004D2F8B - E9 0986F6FF jmp 0043B599 ; 为0则参考其他情况
004D2F90 E8 DBC6F8FF call 0045F670 ; 获取ECX武将DATA编号
004D2F95 33C9 xor ecx, ecx
004D2F97 8B0D 14F34C00 mov ecx, dword ptr [4CF314]
004D2F9D 85C9 test ecx, ecx ; 检查绝招发动标志
004D2F9F 75 05 jnz short 004D2FA6
004D2FA1 ^ EB DF jmp short 004D2F82
004D2FA3 90 nop
004D2FA4 90 nop
004D2FA5 90 nop
004D2FA6 83F8 01 cmp eax, 1 ; 检查是否为程咬金
004D2FA9 74 0A je short 004D2FB5 ; 逻辑真
004D2FAB B8 64000000 mov eax, 64 ; 设置命中率为100
004D2FB0 - E9 7D87F6FF jmp 0043B732
004D2FB5 6A 08 push 8 ; 与操作测试二进制第3位
004D2FB7 8B4D DC mov ecx, dword ptr [ebp-24] ; 被攻击方战场信息指针
004D2FBA E8 2137F3FF call 004066E0 ; 驱除ECX武将的异常状态
004D2FBF 85C0 test eax, eax ; 二进制第3位为1则返回真
004D2FC1 ^ 75 E8 jnz short 004D2FAB ; 即敌带混乱状态下命中为100
004D2FC3 B8 32000000 mov eax, 32 ; 否则命中为50
004D2FC8 - E9 6587F6FF jmp 0043B732
[致命一击概率设置]
004D34C9 33DB xor ebx, ebx
004D34CB 8B1D 14F34C00 mov ebx, dword ptr [4CF314]
004D34D1 85DB test ebx, ebx ; 检测绝招发动标志
004D34D3 75 0A jnz short 004D34DF
004D34D5 E8 8F28F3FF call 00405D69 ; 获取攻方武将致命一击概率
004D34DA - E9 212AF3FF jmp 00405F00
004D34DF 8B45 F4 mov eax, dword ptr [ebp-C] ; 取攻击信息指针
004D34E2 8B48 0C mov ecx, dword ptr [eax+C] ; 4927F0+0C 为攻方武将战场信息指针
004D34E5 E8 86C1F8FF call 0045F670 ; 取攻方武DATA编号
004D34EA 83F8 07 cmp eax, 7 ; 伍天锡
004D34ED 74 0A je short 004D34F9
004D34EF 83F8 1A cmp eax, 1A ; 雄阔海
004D34F2 74 05 je short 004D34F9
004D34F4 - E9 3F2AF3FF jmp 00405F38 ; 其它带绝招人物直接发生爆击
004D34F9 33C0 xor eax, eax ; 爆击概率清0
004D34FB ^ 74 DD je short 004D34DA
[无视防御设定]
004D3501 E8 8FC0F6FF call 0043F595 ; 取敌防御力,根据状态增减
004D3506 33C9 xor ecx, ecx
004D3508 8B0D 14F34C00 mov ecx, dword ptr [4CF314]
004D350E 85C9 test ecx, ecx ; 检查绝招发动标志
004D3510 - 0F84 DA87F6FF je 0043BCF0 ; 未发动则跳转回
004D3516 8B4D D4 mov ecx, dword ptr [ebp-2C] ; 取攻击方战场信息指针
004D3519 8B11 mov edx, dword ptr [ecx] ; 取攻击方武将DATA编号
004D351B 83FA 11 cmp edx, 11 ; 检测绝招方武将是否为裴元庆
004D351E - 0F85 CC87F6FF jnz 0043BCF0
004D3524 33C0 xor eax, eax
004D3526 - E9 C587F6FF jmp 0043BCF0 ; 敌防御力清0
[穿透特效判定]
00407818 $ 55 push ebp ; 穿透判定函数
00407819 . 8BEC mov ebp, esp
0040781B . 83EC 0C sub esp, 0C
0040781E . 894D F8 mov dword ptr [ebp-8], ecx ; 指向攻击方武将SAV映射
00407821 E9 28050000 jmp 00407D4E
00407826 E8 A5FFFFFF call 004077D0 ; 获取ECX武将职业(三转兵种为一个职业)
0040782B 833D 20AC5500 01 cmp dword ptr [55AC20], 1 ; 宇文成都绝技发动标志,则九宫穿透
00407832 74 41 je short 00407875
00407834 . 90 nop
00407835 . 3C 17 cmp al, 17 ; 炮车
00407837 . 74 06 je short 0040783F
00407839 . 3C 02 cmp al, 2 ; 枪兵
0040783B . 74 08 je short 00407845
0040783D . EB 0C jmp short 0040784B
0040783F > C645 FC 05 mov byte ptr [ebp-4], 5 ; 穿6格
00407843 . EB 43 jmp short 00407888
00407845 > C645 FC 04 mov byte ptr [ebp-4], 4 ; 穿2格
00407849 . EB 3D jmp short 00407888
0040784B > 6A 15 push 15 ; 每回合获得EXP??
0040784D . 8B4D F8 mov ecx, dword ptr [ebp-8]
00407850 . E8 B4010000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
00407855 . 85C0 test eax, eax
00407857 . 74 22 je short 0040787B
00407859 . 8B4D F8 mov ecx, dword ptr [ebp-8]
0040785C . E8 AFEDFFFF call 00406610 ; 获取ECX武将的兵种(0~52)
00407861 . 3C 0F cmp al, 0F ; 探马; Switch (cases F..11)
00407863 . 75 02 jnz short 00407867
00407865 . EB 04 jmp short 0040786B ; Case F of switch 00407861
00407867 > 3C 10 cmp al, 10 ; 刺客
00407869 . 75 06 jnz short 00407871
0040786B > C645 FC 01 mov byte ptr [ebp-4], 1 ; 十字穿透; Case 10 of switch 00407861
0040786F . EB 17 jmp short 00407888
00407871 > 3C 11 cmp al, 11 ; 无影剑
00407873 . 75 06 jnz short 0040787B
00407875 > C645 FC 02 mov byte ptr [ebp-4], 2 ; 九宫穿透; Case 11 of switch 00407861
00407879 . EB 0D jmp short 00407888
0040787B > 6A 2B push 2B ; 穿透特效号; Default case of switch 00407861
0040787D . 8B4D F8 mov ecx, dword ptr [ebp-8] ; 指向攻击方武将SAV映射
00407880 . E9 B05A0200 jmp 0042D335 ; 检测武将是否装备穿透道具并获取特效值
00407885 . 8845 FC mov byte ptr [ebp-4], al
00407888 > 8A45 FC mov al, byte ptr [ebp-4]
0040788B . 8BE5 mov esp, ebp
0040788D . 5D pop ebp
0040788E . C3 retn
00407D4E 803D 14F34C00 00 cmp byte ptr [4CF314], 0 ; 检测绝招发动标志
00407D55 - 0F85 89230D00 jnz 004DA0E4
00407D5B 803D 3FAC5500 00 cmp byte ptr [55AC3F], 0 ; 检测[真空刃]发动标志
00407D62 - 0F85 4E290D00 jnz 004DA6B6
00407D68 C645 FC 00 mov byte ptr [ebp-4], 0 ; 初始化局部变量为0(无穿透)
00407D6C ^ E9 B5FAFFFF jmp 00407826 ; 继续下一个判定
0042D335 > \E8 CFA6FDFF call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
0042D33A . 85C0 test eax, eax
0042D33C . 74 0D je short 0042D34B
0042D33E . 6A 2B push 2B
0042D340 . 8B4D F8 mov ecx, dword ptr [ebp-8]
0042D343 . E8 AAA7FDFF call 00407AF2 ; 获取ECX武将装备特效为08栈道具的特效值
0042D348 . 8845 FC mov byte ptr [ebp-4], al
0042D34B >^ E9 38A5FDFF jmp 00407888 ; 跳转至穿透判定函数结束
2010-1-21 17:01
蛇夫座
[绝招的不同处理] (由于只打了几关,没有对全部人员进行分析)
[秦琼]
004D31C0 E8 25330000 call 004D64EA ; 绘制红色背景光栅
004D31C5 68 27575500 push 00555727 ; ASCII "杀手锏"
004D31CA B9 083D4B00 mov ecx, 004B3D08
004D31CF E8 92310000 call 004D6366 ; 战场背景显示绝招名
004D31D4 FF75 F8 push dword ptr [ebp-8]
004D31D7 FF75 E4 push dword ptr [ebp-1C]
004D31DA E8 A2030000 call 004D3581 ; 显示致命一击台词并产生攻击动作
004D31DF E8 92330000 call 004D6576 ; 清除背景光栅
004D31E4 6A 01 push 1
004D31E6 6A 00 push 0
004D31E8 6A 00 push 0
004D31EA FF75 F0 push dword ptr [ebp-10]
004D31ED B9 F05D4B00 mov ecx, 004B5DF0
004D31F2 E8 6578F8FF call 0045AA5C ; 减敌攻
004D31F7 6A 01 push 1
004D31F9 6A 00 push 0
004D31FB 6A 01 push 1
004D31FD FF75 F0 push dword ptr [ebp-10]
004D3200 B9 F05D4B00 mov ecx, 004B5DF0
004D3205 E8 5278F8FF call 0045AA5C ; 减敌防
004D320A ^ E9 7AFFFFFF jmp 004D3189 ; 秦琼绝招处理
2010-1-21 17:02
蛇夫座
[管毅]
004D3A89 E8 5C2A0000 call 004D64EA ; 绘制背景红色光栅
004D3A8E 68 16575500 push 00555716 ; ASCII "苍龙过阵枪"
004D3A93 B9 083D4B00 mov ecx, 004B3D08
004D3A98 E8 C9280000 call 004D6366 ; 战场背景显示绝招名
004D3A9D E9 5E680000 jmp 004DA300
004D3AA2 90 nop
004D3AA3 E8 D9FAFFFF call 004D3581 ; 致命一击台词并产生攻击伤害
004D3AA8 E9 13690000 jmp 004DA3C0
004D3AAD 6A 01 push 1
004D3AAF 6A 06 push 6
004D3AB1 6A 00 push 0
004D3AB3 FF75 08 push dword ptr [ebp+8]
004D3AB6 B9 F05D4B00 mov ecx, 004B5DF0
004D3ABB E8 9C6FF8FF call 0045AA5C
004D3AC0 6A 01 push 1
004D3AC2 6A 00 push 0
004D3AC4 6A 00 push 0
004D3AC6 FF75 F0 push dword ptr [ebp-10]
004D3AC9 B9 F05D4B00 mov ecx, 004B5DF0
004D3ACE E8 896FF8FF call 0045AA5C
004D3AD3 833D 08AC5500 01 cmp dword ptr [55AC08], 1
004D3ADA 75 26 jnz short 004D3B02
004D3ADC 6A 02 push 2
004D3ADE 6A 06 push 6
004D3AE0 6A 00 push 0
004D3AE2 FF75 08 push dword ptr [ebp+8]
004D3AE5 B9 F05D4B00 mov ecx, 004B5DF0
004D3AEA E8 6D6FF8FF call 0045AA5C
004D3AEF 6A 02 push 2
004D3AF1 6A 00 push 0
004D3AF3 6A 00 push 0
004D3AF5 FF75 F0 push dword ptr [ebp-10]
004D3AF8 B9 F05D4B00 mov ecx, 004B5DF0
004D3AFD E8 5A6FF8FF call 0045AA5C
004D3B02 833D 0CAC5500 01 cmp dword ptr [55AC0C], 1
004D3B09 75 2D jnz short 004D3B38
004D3B0B 6A 04 push 4
004D3B0D 6A 06 push 6
004D3B0F 6A 00 push 0
004D3B11 FF75 08 push dword ptr [ebp+8]
004D3B14 B9 F05D4B00 mov ecx, 004B5DF0
004D3B19 E8 3E6FF8FF call 0045AA5C
004D3B1E 6A 04 push 4
004D3B20 6A 00 push 0
004D3B22 6A 00 push 0
004D3B24 FF75 F0 push dword ptr [ebp-10]
004D3B27 B9 F05D4B00 mov ecx, 004B5DF0
004D3B2C E8 2B6FF8FF call 0045AA5C
004D3B31 833D 10AC5500 01 cmp dword ptr [55AC10], 1
004D3B38 75 26 jnz short 004D3B60
004D3B3A 6A 03 push 3
004D3B3C 6A 06 push 6
004D3B3E 6A 00 push 0
004D3B40 FF75 08 push dword ptr [ebp+8]
004D3B43 B9 F05D4B00 mov ecx, 004B5DF0
004D3B48 E8 0F6FF8FF call 0045AA5C
004D3B4D 6A 03 push 3
004D3B4F 6A 00 push 0
004D3B51 6A 00 push 0
004D3B53 FF75 F0 push dword ptr [ebp-10]
004D3B56 B9 F05D4B00 mov ecx, 004B5DF0
004D3B5B E8 FC6EF8FF call 0045AA5C
004D3B60 833D 14AC5500 01 cmp dword ptr [55AC14], 1
004D3B67 75 26 jnz short 004D3B8F
004D3B69 6A 05 push 5
004D3B6B 6A 06 push 6
004D3B6D 6A 00 push 0
004D3B6F FF75 08 push dword ptr [ebp+8]
004D3B72 B9 F05D4B00 mov ecx, 004B5DF0
004D3B77 E8 E06EF8FF call 0045AA5C
004D3B7C 6A 05 push 5
004D3B7E 6A 00 push 0
004D3B80 6A 00 push 0
004D3B82 FF75 F0 push dword ptr [ebp-10]
004D3B85 B9 F05D4B00 mov ecx, 004B5DF0
004D3B8A E8 CD6EF8FF call 0045AA5C
004D3B8F ^ E9 F5F5FFFF jmp 004D3189
2010-1-21 17:02
蛇夫座
[伍云召]
004D3945 33D2 xor edx, edx ; 伍云召绝招
004D3947 33C9 xor ecx, ecx
004D3949 8A4D ED mov cl, byte ptr [ebp-13] ; 攻击方战场横坐标(左到右数)
004D394C 8A55 EF mov dl, byte ptr [ebp-11] ; 被攻击方战场横坐标(左到右数)
004D394F 3BCA cmp ecx, edx
004D3951 75 19 jnz short 004D396C
004D3953 8855 E9 mov byte ptr [ebp-17], dl ; 若我横==敌横,更新击破后横
004D3956 8A4D EC mov cl, byte ptr [ebp-14] ; 攻击方战场纵坐标(上到下数)
004D3959 8A55 EE mov dl, byte ptr [ebp-12] ; 被攻击方战场纵坐标(上到下数)
004D395C 3BCA cmp ecx, edx
004D395E 77 06 ja short 004D3966
004D3960 42 inc edx ; 若我纵<敌纵,则击破后纵+1(向下走)
004D3961 8855 E8 mov byte ptr [ebp-18], dl ; 存入临时纵
004D3964 EB 1A jmp short 004D3980
004D3966 4A dec edx ; 若我纵>敌纵,则击破后纵-1(向上走)
004D3967 8855 E8 mov byte ptr [ebp-18], dl
004D396A EB 14 jmp short 004D3980
004D396C 3BCA cmp ecx, edx ; 我横!=敌横时,检查我横与敌横
004D396E 77 06 ja short 004D3976
004D3970 42 inc edx ; 若我横<敌横,则击破后横+1
004D3971 8855 E9 mov byte ptr [ebp-17], dl
004D3974 EB 04 jmp short 004D397A
004D3976 4A dec edx ; 若我横>敌横,则击破后横-1
004D3977 8855 E9 mov byte ptr [ebp-17], dl
004D397A 8A55 EC mov dl, byte ptr [ebp-14] ; 若我横!=敌横,取原纵
004D397D 8855 E8 mov byte ptr [ebp-18], dl
004D3980 8A55 E8 mov dl, byte ptr [ebp-18]
004D3983 8855 EA mov byte ptr [ebp-16], dl ; 击破后纵=临时纵
004D3986 E8 5F2B0000 call 004D64EA ; 绘制红色背景光栅
004D398B 68 76575500 push 00555776 ; "踏破连营"
004D3990 B9 083D4B00 mov ecx, 004B3D08
004D3995 E8 CC290000 call 004D6366 ; 显示绝招名符串
004D399A FF75 F8 push dword ptr [ebp-8]
004D399D FF75 E4 push dword ptr [ebp-1C]
004D39A0 E8 DCFBFFFF call 004D3581 ; 致命一击台词产生攻击动作与伤害
004D39A5 8D55 E9 lea edx, dword ptr [ebp-17] ; 取击破后横
004D39A8 52 push edx ; 要检测的坐标指针
004D39A9 E8 D61EF6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D39AE 83C4 04 add esp, 4
004D39B1 25 FF000000 and eax, 0FF
004D39B6 3D FF000000 cmp eax, 0FF
004D39BB 75 76 jnz short 004D3A33
004D39BD 8D55 E9 lea edx, dword ptr [ebp-17] ; 要检测的坐标指针
004D39C0 52 push edx
004D39C1 E8 CB1FF6FF call 00435991 ; 取地图坐标相关
004D39C6 83C4 04 add esp, 4
004D39C9 25 FF000000 and eax, 0FF ; 清除EAX高24位
004D39CE 50 push eax
004D39CF 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻方武将战场信息指针
004D39D2 E8 F8BDF6FF call 0043F7CF ; 地形恶路移动ZOC相关
004D39D7 3D FF000000 cmp eax, 0FF ; 255表示不可移动
004D39DC 74 55 je short 004D3A33
004D39DE 90 nop
004D39DF 90 nop
004D39E0 90 nop
004D39E1 6A 02 push 2 ; 测试二进制位1,即麻痹
004D39E3 8B4D FC mov ecx, dword ptr [ebp-4] ; 取我方武将战场信息
004D39E6 E8 F52CF3FF call 004066E0 ; 驱除ECX武将的异常状态08栈,采用AND方法
004D39EB 85C0 test eax, eax
004D39ED 75 44 jnz short 004D3A33 ; 若麻痹状态下则不移动武将
004D39EF 90 nop
004D39F0 90 nop
004D39F1 90 nop
004D39F2 90 nop
004D39F3 68 FFFF0000 push 0FFFF
004D39F8 8A45 E8 mov al, byte ptr [ebp-18] ; 取临时纵
004D39FB 50 push eax
004D39FC 8A45 E9 mov al, byte ptr [ebp-17] ; 取击破后横
004D39FF 50 push eax
004D3A00 FF75 08 push dword ptr [ebp+8] ; 绝招方DATA编号
004D3A03 B9 F05D4B00 mov ecx, 004B5DF0
004D3A08 E8 7A5AF8FF call 00459487 ; 移动武将
004D3A0D 6A 01 push 1 ; 显示动画
004D3A0F 6A 06 push 6 ; 增加
004D3A11 6A 05 push 5 ; 移动力
004D3A13 FF75 08 push dword ptr [ebp+8]
004D3A16 B9 F05D4B00 mov ecx, 004B5DF0
004D3A1B E8 3C70F8FF call 0045AA5C ; 增减能力
004D3A20 6A 01 push 1
004D3A22 6A 00 push 0
004D3A24 6A 05 push 5
004D3A26 FF75 F0 push dword ptr [ebp-10]
004D3A29 B9 F05D4B00 mov ecx, 004B5DF0 ; 降敌移动力
004D3A2E E8 2970F8FF call 0045AA5C
004D3A33 E8 3E2B0000 call 004D6576 ; 清除光栅
004D3A38 ^ E9 4CF7FFFF jmp 004D3189
004D3A3D E8 EC43F6FF call 00437E2E
004D3A42 33C9 xor ecx, ecx
004D3A44 8B0D 14F34C00 mov ecx, dword ptr [4CF314]
004D3A4A 85C9 test ecx, ecx
004D3A4C - 0F84 716FF6FF je 0043A9C3
004D3A52 8B4D E8 mov ecx, dword ptr [ebp-18]
004D3A55 8B19 mov ebx, dword ptr [ecx]
004D3A57 83FB 05 cmp ebx, 5
004D3A5A - 0F85 636FF6FF jnz 0043A9C3
004D3A60 8A59 0F mov bl, byte ptr [ecx+F]
004D3A63 8818 mov byte ptr [eax], bl
004D3A65 8858 01 mov byte ptr [eax+1], bl
004D3A68 - E9 566FF6FF jmp 0043A9C3
2010-1-21 17:03
蛇夫座
[雄阔海]
004D35D9 33D2 xor edx, edx ; 雄阔海绝招
004D35DB 8B4D FC mov ecx, dword ptr [ebp-4] ; 指向攻击方武将战场信息
004D35DE 8A51 07 mov dl, byte ptr [ecx+7] ; 攻方战场纵坐标
004D35E1 3E:8855 ED mov byte ptr ds:[ebp-13], dl
004D35E5 8A51 06 mov dl, byte ptr [ecx+6]
004D35E8 3E:8855 EC mov byte ptr ds:[ebp-14], dl ; 攻方战场横坐标
004D35EC 33C9 xor ecx, ecx
004D35EE 894D E0 mov dword ptr [ebp-20], ecx ; dword ptr [ebp-20] = 0
004D35F1 8B4D FC mov ecx, dword ptr [ebp-4] ; 指向攻击方武将战场信息
004D35F4 E8 C5C2F6FF call 0043F8BE
004D35F9 25 FF000000 and eax, 0FF
004D35FE 85C0 test eax, eax
004D3600 0F84 E8000000 je 004D36EE
004D3606 33D2 xor edx, edx
004D3608 8A55 ED mov dl, byte ptr [ebp-13]
004D360B 4A dec edx ; 攻方战场纵坐标-1
004D360C 8855 E9 mov byte ptr [ebp-17], dl
004D360F 33D2 xor edx, edx
004D3611 8A55 EC mov dl, byte ptr [ebp-14]
004D3614 4A dec edx ; 攻方战场横坐标-1
004D3615 8855 E8 mov byte ptr [ebp-18], dl
004D3618 8D55 E8 lea edx, dword ptr [ebp-18] ; 左上
004D361B 52 push edx
004D361C E8 6322F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D3621 83C4 04 add esp, 4
004D3624 25 FF000000 and eax, 0FF
004D3629 3D FF000000 cmp eax, 0FF
004D362E 74 10 je short 004D3640
004D3630 83F8 23 cmp eax, 23
004D3633 7C 0B jl short 004D3640
004D3635 8B4D E0 mov ecx, dword ptr [ebp-20]
004D3638 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D363C 41 inc ecx
004D363D 894D E0 mov dword ptr [ebp-20], ecx
004D3640 33D2 xor edx, edx
004D3642 8A55 ED mov dl, byte ptr [ebp-13]
004D3645 42 inc edx ; 攻方战场纵坐标+1
004D3646 8855 E9 mov byte ptr [ebp-17], dl
004D3649 33D2 xor edx, edx
004D364B 8A55 EC mov dl, byte ptr [ebp-14]
004D364E 4A dec edx ; 攻方战场横坐标-1
004D364F 8855 E8 mov byte ptr [ebp-18], dl
004D3652 8D55 E8 lea edx, dword ptr [ebp-18]
004D3655 52 push edx ; 左下
004D3656 E8 2922F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D365B 83C4 04 add esp, 4
004D365E 25 FF000000 and eax, 0FF
004D3663 3D FF000000 cmp eax, 0FF
004D3668 74 10 je short 004D367A
004D366A 83F8 23 cmp eax, 23
004D366D 7C 0B jl short 004D367A
004D366F 8B4D E0 mov ecx, dword ptr [ebp-20]
004D3672 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D3676 41 inc ecx
004D3677 894D E0 mov dword ptr [ebp-20], ecx
004D367A 33D2 xor edx, edx
004D367C 8A55 ED mov dl, byte ptr [ebp-13]
004D367F 4A dec edx
004D3680 8855 E9 mov byte ptr [ebp-17], dl
004D3683 33D2 xor edx, edx
004D3685 8A55 EC mov dl, byte ptr [ebp-14]
004D3688 42 inc edx
004D3689 8855 E8 mov byte ptr [ebp-18], dl
004D368C 8D55 E8 lea edx, dword ptr [ebp-18]
004D368F 52 push edx
004D3690 E8 EF21F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D3695 83C4 04 add esp, 4
004D3698 25 FF000000 and eax, 0FF
004D369D 3D FF000000 cmp eax, 0FF
004D36A2 74 10 je short 004D36B4
004D36A4 83F8 23 cmp eax, 23
004D36A7 7C 0B jl short 004D36B4
004D36A9 8B4D E0 mov ecx, dword ptr [ebp-20]
004D36AC 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D36B0 41 inc ecx
004D36B1 894D E0 mov dword ptr [ebp-20], ecx
004D36B4 33D2 xor edx, edx
004D36B6 8A55 ED mov dl, byte ptr [ebp-13]
004D36B9 42 inc edx
004D36BA 8855 E9 mov byte ptr [ebp-17], dl
004D36BD 33D2 xor edx, edx
004D36BF 8A55 EC mov dl, byte ptr [ebp-14]
004D36C2 42 inc edx
004D36C3 8855 E8 mov byte ptr [ebp-18], dl
004D36C6 8D55 E8 lea edx, dword ptr [ebp-18]
004D36C9 52 push edx
004D36CA E8 B521F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D36CF 83C4 04 add esp, 4
004D36D2 25 FF000000 and eax, 0FF
004D36D7 3D FF000000 cmp eax, 0FF
004D36DC 74 10 je short 004D36EE
004D36DE 83F8 23 cmp eax, 23
004D36E1 7C 0B jl short 004D36EE
004D36E3 8B4D E0 mov ecx, dword ptr [ebp-20]
004D36E6 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D36EA 41 inc ecx
004D36EB 894D E0 mov dword ptr [ebp-20], ecx
004D36EE 33D2 xor edx, edx
004D36F0 8A55 ED mov dl, byte ptr [ebp-13]
004D36F3 4A dec edx
004D36F4 8855 E9 mov byte ptr [ebp-17], dl ; 攻方战场纵坐标-1
004D36F7 33D2 xor edx, edx
004D36F9 8A55 EC mov dl, byte ptr [ebp-14]
004D36FC 8855 E8 mov byte ptr [ebp-18], dl ; 攻方战场横坐标
004D36FF 8D55 E8 lea edx, dword ptr [ebp-18] ; (上方)
004D3702 52 push edx
004D3703 E8 7C21F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D3708 83C4 04 add esp, 4 ; 可用于检查有无敌人
004D370B 25 FF000000 and eax, 0FF
004D3710 3D FF000000 cmp eax, 0FF
004D3715 74 10 je short 004D3727
004D3717 83F8 23 cmp eax, 23
004D371A 7C 0B jl short 004D3727
004D371C 8B4D E0 mov ecx, dword ptr [ebp-20]
004D371F 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D3723 41 inc ecx
004D3724 894D E0 mov dword ptr [ebp-20], ecx
004D3727 33D2 xor edx, edx
004D3729 8A55 ED mov dl, byte ptr [ebp-13]
004D372C 8855 E9 mov byte ptr [ebp-17], dl ; 攻方战场纵坐标
004D372F 33D2 xor edx, edx
004D3731 8A55 EC mov dl, byte ptr [ebp-14]
004D3734 4A dec edx ; 攻方战场横坐标-1
004D3735 8855 E8 mov byte ptr [ebp-18], dl
004D3738 8D55 E8 lea edx, dword ptr [ebp-18]
004D373B 52 push edx ; (左侧)
004D373C E8 4321F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D3741 83C4 04 add esp, 4
004D3744 25 FF000000 and eax, 0FF
004D3749 3D FF000000 cmp eax, 0FF
004D374E 74 10 je short 004D3760
004D3750 83F8 23 cmp eax, 23
004D3753 7C 0B jl short 004D3760
004D3755 8B4D E0 mov ecx, dword ptr [ebp-20]
004D3758 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D375C 41 inc ecx
004D375D 894D E0 mov dword ptr [ebp-20], ecx
004D3760 33D2 xor edx, edx
004D3762 8A55 ED mov dl, byte ptr [ebp-13]
004D3765 42 inc edx
004D3766 8855 E9 mov byte ptr [ebp-17], dl ; 攻方战场纵坐标+1
004D3769 8A55 EC mov dl, byte ptr [ebp-14]
004D376C 8855 E8 mov byte ptr [ebp-18], dl ; 攻方战场横坐标
004D376F 8D55 E8 lea edx, dword ptr [ebp-18]
004D3772 52 push edx ; (左下)
004D3773 E8 0C21F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D3778 83C4 04 add esp, 4
004D377B 25 FF000000 and eax, 0FF
004D3780 3D FF000000 cmp eax, 0FF
004D3785 74 10 je short 004D3797
004D3787 83F8 23 cmp eax, 23
004D378A 7C 0B jl short 004D3797
004D378C 8B4D E0 mov ecx, dword ptr [ebp-20]
004D378F 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D3793 41 inc ecx
004D3794 894D E0 mov dword ptr [ebp-20], ecx
004D3797 33D2 xor edx, edx
004D3799 8A55 ED mov dl, byte ptr [ebp-13]
004D379C 8855 E9 mov byte ptr [ebp-17], dl ; 攻方战场纵坐标
004D379F 8A55 EC mov dl, byte ptr [ebp-14]
004D37A2 42 inc edx
004D37A3 8855 E8 mov byte ptr [ebp-18], dl ; 攻方战场横坐标+1
004D37A6 8D55 E8 lea edx, dword ptr [ebp-18]
004D37A9 52 push edx ; (右侧)
004D37AA E8 D520F6FF call 00435884 ; 获取08栈坐标上的武将的战场编号
004D37AF 83C4 04 add esp, 4
004D37B2 25 FF000000 and eax, 0FF
004D37B7 3D FF000000 cmp eax, 0FF
004D37BC 74 10 je short 004D37CE
004D37BE 83F8 23 cmp eax, 23
004D37C1 7C 0B jl short 004D37CE
004D37C3 8B4D E0 mov ecx, dword ptr [ebp-20]
004D37C6 89448D C0 mov dword ptr [ebp+ecx*4-40], eax
004D37CA 41 inc ecx
004D37CB 894D E0 mov dword ptr [ebp-20], ecx
004D37CE 8B4D E0 mov ecx, dword ptr [ebp-20]
004D37D1 85C9 test ecx, ecx ; 攻击内的敌人数
004D37D3 75 14 jnz short 004D37E9
004D37D5 68 14E34800 push 0048E314 ; ASCII"范围内无敌军"
004D37DA 6A 02 push 2
004D37DC E8 B8BEF5FF call 0042F699
004D37E1 83C4 08 add esp, 8
004D37E4 ^ E9 AAF9FFFF jmp 004D3193
004D37E9 E8 FC2C0000 call 004D64EA ; 绘制红色背景光栅
004D37EE 68 56575500 push 00555756 ; ASCII"威震八荒"
004D37F3 B9 083D4B00 mov ecx, 004B3D08
004D37F8 E8 692B0000 call 004D6366 ; 显示绝招名符串
004D37FD E8 742D0000 call 004D6576 ; 清除光栅
004D3802 8B45 FC mov eax, dword ptr [ebp-4] ; 指向攻击方武将战场信息
004D3805 33DB xor ebx, ebx
004D3807 8A58 04 mov bl, byte ptr [eax+4] ; 取攻方战场形象编号
004D380A 895D E4 mov dword ptr [ebp-1C], ebx
004D380D 33C0 xor eax, eax
004D380F 8B4D E0 mov ecx, dword ptr [ebp-20] ; 范围内敌军人数作为循环计数器
004D3812 3BC1 cmp eax, ecx
004D3814 ^ 0F84 6FF9FFFF je 004D3189 ; 若相等则结束
004D381A 8945 BC mov dword ptr [ebp-44], eax ; dword ptr[ebp-44]清0
004D381D 8B4C85 C0 mov ecx, dword ptr [ebp+eax*4-40]
004D3821 51 push ecx
004D3822 FF75 E4 push dword ptr [ebp-1C] ; 攻方战场形象编号
004D3825 E8 FF1FF6FF call 00435829
004D382A 83C4 08 add esp, 8
004D382D 8B45 BC mov eax, dword ptr [ebp-44] ; 已产生的攻击次数
004D3830 8B4C85 C0 mov ecx, dword ptr [ebp+eax*4-40]
004D3834 51 push ecx ; 被攻击方战场形象
004D3835 FF75 E4 push dword ptr [ebp-1C] ; 攻方战场形象编号
004D3838 B9 F0274900 mov ecx, 004927F0 ; 4927F0为攻击信息地址
004D383D E8 C63F0000 call 004D7808 ; $$攻击并接受返击一次
004D3842 8B4D FC mov ecx, dword ptr [ebp-4] ; 指向攻击方武将战场信息
004D3845 E8 46F4F9FF call 00472C90 ; 返回ECX武将当前体力
004D384A 85C0 test eax, eax
004D384C 25 FFFF0000 and eax, 0FFFF ; 清除高16位
004D3851 85C0 test eax, eax
004D3853 ^ 0F84 30F9FFFF je 004D3189 ; 若为0则结束
004D3859 8B45 BC mov eax, dword ptr [ebp-44] ; 已产生的攻击次数
004D385C 40 inc eax
004D385D ^ EB B0 jmp short 004D380F
2010-1-21 17:04
蛇夫座
[特技发动测试]
004D7808 55 push ebp
004D7809 8BEC mov ebp, esp
004D780B 83EC 10 sub esp, 10
004D780E 894D FC mov dword ptr [ebp-4], ecx ; 攻击信息指针
004D7811 8BC1 mov eax, ecx
004D7813 33C9 xor ecx, ecx
004D7815 8A88 08060000 mov cl, byte ptr [eax+608]
004D781B 85C9 test ecx, ecx
004D781D 75 6D jnz short 004D788C
004D781F 8A4D 08 mov cl, byte ptr [ebp+8] ; 攻击方武将战场编号
004D7822 6BC9 24 imul ecx, ecx, 24
004D7825 81C1 502C4B00 add ecx, 004B2C50
004D782B E8 407EF8FF call 0045F670 ; 获取ECX武将的DATA编号
004D7830 8945 F8 mov dword ptr [ebp-8], eax ; 攻击方武将DATA编号
004D7833 8165 0C FF000000 and dword ptr [ebp+C], 0FF ; 被攻方武将战场编号
004D783A 8B4D 0C mov ecx, dword ptr [ebp+C]
004D783D 6BC9 24 imul ecx, ecx, 24
004D7840 81C1 502C4B00 add ecx, 004B2C50
004D7846 E8 257EF8FF call 0045F670 ; 获取ECX武将的DATA编号
004D784B 8945 F0 mov dword ptr [ebp-10], eax ; 被攻方武将DATA编号
004D784E FF75 F8 push dword ptr [ebp-8] ; 攻击方武将DATA编号
004D7851 FF75 0C push dword ptr [ebp+C] ; 被攻方武将战场编号
004D7854 E8 77FEFFFF call 004D76D0 ; 敌军与友军绝技发动测试函数
004D7859 83C4 08 add esp, 8
004D785C 85C0 test eax, eax ; 检查是否已发动绝技
004D785E 75 2C jnz short 004D788C
004D7860 8945 F4 mov dword ptr [ebp-C], eax
004D7863 FF75 F8 push dword ptr [ebp-8] ; 攻击方武将DATA编号
004D7866 FF75 0C push dword ptr [ebp+C] ; 被攻方武将战场编号
004D7869 E8 76FCFFFF call 004D74E4
004D786E 85C0 test eax, eax ; 检查定彦平绝技发动是否成功
004D7870 74 1A je short 004D788C
004D7872 C705 24AC5500 01000000 mov dword ptr [55AC24], 1
004D787C FF75 08 push dword ptr [ebp+8] ; 更改攻击方与被攻击方武将的战场编号压栈顺序
004D787F FF75 0C push dword ptr [ebp+C]
004D7882 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击信息指针
004D7885 E8 67ECF2FF call 004064F1 ; 攻击处理函数
004D788A EB 0E jmp short 004D789A
004D788C FF75 0C push dword ptr [ebp+C] ; 被攻方武将战场编号
004D788F FF75 08 push dword ptr [ebp+8] ; 攻击方武将战场编号
004D7892 8B4D FC mov ecx, dword ptr [ebp-4] ; ECX=004927F0H
004D7895 E8 57ECF2FF call 004064F1 ; 攻击处理函数
004D789A 8BE5 mov esp, ebp
004D789C 5D pop ebp
004D789D C2 0800 retn 8
004D76D0 55 push ebp ; 敌军与友军绝技发动测试函数
004D76D1 8BEC mov ebp, esp
004D76D3 83EC 1C sub esp, 1C
004D76D6 8B4D 08 mov ecx, dword ptr [ebp+8] ; 被攻击武将战场编号
004D76D9 6BC9 24 imul ecx, ecx, 24
004D76DC 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息地址
004D76E2 E8 897FF8FF call 0045F670 ; 获取ECX武将DATA编号
004D76E7 8945 EC mov dword ptr [ebp-14], eax ; 被攻击武将DATA编号
004D76EA 8B45 0C mov eax, dword ptr [ebp+C] ; 攻击方武将DATA编号
004D76ED 83F8 2C cmp eax, 2C ; 新文礼 DATA_44
004D76F0 75 1B jnz short 004D770D
004D76F2 FF75 EC push dword ptr [ebp-14]
004D76F5 FF75 0C push dword ptr [ebp+C]
004D76F8 E8 D5FEFFFF call 004D75D2
004D76FD 85C0 test eax, eax
004D76FF ^ 74 C2 je short 004D76C3
004D7701 C705 2CAC5500 01000000 mov dword ptr [55AC2C], 1
004D770B ^ EB BA jmp short 004D76C7
004D770D 83F8 22 cmp eax, 22 ; 李元霸 DATA_34
004D7710 75 1B jnz short 004D772D
004D7712 FF75 EC push dword ptr [ebp-14]
004D7715 FF75 0C push dword ptr [ebp+C]
004D7718 E8 B5FEFFFF call 004D75D2
004D771D 85C0 test eax, eax
004D771F ^ 74 A2 je short 004D76C3
004D7721 C705 28AC5500 01000000 mov dword ptr [55AC28], 1
004D772B ^ EB 9A jmp short 004D76C7
004D772D 83F8 21 cmp eax, 21 ; 宇文成都 DATA_33
004D7730 75 1E jnz short 004D7750
004D7732 FF75 EC push dword ptr [ebp-14] ; 被攻击武将DATA编号
004D7735 FF75 0C push dword ptr [ebp+C] ; 攻击方武将DATA编号
004D7738 E8 95FEFFFF call 004D75D2 ; 参考双方士气计算出发动机率
004D773D 85C0 test eax, eax ; 返回0表示不发动
004D773F ^ 74 82 je short 004D76C3
004D7741 C705 20AC5500 01000000 mov dword ptr [55AC20], 1 ; 宇文成都特技发动标志置位
004D774B ^ E9 77FFFFFF jmp 004D76C7
004D7750 83F8 20 cmp eax, 20 ; 杨林 DATA_32
004D7753 75 26 jnz short 004D777B
004D7755 90 nop
004D7756 90 nop
004D7757 90 nop
004D7758 90 nop
004D7759 FF75 EC push dword ptr [ebp-14]
004D775C FF75 0C push dword ptr [ebp+C]
004D775F E8 6EFEFFFF call 004D75D2
004D7764 85C0 test eax, eax
004D7766 ^ 0F84 57FFFFFF je 004D76C3
004D776C C705 1CAC5500 01000000 mov dword ptr [55AC1C], 1
004D7776 ^ E9 4CFFFFFF jmp 004D76C7
004D777B 83F8 2B cmp eax, 2B ; 魏文通 DATA_43
004D777E 75 26 jnz short 004D77A6
004D7780 90 nop
004D7781 90 nop
004D7782 90 nop
004D7783 90 nop
004D7784 FF75 EC push dword ptr [ebp-14]
004D7787 FF75 0C push dword ptr [ebp+C]
004D778A E8 43FEFFFF call 004D75D2
004D778F 85C0 test eax, eax
004D7791 ^ 0F84 2CFFFFFF je 004D76C3
004D7797 C705 3CAC5500 01000000 mov dword ptr [55AC3C], 1
004D77A1 ^ E9 21FFFFFF jmp 004D76C7
004D77A6 83F8 23 cmp eax, 23 ; 苏烈 DATA_35
004D77A9 0F84 322D0000 je 004DA4E1
004D77AF 83F8 2E cmp eax, 2E ; 左天成 DATA_46
004D77B2 0F84 542F0000 je 004DA70C
004D77B8 83F8 2A cmp eax, 2A ; 尚师徒 DATA_42
004D77BB 0F84 BB2E0000 je 004DA67C
004D77C1 ^ E9 FDFEFFFF jmp 004D76C3
004D75D2 55 push ebp ; 参考双方士气计算发动机率,并测试事件是否发生
004D75D3 8BEC mov ebp, esp
004D75D5 83EC 0C sub esp, 0C
004D75D8 FF75 08 push dword ptr [ebp+8] ; 攻击方武将DATA编号
004D75DB E8 F66EF6FF call 0043E4D6 ; 获取08栈武将的战场编号
004D75E0 83C4 04 add esp, 4
004D75E3 3D FF000000 cmp eax, 0FF
004D75E8 74 5E je short 004D7648
004D75EA 6BC0 24 imul eax, eax, 24
004D75ED B9 502C4B00 mov ecx, 004B2C50
004D75F2 03C8 add ecx, eax
004D75F4 90 nop
004D75F5 90 nop
004D75F6 E8 8480F6FF call 0043F67F
004D75FB 8945 FC mov dword ptr [ebp-4], eax
004D75FE FF75 0C push dword ptr [ebp+C] ; 被攻方武将DATA编号
004D7601 E8 D06EF6FF call 0043E4D6 ; 获取08栈武将的战场编号
004D7606 83C4 04 add esp, 4
004D7609 3D FF000000 cmp eax, 0FF
004D760E 74 38 je short 004D7648
004D7610 6BC0 24 imul eax, eax, 24
004D7613 B9 502C4B00 mov ecx, 004B2C50
004D7618 03C8 add ecx, eax
004D761A 90 nop
004D761B 90 nop
004D761C E8 5E80F6FF call 0043F67F
004D7621 8945 F8 mov dword ptr [ebp-8], eax
004D7624 8B45 FC mov eax, dword ptr [ebp-4]
004D7627 6BC0 32 imul eax, eax, 32 ; (攻方带上装备后的士气值*12/10)*50/(被攻方带上装备后的士气值*12/10)
004D762A 8B4D F8 mov ecx, dword ptr [ebp-8]
004D762D 33D2 xor edx, edx
004D762F F7F1 div ecx
004D7631 83F8 64 cmp eax, 64
004D7634 90 nop
004D7635 90 nop
004D7636 76 05 jbe short 004D763D
004D7638 B8 64000000 mov eax, 64
004D763D 50 push eax
004D763E E8 EF84FAFF call 0047FB32 ; 测试概率为08栈的事件是否发生
004D7643 83C4 04 add esp, 4
004D7646 EB 02 jmp short 004D764A
004D7648 33C0 xor eax, eax
004D764A 8BE5 mov esp, ebp
004D764C 5D pop ebp
004D764D C2 0800 retn 8
0043F67F /$ 55 push ebp
0043F680 |. 8BEC mov ebp, esp
0043F682 |. 83EC 0C sub esp, 0C
0043F685 |. 894D F8 mov dword ptr [ebp-8], ecx
0043F688 |. 8B45 F8 mov eax, dword ptr [ebp-8]
0043F68B |. 8A48 1C mov cl, byte ptr [eax+1C] ; 获取ECX武将的士气值
0043F68E |. 51 push ecx
0043F68F |. 8B55 F8 mov edx, dword ptr [ebp-8]
0043F692 |. 8B0A mov ecx, dword ptr [edx]
0043F694 |. 6BC9 48 imul ecx, ecx, 48 ; 取ECX武将DATA编号
0043F697 |. 81C1 0000D600 add ecx, 0D60000 ; ECX武将SAV映射
0043F69D |. E8 487BFCFF call 004071EA ; 获取ECX武将带上装备后的士气
0043F6A2 |. 50 push eax
0043F6A3 |. E8 A4FEFFFF call 0043F54C
0043F6A8 |. 83C4 08 add esp, 8
0043F6AB |. 8945 FC mov dword ptr [ebp-4], eax ; 带上装备后的士气值*12/10
0043F6AE |. 817D FC D0020000 cmp dword ptr [ebp-4], 2D0 ; 检查是否超过上限720
0043F6B5 |. 73 08 jnb short 0043F6BF
0043F6B7 |. 8B45 FC mov eax, dword ptr [ebp-4]
0043F6BA |. 8945 F4 mov dword ptr [ebp-C], eax
0043F6BD |. EB 07 jmp short 0043F6C6
0043F6BF |> C745 F4 0F270000 mov dword ptr [ebp-C], 270F ; 若超过上限则设为720
0043F6C6 |> 8B45 F4 mov eax, dword ptr [ebp-C]
0043F6C9 |. 8BE5 mov esp, ebp
0043F6CB |. 5D pop ebp
0043F6CC \. C3 retn
0043F54C /$ 55 push ebp
0043F54D |. 8BEC mov ebp, esp
0043F54F |. 8B45 0C mov eax, dword ptr [ebp+C] ; 战场上的士气值
0043F552 |. 25 FF000000 and eax, 0FF
0043F557 |. 83F8 04 cmp eax, 4
0043F55A |. 7C 14 jl short 0043F570
0043F55C |. 8B45 08 mov eax, dword ptr [ebp+8] ; 存档文件中的士气值
0043F55F |. 6BC0 0C imul eax, eax, 0C
0043F562 |. 33D2 xor edx, edx
0043F564 |. B9 0A000000 mov ecx, 0A
0043F569 |. F7F1 div ecx ; 带上装备后的士气值*12/10
0043F56B |. 8945 08 mov dword ptr [ebp+8], eax
0043F56E |. EB 20 jmp short 0043F590
0043F570 |> 8B55 0C mov edx, dword ptr [ebp+C]
0043F573 |. 81E2 FF000000 and edx, 0FF
0043F579 |. 83FA 02 cmp edx, 2
0043F57C |. 7F 12 jg short 0043F590
0043F57E |. 8B45 08 mov eax, dword ptr [ebp+8]
0043F581 |. 6BC0 08 imul eax, eax, 8
0043F584 |. 33D2 xor edx, edx
0043F586 |. B9 0A000000 mov ecx, 0A
0043F58B |. F7F1 div ecx
0043F58D |. 8945 08 mov dword ptr [ebp+8], eax
0043F590 |> 8B45 08 mov eax, dword ptr [ebp+8]
0043F593 |. 5D pop ebp
0043F594 \. C3 retn
2010-1-21 17:04
蛇夫座
[扩展的攻击处理函数]
004064F1 $ 55 push ebp ; 攻击处理函数
004064F2 . 8BEC mov ebp, esp
004064F4 . 51 push ecx ; 开辟局部变量
004064F5 . 894D FC mov dword ptr [ebp-4], ecx ; ECX=004927F0H
004064F8 . 8A45 0C mov al, byte ptr [ebp+C] ; 被攻方武将战场编号
004064FB . 50 push eax
004064FC . 8A4D 08 mov cl, byte ptr [ebp+8] ; 攻击方武将战场编号
004064FF . 51 push ecx
00406500 . 8B4D FC mov ecx, dword ptr [ebp-4]
00406503 . E8 F4FCFFFF call 004061FC ; 战场信息初始化与缓冲区数据填充
00406508 . 8B55 FC mov edx, dword ptr [ebp-4]
0040650B . C682 08060000 00 mov byte ptr [edx+608], 0 ; 循环计数器清0
00406512 . EB 15 jmp short 00406529
00406514 > 8B45 FC mov eax, dword ptr [ebp-4]
00406517 . 8A88 08060000 mov cl, byte ptr [eax+608]
0040651D . 80C1 01 add cl, 1 ; 循环计数+1
00406520 . 8B55 FC mov edx, dword ptr [ebp-4]
00406523 . 888A 08060000 mov byte ptr [edx+608], cl
00406529 > 8B45 FC mov eax, dword ptr [ebp-4]
0040652C . 33C9 xor ecx, ecx
0040652E . 8A88 08060000 mov cl, byte ptr [eax+608] ; 取当前计数值
00406534 . 83F9 02 cmp ecx, 2 ; 最大连击次数大于等于2则跳出
00406537 . 7D 28 jge short 00406561
00406539 . 8B4D FC mov ecx, dword ptr [ebp-4]
0040653C . E8 C2F8FFFF call 00405E03 ; 攻击伤害函数
00406541 . 8B4D FC mov ecx, dword ptr [ebp-4]
00406544 .- E9 7D130D00 jmp 004D78C6 ; 跳转至绝技背景特殊处理
00406549 . 8B4D FC mov ecx, dword ptr [ebp-4]
0040654C . E8 38F3FFFF call 00405889 ; 攻击后附加属性处理函数
00406551 . 8B4D FC mov ecx, dword ptr [ebp-4]
00406554 .- E9 97140D00 jmp 004D79F0 ; 清空绝技发动标志,并判断是否发生连击
00406559 85C0 test eax, eax
0040655B . 75 02 jnz short 0040655F
0040655D . EB 02 jmp short 00406561
0040655F >^ EB B3 jmp short 00406514
00406561 > 8B4D FC mov ecx, dword ptr [ebp-4]
00406564 E8 03F7FFFF call 00405C6C ; 经验值处理,升级显示函数
00406569 . 8B4D FC mov ecx, dword ptr [ebp-4]
0040656C . E8 29FEFFFF call 0040639A ; 反击处理函数
00406571 8BE5 mov esp, ebp
00406573 5D pop ebp
00406574 C2 0800 retn 8
004D78C6 E8 17000000 call 004D78E2 ; 绝技背景处理
004D78CB 8B4D FC mov ecx, dword ptr [ebp-4]
004D78CE E8 71DEF2FF call 00405744 ; 攻击动作显示函数
004D78D3 - E9 71ECF2FF jmp 00406549
004D78DE 8BE5 mov esp, ebp
004D78E0 5D pop ebp
004D78E1 C3 retn
004D78E2 55 push ebp ; 绝技背景处理
004D78E3 8BEC mov ebp, esp
004D78E5 833D 1CAC5500 01 cmp dword ptr [55AC1C], 1
004D78EC 75 1B jnz short 004D7909
004D78EE E8 F7EBFFFF call 004D64EA ; 绘制背景红色光栅
004D78F3 68 B6575500 push 005557B6 ; "龙呤"
004D78F8 B9 083D4B00 mov ecx, 004B3D08
004D78FD E8 64EAFFFF call 004D6366 ; 战场背景显示绝招名
004D7902 E8 6FECFFFF call 004D6576 ; 清除光栅
004D7907 ^ EB D5 jmp short 004D78DE
004D7909 833D 20AC5500 01 cmp dword ptr [55AC20], 1
004D7910 75 1B jnz short 004D792D
004D7912 E8 D3EBFFFF call 004D64EA
004D7917 68 A6575500 push 005557A6 ; "凤舞九天"
004D791C B9 083D4B00 mov ecx, 004B3D08
004D7921 E8 40EAFFFF call 004D6366
004D7926 E8 4BECFFFF call 004D6576
004D792B ^ EB B1 jmp short 004D78DE
004D792D 833D 24AC5500 01 cmp dword ptr [55AC24], 1
004D7934 75 1B jnz short 004D7951
004D7936 E8 AFEBFFFF call 004D64EA
004D793B 68 EA575500 push 005557EA ; "双雷引"
004D7940 B9 083D4B00 mov ecx, 004B3D08
004D7945 E8 1CEAFFFF call 004D6366
004D794A E8 27ECFFFF call 004D6576
004D794F ^ EB 8D jmp short 004D78DE
004D7951 833D 28AC5500 01 cmp dword ptr [55AC28], 1
004D7958 75 1E jnz short 004D7978
004D795A E8 8BEBFFFF call 004D64EA
004D795F 68 F6575500 push 005557F6
004D7964 B9 083D4B00 mov ecx, 004B3D08
004D7969 E8 F8E9FFFF call 004D6366
004D796E E8 03ECFFFF call 004D6576
004D7973 ^ E9 66FFFFFF jmp 004D78DE
004D7978 833D 2CAC5500 01 cmp dword ptr [55AC2C], 1
004D797F 75 1E jnz short 004D799F
004D7981 E8 64EBFFFF call 004D64EA
004D7986 68 D8575500 push 005557D8 ; "横推八马倒"
004D798B B9 083D4B00 mov ecx, 004B3D08
004D7990 E8 D1E9FFFF call 004D6366
004D7995 E8 DCEBFFFF call 004D6576
004D799A ^ E9 3FFFFFFF jmp 004D78DE
004D799F 833D 38AC5500 01 cmp dword ptr [55AC38], 1
004D79A6 75 19 jnz short 004D79C1
004D79A8 E8 3DEBFFFF call 004D64EA
004D79AD 68 C6575500 push 005557C6 ; "鬼门刀"
004D79B2 B9 083D4B00 mov ecx, 004B3D08
004D79B7 E8 AAE9FFFF call 004D6366
004D79BC E8 B5EBFFFF call 004D6576
004D79C1 803D 50AC5500 00 cmp byte ptr [55AC50], 0
004D79C8 0F85 F42A0000 jnz 004DA4C2
004D79CE 803D 51AC5500 00 cmp byte ptr [55AC51], 0
004D79D5 0F85 4B2D0000 jnz 004DA726
004D79DB 803D 52AC5500 00 cmp byte ptr [55AC52], 0
004D79E2 0F85 AE2C0000 jnz 004DA696
004D79E8 ^ E9 F1FEFFFF jmp 004D78DE
004D79F0 33C0 xor eax, eax ; 清空绝技发动标志
004D79F2 A3 1CAC5500 mov dword ptr [55AC1C], eax
004D79F7 A3 20AC5500 mov dword ptr [55AC20], eax
004D79FC A3 24AC5500 mov dword ptr [55AC24], eax
004D7A01 A3 28AC5500 mov dword ptr [55AC28], eax
004D7A06 A3 2CAC5500 mov dword ptr [55AC2C], eax
004D7A0B A3 30AC5500 mov dword ptr [55AC30], eax
004D7A10 A3 34AC5500 mov dword ptr [55AC34], eax
004D7A15 A3 38AC5500 mov dword ptr [55AC38], eax
004D7A1A A2 51AC5500 mov byte ptr [55AC51], al
004D7A1F A2 52AC5500 mov byte ptr [55AC52], al
004D7A24 E8 58E7F2FF call 00406181 ; 判断是否连击函数
004D7A29 - E9 2BEBF2FF jmp 00406559
2010-1-21 17:05
蛇夫座
[攻击后附加属性处理函数]
00405889 $ 55 push ebp ; 攻击后附加属性处理函数
0040588A . 8BEC mov ebp, esp
0040588C 83EC 14 sub esp, 14
0040588F . 894D F4 mov dword ptr [ebp-C], ecx ; 攻击信息指针
00405892 . 8B45 F4 mov eax, dword ptr [ebp-C]
00405895 . 33C9 xor ecx, ecx
00405897 . 8A88 24040000 mov cl, byte ptr [eax+424] ; 穿透类型号??
0040589D . F7D9 neg ecx ; 求补
0040589F . 1BC9 sbb ecx, ecx
004058A1 . 41 inc ecx
004058A2 . 894D FC mov dword ptr [ebp-4], ecx
004058A5 . C645 F8 00 mov byte ptr [ebp-8], 0
004058A9 . EB 09 jmp short 004058B4
004058AB > 8A55 F8 mov dl, byte ptr [ebp-8] ; 攻击后附加属性处理函数内部循环计数器
004058AE . 80C2 01 add dl, 1 ; 计数器加1
004058B1 . 8855 F8 mov byte ptr [ebp-8], dl
004058B4 > 8B45 F8 mov eax, dword ptr [ebp-8]
004058B7 . 25 FF000000 and eax, 0FF
004058BC . 8B4D F4 mov ecx, dword ptr [ebp-C]
004058BF . 33D2 xor edx, edx
004058C1 . 8A5401 10 mov dl, byte ptr [ecx+eax+10] ; 被攻击武将战场编号
004058C5 . 81FA FF000000 cmp edx, 0FF ; 当循环到第二次时会导致越界
004058CB .- E9 101A0D00 jmp 004D72E0
004058D0 90 nop
004058D1 . 8B45 F8 mov eax, dword ptr [ebp-8]
004058D4 . 25 FF000000 and eax, 0FF
004058D9 . 8B4D F4 mov ecx, dword ptr [ebp-C] ; 攻击信息指针
004058DC . 8B55 F4 mov edx, dword ptr [ebp-C]
004058DF . 8A4402 10 mov al, byte ptr [edx+eax+10] ; 被攻击武将战场编号
004058E3 . 8841 01 mov byte ptr [ecx+1], al ; 转存被攻击武将战场编号
004058E6 . 8B4D F8 mov ecx, dword ptr [ebp-8]
004058E9 . 81E1 FF000000 and ecx, 0FF
004058EF . 8B55 F4 mov edx, dword ptr [ebp-C]
004058F2 . 83BC8A 84000000 00 cmp dword ptr [edx+ecx*4+84], 0
004058FA . 75 19 jnz short 00405915
004058FC . 8B45 F8 mov eax, dword ptr [ebp-8]
004058FF . 25 FF000000 and eax, 0FF
00405904 . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405907 . 83BC81 54020000 00 cmp dword ptr [ecx+eax*4+254], 0
0040590F . 0F84 55010000 je 00405A6A
00405915 >- E9 32190D00 jmp 004D724C
0040591A . 8B4A 08 mov ecx, dword ptr [edx+8]
0040591D .- E9 9F090D00 jmp 004D62C1
00405922 . 85C0 test eax, eax
00405924 . 74 18 je short 0040593E
00405926 . 6A 08 push 8
00405928 . 8B45 F4 mov eax, dword ptr [ebp-C]
0040592B . 33C9 xor ecx, ecx
0040592D . 8A48 01 mov cl, byte ptr [eax+1]
00405930 . 6BC9 24 imul ecx, ecx, 24
00405933 . 81C1 502C4B00 add ecx, 004B2C50
00405939 . E8 820D0000 call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
0040593E > 8B55 F4 mov edx, dword ptr [ebp-C] ; 攻击信息指针
00405941 . 8B4A 08 mov ecx, dword ptr [edx+8] ; 攻击方武将SAV映射
00405944 . E8 C70C0000 call 00406610 ; 获取ECX武将兵种
00405949 . 25 FF000000 and eax, 0FF
0040594E 83F8 32 cmp eax, 32 ; 检查攻击方兵种是否为玄术骑
00405951 . 75 26 jnz short 00405979
00405953 . 6A 3C push 3C
00405955 . E8 D8A10700 call 0047FB32 ; 检测概率为08栈的事件是否发生
0040595A . 83C4 04 add esp, 4
0040595D . 85C0 test eax, eax
0040595F . 74 18 je short 00405979
00405961 . 6A 08 push 8 ; 混乱异常号
00405963 . 8B45 F4 mov eax, dword ptr [ebp-C] ; 攻击信息指针
00405966 . 33C9 xor ecx, ecx
00405968 . 8A48 01 mov cl, byte ptr [eax+1] ; 取被攻击武将战场编号
0040596B . 6BC9 24 imul ecx, ecx, 24
0040596E . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405974 . E8 470D0000 call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
00405979 > 6A 24 push 24 ; 中毒攻击特效号
0040597B . 8B55 F4 mov edx, dword ptr [ebp-C]
0040597E . 8B4A 08 mov ecx, dword ptr [edx+8]
00405981 . E8 83200000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
00405986 . 85C0 test eax, eax
00405988 . 74 18 je short 004059A2
0040598A . 6A 10 push 10
0040598C . 8B45 F4 mov eax, dword ptr [ebp-C]
0040598F . 33C9 xor ecx, ecx
00405991 . 8A48 01 mov cl, byte ptr [eax+1]
00405994 . 6BC9 24 imul ecx, ecx, 24
00405997 . 81C1 502C4B00 add ecx, 004B2C50
0040599D . E8 1E0D0000 call 004066C0
004059A2 > 8B55 F4 mov edx, dword ptr [ebp-C] ; 攻击信息指针
004059A5 . 8B4A 08 mov ecx, dword ptr [edx+8] ; 攻击方武将SAV映射
004059A8 . E8 630C0000 call 00406610 ; 获取ECX武将兵种
004059AD . 25 FF000000 and eax, 0FF
004059B2 . 83F8 2D cmp eax, 2D ; 检查攻击方兵种是否为力士
004059B5 . 75 26 jnz short 004059DD
004059B7 . 6A 3C push 3C ; 3CH=60
004059B9 . E8 74A10700 call 0047FB32 ; 检测概率为08栈的事件是否发生
004059BE . 83C4 04 add esp, 4
004059C1 . 85C0 test eax, eax
004059C3 . 74 18 je short 004059DD
004059C5 . 6A 02 push 2 ; 麻痹异常号
004059C7 . 8B45 F4 mov eax, dword ptr [ebp-C]
004059CA . 33C9 xor ecx, ecx
004059CC . 8A48 01 mov cl, byte ptr [eax+1]
004059CF . 6BC9 24 imul ecx, ecx, 24
004059D2 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
004059D8 . E8 E30C0000 call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
004059DD > 6A 25 push 25 ; 麻痹攻击特效号
004059DF . 8B55 F4 mov edx, dword ptr [ebp-C]
004059E2 . 8B4A 08 mov ecx, dword ptr [edx+8]
004059E5 . E8 1F200000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
004059EA . 85C0 test eax, eax
004059EC . 74 18 je short 00405A06
004059EE . 6A 02 push 2
004059F0 . 8B45 F4 mov eax, dword ptr [ebp-C]
004059F3 . 33C9 xor ecx, ecx
004059F5 . 8A48 01 mov cl, byte ptr [eax+1]
004059F8 . 6BC9 24 imul ecx, ecx, 24
004059FB . 81C1 502C4B00 add ecx, 004B2C50
00405A01 . E8 BA0C0000 call 004066C0
00405A06 > 8B55 F4 mov edx, dword ptr [ebp-C]
00405A09 . 8B4A 08 mov ecx, dword ptr [edx+8] ; 攻击方武将SAV映射
00405A0C . E8 FF0B0000 call 00406610 ; 获取ECX武将兵种
00405A11 . 25 FF000000 and eax, 0FF
00405A16 . 83F8 26 cmp eax, 26 ; 检查攻击方兵种是否为金锤骑
00405A19 . 75 26 jnz short 00405A41
00405A1B . 6A 28 push 28 ; 28H=40
00405A1D . E8 10A10700 call 0047FB32 ; 检测概率为08栈的事件是否发生
00405A22 . 83C4 04 add esp, 4
00405A25 . 85C0 test eax, eax
00405A27 . 74 18 je short 00405A41
00405A29 . 6A 08 push 8 ; 混乱异常号
00405A2B . 8B45 F4 mov eax, dword ptr [ebp-C]
00405A2E . 33C9 xor ecx, ecx
00405A30 . 8A48 01 mov cl, byte ptr [eax+1]
00405A33 . 6BC9 24 imul ecx, ecx, 24
00405A36 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405A3C . E8 7F0C0000 call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
00405A41 > E9 F7360000 jmp 0040913D
00405A46 > 8B4A 08 mov ecx, dword ptr [edx+8] ; 攻击方武将SAV映射指针
00405A49 . E8 BB1F0000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
00405A4E . 85C0 test eax, eax
00405A50 . 74 18 je short 00405A6A
00405A52 . 6A 04 push 4 ; 禁咒异常号
00405A54 . 8B45 F4 mov eax, dword ptr [ebp-C]
00405A57 . 33C9 xor ecx, ecx
00405A59 . 8A48 01 mov cl, byte ptr [eax+1]
00405A5C . 6BC9 24 imul ecx, ecx, 24
00405A5F . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405A65 . E8 560C0000 call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
00405A6A - E9 A94A0D00 jmp 004DA518 ; $$精神攻击在此插入代码
00405A6F 90 nop
00405A70 90 nop
00405A71 . 25 FF000000 and eax, 0FF
00405A76 . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405A79 . 8B9481 30040000 mov edx, dword ptr [ecx+eax*4+430]
00405A80 . 52 push edx
00405A81 . 6A 00 push 0
00405A83 . 6A 00 push 0
00405A85 . 8B45 F8 mov eax, dword ptr [ebp-8]
00405A88 . 25 FF000000 and eax, 0FF
00405A8D . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405A90 . 8B9481 54020000 mov edx, dword ptr [ecx+eax*4+254]
00405A97 . 52 push edx
00405A98 . 8B45 F8 mov eax, dword ptr [ebp-8]
00405A9B . 25 FF000000 and eax, 0FF
00405AA0 . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405AA3 . 8B9481 84000000 mov edx, dword ptr [ecx+eax*4+84]
00405AAA . 52 push edx
00405AAB . 8B45 F4 mov eax, dword ptr [ebp-C]
00405AAE . 8A08 mov cl, byte ptr [eax] ; 攻击方武将战场编号
00405AB0 . 51 push ecx
00405AB1 . 8B55 F4 mov edx, dword ptr [ebp-C]
00405AB4 . 8A42 01 mov al, byte ptr [edx+1] ; 被攻击武将战场编号
00405AB7 . 50 push eax
00405AB8 E8 C7AE0400 call 00450984 ; 被攻方扣血并附加异常动画
00405ABD . 83C4 20 add esp, 20
00405AC0 . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405AC3 . 33D2 xor edx, edx
00405AC5 . 8A51 01 mov dl, byte ptr [ecx+1]
00405AC8 . 8BCA mov ecx, edx
00405ACA . 6BC9 24 imul ecx, ecx, 24
00405ACD . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405AD3 . E8 B8D10600 call 00472C90 ; 返回ECX武将当前体力
00405AD8 . 8B4D F8 mov ecx, dword ptr [ebp-8]
00405ADB . 81E1 FF000000 and ecx, 0FF
00405AE1 . 8B55 F4 mov edx, dword ptr [ebp-C]
00405AE4 . 2B848A 84000000 sub eax, dword ptr [edx+ecx*4+84]
00405AEB . 50 push eax
00405AEC . 8B45 F4 mov eax, dword ptr [ebp-C]
00405AEF . 33C9 xor ecx, ecx
00405AF1 . 8A48 01 mov cl, byte ptr [eax+1]
00405AF4 . 6BC9 24 imul ecx, ecx, 24
00405AF7 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405AFD . E8 CB9B0300 call 0043F6CD ; 将08栈的值加至ECX武将的HPCur,参考全身装备的加成
00405B02 . 8B55 F4 mov edx, dword ptr [ebp-C]
00405B05 . 33C0 xor eax, eax
00405B07 . 8A42 01 mov al, byte ptr [edx+1]
00405B0A . 8BC8 mov ecx, eax
00405B0C . 6BC9 24 imul ecx, ecx, 24
00405B0F . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405B15 . E8 26CD0600 call 00472840 ; 返回ECX武将的MPCur
00405B1A . 8B4D F8 mov ecx, dword ptr [ebp-8]
00405B1D . 81E1 FF000000 and ecx, 0FF
00405B23 . 8B55 F4 mov edx, dword ptr [ebp-C]
00405B26 . 2B848A 54020000 sub eax, dword ptr [edx+ecx*4+254]
00405B2D . 50 push eax
00405B2E . 8B45 F4 mov eax, dword ptr [ebp-C]
00405B31 . 33C9 xor ecx, ecx
00405B33 . 8A48 01 mov cl, byte ptr [eax+1]
00405B36 . 6BC9 24 imul ecx, ecx, 24
00405B39 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405B3F . E8 CA9B0300 call 0043F70E ; 将08栈的值加至ECX武将MPCur,参考全身装备加成
00405B44 - E9 474A0D00 jmp 004DA590 ; $$在此插入吸收攻击代码
00405B49 90 nop
00405B4A 90 nop
00405B4B 90 nop
00405B4C 90 nop
00405B4D . 8B45 F4 mov eax, dword ptr [ebp-C]
00405B50 . 8B8C90 30040000 mov ecx, dword ptr [eax+edx*4+430]
00405B57 . 51 push ecx
00405B58 . 6A 01 push 1
00405B5A . 8B55 F4 mov edx, dword ptr [ebp-C]
00405B5D . 33C0 xor eax, eax
00405B5F . 8A42 01 mov al, byte ptr [edx+1]
00405B62 . 8BC8 mov ecx, eax
00405B64 . 6BC9 24 imul ecx, ecx, 24
00405B67 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405B6D . E8 FE9A0500 call 0045F670 ; 获取ECX武将的DATA编号
00405B72 . 8BC8 mov ecx, eax
00405B74 . 6BC9 48 imul ecx, ecx, 48
00405B77 . 81C1 0000D600 add ecx, 0D60000 ; 被攻击武将SAV映射指针
00405B7D . E8 54270000 call 004082D6
00405B82 . 8B4D F8 mov ecx, dword ptr [ebp-8]
00405B85 . 81E1 FF000000 and ecx, 0FF
00405B8B . 8B55 F4 mov edx, dword ptr [ebp-C]
00405B8E . 83BC8A 84000000 00 cmp dword ptr [edx+ecx*4+84], 0
00405B96 . 0F8E AD000000 jle 00405C49
00405B9C 8B45 F4 mov eax, dword ptr [ebp-C]
00405B9F 33C9 xor ecx, ecx
00405BA1 . 8A48 01 mov cl, byte ptr [eax+1]
00405BA4 . 6BC9 24 imul ecx, ecx, 24
00405BA7 . 81C1 502C4B00 add ecx, 004B2C50
00405BAD . E8 DED00600 call 00472C90 ; 返回ECX武将当前体力
00405BB2 . 85C0 test eax, eax
00405BB4 . 0F86 8F000000 jbe 00405C49
00405BBA . 6A 3E push 3E ; 自动使用特效号
00405BBC . 8B55 F4 mov edx, dword ptr [ebp-C] ; 攻击信息指针
00405BBF . 33C0 xor eax, eax
00405BC1 . 8A42 01 mov al, byte ptr [edx+1]
00405BC4 . 8BC8 mov ecx, eax
00405BC6 . 6BC9 24 imul ecx, ecx, 24
00405BC9 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405BCF . E8 9C9A0500 call 0045F670 ; 获取ECX武将的DATA编号
00405BD4 . 8BC8 mov ecx, eax
00405BD6 . 6BC9 48 imul ecx, ecx, 48
00405BD9 . 81C1 0000D600 add ecx, 0D60000 ; 被攻击武将SAV映射指针
00405BDF . E8 251E0000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
00405BE4 . 85C0 test eax, eax
00405BE6 . 74 61 je short 00405C49
00405BE8 . 8B4D F4 mov ecx, dword ptr [ebp-C] ; 攻击信息指针
00405BEB . 33D2 xor edx, edx
00405BED . 8A51 01 mov dl, byte ptr [ecx+1]
00405BF0 . 8BCA mov ecx, edx
00405BF2 . 6BC9 24 imul ecx, ecx, 24
00405BF5 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405BFB . E8 54A30300 call 0043FF54 ; 获取ECX武将属于我方??
00405C00 . 85C0 test eax, eax
00405C02 . 74 2E je short 00405C32
00405C04 . 6A 57 push 57
00405C06 . B9 70074B00 mov ecx, 004B0770
00405C0B . E8 2E7F0000 call 0040DB3E
00405C10 . 25 FF000000 and eax, 0FF
00405C15 . 85C0 test eax, eax
00405C17 . 7E 17 jle short 00405C30
00405C19 . 6A 00 push 0
00405C1B . 6A 00 push 0
00405C1D . 8B45 F4 mov eax, dword ptr [ebp-C]
00405C20 . 8A48 01 mov cl, byte ptr [eax+1] ; 被攻击武将战场编号
00405C23 . 51 push ecx
00405C24 . 6A 57 push 57 ; 馒头道具编号
00405C26 . B9 50774900 mov ecx, 00497750
00405C2B . E8 13800100 call 0041DC43 ; 使用道具动画并更新HP值
00405C30 > EB 17 jmp short 00405C49
00405C32 > 6A 01 push 1
00405C34 . 6A 00 push 0
00405C36 . 8B55 F4 mov edx, dword ptr [ebp-C]
00405C39 . 8A42 01 mov al, byte ptr [edx+1] ; 被攻击武将战场编号
00405C3C . 50 push eax
00405C3D . 6A 57 push 57 ; 馒头道具编号
00405C3F . B9 50774900 mov ecx, 00497750
00405C44 . E8 FA7F0100 call 0041DC43 ; 使用道具动画并更新HP值
00405C49 > 6A 20 push 20
00405C4B . 8B4D F4 mov ecx, dword ptr [ebp-C]
00405C4E . 33D2 xor edx, edx
00405C50 . 8A51 01 mov dl, byte ptr [ecx+1]
00405C53 . 8BCA mov ecx, edx
00405C55 . 6BC9 24 imul ecx, ecx, 24
00405C58 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
00405C5E . E8 2D0A0000 call 00406690 ; 恢复ECX武将行动
00405C63 .^ E9 43FCFFFF jmp 004058AB
00405C68 . 8BE5 mov esp, ebp
00405C6A . 5D pop ebp
00405C6B . C3 retn
004D724C 8B45 F4 mov eax, dword ptr [ebp-C] ; 攻击信息指针
004D724F E8 12000000 call 004D7266
004D7254 85C0 test eax, eax
004D7256 - 0F85 0EE8F2FF jnz 00405A6A
004D725C 6A 23 push 23 ; 混乱攻击特效号
004D725E 8B55 F4 mov edx, dword ptr [ebp-C]
004D7261 - E9 B4E6F2FF jmp 0040591A
004D62C1 E8 4317F3FF call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
004D62C6 85C0 test eax, eax
004D62C8 - 0F84 70F6F2FF je 0040593E
004D62CE 6A 3C push 3C
004D62D0 E8 5D98FAFF call 0047FB32
004D62D5 83C4 04 add esp, 4
004D62D8 85C0 test eax, eax
004D62DA - 0F84 5EF6F2FF je 0040593E
004D62E0 - E9 41F6F2FF jmp 00405926
0040913D > \6A 22 push 22 ; 恶路移动特效号
0040913F . 8B55 F4 mov edx, dword ptr [ebp-C]
00409142 . 8B4A 08 mov ecx, dword ptr [edx+8] ; 攻击方武将SAV映射指针
00409145 . E8 BFE8FFFF call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
0040914A . 85C0 test eax, eax
0040914C . 74 26 je short 00409174
0040914E . 6A 3C push 3C ; 3CH=60
00409150 . E8 DD690700 call 0047FB32 ; 检测概率为08栈的事件是否发生
00409155 . 83C4 04 add esp, 4
00409158 . 85C0 test eax, eax
0040915A . 74 18 je short 00409174
0040915C . 6A 02 push 2 ; 麻痹异常号
0040915E . 8B45 F4 mov eax, dword ptr [ebp-C]
00409161 . 33C9 xor ecx, ecx
00409163 . 8A48 01 mov cl, byte ptr [eax+1]
00409166 . 6BC9 24 imul ecx, ecx, 24
00409169 . 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
0040916F . E8 4CD5FFFF call 004066C0 ; 增加ECX武将的异常状态,采用OR方法
00409174 > 6A 26 push 26 ; 封杀策略特效号
00409176 . 8B55 F4 mov edx, dword ptr [ebp-C]
00409179 .^ E9 C8C8FFFF jmp 00405A46
2010-1-21 17:05
蛇夫座
[反击处理函数]
0040639A /$ 55 push ebp ; 反击处理函数
0040639B |. 8BEC mov ebp, esp
0040639D |. 83EC 10 sub esp, 10
004063A0 |. 56 push esi ; 保护寄存器ESI
004063A1 |. 894D F0 mov dword ptr [ebp-10], ecx ; 攻击信息指针
004063A4 |. 8B45 F0 mov eax, dword ptr [ebp-10]
004063A7 |. 8B4D F0 mov ecx, dword ptr [ebp-10]
004063AA |. 8A51 10 mov dl, byte ptr [ecx+10]
004063AD |. 8850 01 mov byte ptr [eax+1], dl ; 转存被攻击武将战场编号
004063B0 |. 8B45 F0 mov eax, dword ptr [ebp-10]
004063B3 |. 33C9 xor ecx, ecx
004063B5 |. 8A48 01 mov cl, byte ptr [eax+1]
004063B8 |. 6BC9 24 imul ecx, ecx, 24
004063BB |. 81C1 502C4B00 add ecx, 004B2C50
004063C1 |. 894D FC mov dword ptr [ebp-4], ecx ; 被攻击武将战场信息地址
004063C4 |. 833D 042E4900 01 cmp dword ptr [492E04], 1
004063CB |. 77 27 ja short 004063F4
004063CD |. 833D 042E4900 00 cmp dword ptr [492E04], 0
004063D4 |. 76 2D jbe short 00406403
004063D6 |. 6A 28 push 28 ; 遇反击后反击特效号
004063D8 |. 8B4D FC mov ecx, dword ptr [ebp-4]
004063DB |. E8 90920500 call 0045F670 ; 获取ECX武将的DATA编号
004063E0 |. 8BC8 mov ecx, eax
004063E2 |. 6BC9 48 imul ecx, ecx, 48
004063E5 |. 81C1 0000D600 add ecx, 0D60000 ; 被攻击武将SAV映射
004063EB |. E8 19160000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
004063F0 |. 85C0 test eax, eax
004063F2 |. 75 0F jnz short 00406403
004063F4 |> C705 042E4900 00000000 mov dword ptr [492E04], 0
004063FE |. E9 E9000000 jmp 004064EC
00406403 |> C745 F8 01000000 mov dword ptr [ebp-8], 1
0040640A |. 8B4D FC mov ecx, dword ptr [ebp-4] ; 被攻击武将战场信息地址
0040640D |. E8 4ECFFFFF call 00403360 ; 多余的函数,将参数ECX加6后再返回
00406412 |. 50 push eax
00406413 |. 8B4D F0 mov ecx, dword ptr [ebp-10] ; 攻击信息指针
00406416 |. 81C1 25040000 add ecx, 425
0040641C |. E8 7F010000 call 004065A0 ; 转存攻击方武将横纵坐标至492C15H处
00406421 |. 8B4D FC mov ecx, dword ptr [ebp-4]
00406424 |. E8 95940300 call 0043F8BE ; 获取ECX武将攻击范围
00406429 |. 8845 F4 mov byte ptr [ebp-C], al
0040642C |. 8B55 F0 mov edx, dword ptr [ebp-10]
0040642F |. 8A02 mov al, byte ptr [edx] ; 攻击方武将战场编号
00406431 |. A2 282C4B00 mov byte ptr [4B2C28], al
00406436 |. 8B4D FC mov ecx, dword ptr [ebp-4] ; 被攻击方武将战场信息指针
00406439 |. E8 52C80600 call 00472C90 ; 返回ECX武将当前体力
0040643E |. 85C0 test eax, eax
00406440 |. 75 09 jnz short 0040644B
00406442 |. C745 F8 00000000 mov dword ptr [ebp-8], 0
00406449 |. EB 64 jmp short 004064AF
0040644B |> 6A 08 push 8 ; 混乱异常号
0040644D |. 8B4D FC mov ecx, dword ptr [ebp-4]
00406450 |. E8 8B020000 call 004066E0 ; 检测被攻击武将是否处于混乱状态
00406455 |. 85C0 test eax, eax
00406457 |. 74 09 je short 00406462
00406459 |. C745 F8 00000000 mov dword ptr [ebp-8], 0
00406460 |. EB 4D jmp short 004064AF
00406462 - E9 94400D00 jmp 004DA4FB ; 无反击攻击特效号
00406467 |. 8B49 08 mov ecx, dword ptr [ecx+8] ; 攻击方武将SAV映射
0040646A |. E8 9A150000 call 00407A09 ; 检测ECX武将是否装备特效为08栈的特殊道具
0040646F |. 85C0 test eax, eax
00406471 |. 74 09 je short 0040647C
00406473 |. C745 F8 00000000 mov dword ptr [ebp-8], 0 ; 被攻击武将反击次数清0
0040647A |. EB 33 jmp short 004064AF
0040647C |> 8B55 F0 mov edx, dword ptr [ebp-10]
0040647F |. 33C0 xor eax, eax
00406481 |. 8A02 mov al, byte ptr [edx] ; 攻击方武将战场编号
00406483 |. 8BF0 mov esi, eax
00406485 |. 6A 00 push 0
00406487 |. 6A 00 push 0
00406489 |. 8A4D F4 mov cl, byte ptr [ebp-C] ; 攻击方武将的攻击范围
0040648C |. 51 push ecx
0040648D |. 8B55 F0 mov edx, dword ptr [ebp-10]
00406490 |. 81C2 25040000 add edx, 425 ; 攻击方武将坐标指针
00406496 |. 52 push edx
00406497 |. 8B4D FC mov ecx, dword ptr [ebp-4] ; 被攻击武将战场信息指针
0040649A |. E8 E7000300 call 00436586
0040649F |. 25 FF000000 and eax, 0FF
004064A4 |. 3BF0 cmp esi, eax
004064A6 |. 74 07 je short 004064AF
004064A8 |. C745 F8 00000000 mov dword ptr [ebp-8], 0
004064AF |> 837D F8 00 cmp dword ptr [ebp-8], 0
004064B3 |. 74 37 je short 004064EC
004064B5 |. A1 042E4900 mov eax, dword ptr [492E04]
004064BA |. 83C0 01 add eax, 1
004064BD |. A3 042E4900 mov dword ptr [492E04], eax
004064C2 |. 8B4D F0 mov ecx, dword ptr [ebp-10]
004064C5 |. 8A11 mov dl, byte ptr [ecx] ; 攻击方武将战场编号
004064C7 |. 52 push edx
004064C8 |. 8B45 F0 mov eax, dword ptr [ebp-10]
004064CB |. 8A48 01 mov cl, byte ptr [eax+1] ; 被攻击武将战场编号
004064CE |. 51 push ecx
004064CF |. E8 55F30200 call 00435829
004064D4 |. 83C4 08 add esp, 8
004064D7 |. 8B55 F0 mov edx, dword ptr [ebp-10]
004064DA |. 8A02 mov al, byte ptr [edx] ; 攻击方武将战场编号
004064DC |. 50 push eax
004064DD |. 8B4D F0 mov ecx, dword ptr [ebp-10]
004064E0 |. 8A51 01 mov dl, byte ptr [ecx+1] ; 被攻击武将战场编号
004064E3 |. 52 push edx
004064E4 |. 8B4D F0 mov ecx, dword ptr [ebp-10]
004064E7 |. E8 05000000 call 004064F1 ; 攻击处理函数
004064EC - E9 C43F0D00 jmp 004DA4B5
004DA4B5 C605 50AC5500 00 mov byte ptr [55AC50], 0
004DA4BC 5E pop esi
004DA4BD 8BE5 mov esp, ebp
004DA4BF 5D pop ebp
004DA4C0 C3 retn
2010-1-21 17:06
蛇夫座
[特技的不同处理] (同样没有对全部人员进行分析)
[杨林]
004D72E0 - 0F84 82E9F2FF je 00405C68 ; 越界时跳转到函数结束
004D72E6 8B45 F4 mov eax, dword ptr [ebp-C] ; 攻击信息指针
004D72E9 E8 78FFFFFF call 004D7266
004D72EE 85C0 test eax, eax
004D72F0 - 0F85 DBE5F2FF jnz 004058D1
004D72F6 833D 1CAC5500 01 cmp dword ptr [55AC1C], 1 ; 杨林 DATA_32绝技发动标记
004D72FD 75 5B jnz short 004D735A
004D72FF 8B45 F4 mov eax, dword ptr [ebp-C] ; 攻击信息指针
004D7302 33C9 xor ecx, ecx
004D7304 8A48 01 mov cl, byte ptr [eax+1] ; 被攻击武将战场编号
004D7307 6BC9 24 imul ecx, ecx, 24
004D730A 81C1 502C4B00 add ecx, 004B2C50 ; 被攻击武将战场信息指针
004D7310 E8 5B83F8FF call 0045F670 ; 获取ECX武将的DATA编号
004D7315 6BC0 48 imul eax, eax, 48
004D7318 05 0000D600 add eax, 0D60000 ; 被攻击武将SAV映射
004D731D 8BD8 mov ebx, eax
004D731F 6A 32 push 32 ; 32H=50
004D7321 E8 0C88FAFF call 0047FB32 ; 概率为08栈的事件是否发生
004D7326 83C4 04 add esp, 4
004D7329 85C0 test eax, eax
004D732B 74 15 je short 004D7342
004D732D 807B 2F 00 cmp byte ptr [ebx+2F], 0 ; 检查被攻击武将身上装备的武器等级是否为0
004D7331 74 22 je short 004D7355
004D7333 FE4B 2F dec byte ptr [ebx+2F] ; 武器等级减1
004D7336 807B 30 FF cmp byte ptr [ebx+30], 0FF ; 检测武器经验是否为MAX
004D733A 75 19 jnz short 004D7355
004D733C C643 30 00 mov byte ptr [ebx+30], 0 ; 武器经验清0
004D7340 EB 13 jmp short 004D7355
004D7342 807B 32 00 cmp byte ptr [ebx+32], 0 ; 检查被攻击武将身上装备的防具等级是否为0
004D7346 74 0D je short 004D7355
004D7348 FE4B 32 dec byte ptr [ebx+32] ; 防具等级减1
004D734B 807B 33 FF cmp byte ptr [ebx+33], 0FF ; 检测防具经验是否为MAX
004D734F 75 04 jnz short 004D7355
004D7351 C643 33 00 mov byte ptr [ebx+33], 0 ; 防具经验清0
004D7355 - E9 77E5F2FF jmp 004058D1 ; 返回到_004058D1
004D735A 833D 38AC5500 01 cmp dword ptr [55AC38], 1
004D7361 75 27 jnz short 004D738A
004D7363 8B45 F4 mov eax, dword ptr [ebp-C]
004D7366 33C9 xor ecx, ecx
004D7368 8A48 01 mov cl, byte ptr [eax+1]
004D736B 6BC9 24 imul ecx, ecx, 24
004D736E 81C1 502C4B00 add ecx, 004B2C50
004D7374 E8 F782F8FF call 0045F670 ; 获取ECX武将的DATA编号
004D7379 6A 01 push 1
004D737B 6A 00 push 0
004D737D 6A 05 push 5
004D737F 50 push eax
004D7380 B9 F05D4B00 mov ecx, 004B5DF0
004D7385 E8 D236F8FF call 0045AA5C
004D738A - E9 42E5F2FF jmp 004058D1
2010-1-21 17:06
蛇夫座
[定彦平]
004D7863 FF75 F8 push dword ptr [ebp-8] ; 攻击方武将DATA编号
004D7866 FF75 0C push dword ptr [ebp+C] ; 被攻方武将战场编号
004D7869 E8 76FCFFFF call 004D74E4
004D786E 85C0 test eax, eax ; 检查定彦平绝技发动是否成功
004D7870 74 1A je short 004D788C
004D7872 C705 24AC5500 01000000 mov dword ptr [55AC24], 1
004D787C FF75 08 push dword ptr [ebp+8] ; 更改攻击方与被攻击方武将的战场编号压栈顺序
004D787F FF75 0C push dword ptr [ebp+C]
004D7882 8B4D FC mov ecx, dword ptr [ebp-4] ; 攻击信息指针
004D7885 E8 67ECF2FF call 004064F1 ; 攻击处理函数
004D788A EB 0E jmp short 004D789A
004D74E4 55 push ebp
004D74E5 8BEC mov ebp, esp
004D74E7 83EC 14 sub esp, 14
004D74EA 8B45 0C mov eax, dword ptr [ebp+C] ; 攻击方武将DATA编号
004D74ED 8945 F8 mov dword ptr [ebp-8], eax
004D74F0 8B45 08 mov eax, dword ptr [ebp+8] ; 被攻方武将战场编号
004D74F3 8945 FC mov dword ptr [ebp-4], eax
004D74F6 25 FF000000 and eax, 0FF
004D74FB 6BC0 24 imul eax, eax, 24
004D74FE 05 502C4B00 add eax, 004B2C50 ; 被攻方武将战场信息指针
004D7503 8945 F4 mov dword ptr [ebp-C], eax
004D7506 8B4D F4 mov ecx, dword ptr [ebp-C]
004D7509 E8 6281F8FF call 0045F670 ; 获取ECX武将的DATA编号
004D750E 8945 EC mov dword ptr [ebp-14], eax
004D7511 83F8 65 cmp eax, 65 ; 检查是否为定彦平 DATA_101
004D7514 75 7D jnz short 004D7593
004D7516 6A 08 push 8 ; 混乱异常号
004D7518 8B4D F4 mov ecx, dword ptr [ebp-C] ; 被攻方武将战场信息指针
004D751B E8 C0F1F2FF call 004066E0 ; 驱除ECX武将08栈异常状态,采用AND的方法
004D7520 85C0 test eax, eax ; 检测武将是否处于混乱状态
004D7522 74 02 je short 004D7526
004D7524 EB 6D jmp short 004D7593
004D7526 8B45 F8 mov eax, dword ptr [ebp-8] ; 攻击方武将DATA编号
004D7529 90 nop
004D752A 90 nop
004D752B 90 nop
004D752C 90 nop
004D752D 90 nop
004D752E 8945 F0 mov dword ptr [ebp-10], eax
004D7531 6A 01 push 1
004D7533 FF75 F0 push dword ptr [ebp-10]
004D7536 FF75 EC push dword ptr [ebp-14] ; 被攻方武将战场编号
004D7539 B9 F05D4B00 mov ecx, 004B5DF0
004D753E E8 873AF8FF call 0045AFCA
004D7543 85C0 test eax, eax
004D7545 74 4C je short 004D7593
004D7547 FF75 F0 push dword ptr [ebp-10] ; 攻击方武将DATA编号
004D754A FF75 EC push dword ptr [ebp-14] ; 被攻方武将DATA编号
004D754D E8 80000000 call 004D75D2 ; 参考双方士气计算发动机率,并测试事件是否发生
004D7552 85C0 test eax, eax
004D7554 74 3D je short 004D7593
004D7556 6A 00 push 0
004D7558 6A 01 push 1
004D755A 6A 00 push 0
004D755C 68 FF000000 push 0FF
004D7561 FF75 F0 push dword ptr [ebp-10] ; 攻击方武将DATA编号
004D7564 FF75 EC push dword ptr [ebp-14] ; 被攻方武将DATA编号
004D7567 B9 F05D4B00 mov ecx, 004B5DF0
004D756C E8 B7FEF7FF call 00457428 ; 武将转向
004D7571 6A 00 push 0
004D7573 6A 01 push 1
004D7575 6A 00 push 0
004D7577 68 FF000000 push 0FF
004D757C FF75 EC push dword ptr [ebp-14]
004D757F FF75 F0 push dword ptr [ebp-10]
004D7582 B9 F05D4B00 mov ecx, 004B5DF0
004D7587 E8 9CFEF7FF call 00457428 ; 武将转向
004D758C B8 01000000 mov eax, 1
004D7591 EB 02 jmp short 004D7595
004D7593 33C0 xor eax, eax
004D7595 8BE5 mov esp, ebp
004D7597 5D pop ebp
004D7598 C2 0800 retn 8
2010-1-21 17:06
蛇夫座
[宇文成都]
0040782B 833D 20AC5500 01 cmp dword ptr [55AC20], 1 ; 宇文成都绝技发动标志,则九宫穿透
00407832 74 41 je short 00407875
00407875 > \C645 FC 02 mov byte ptr [ebp-4], 2 ; 九宫穿透; Case 11 of switch 00407861
00407879 . EB 0D jmp short 00407888
2010-1-21 17:07
蛇夫座
打算制作以下绝技:
[隐身术] 限定回数,使用者在友军行动结束后消失该坐标识为不可移动(0FFH),敌军行动结束时出现
2010-1-21 17:07
蛇夫座
【技】[霸严冥动斩] 鱼俱罗绝技,普通爆击一次之后次再绝对双击
2010-1-21 17:08
蛇夫座
由于暂停上网, 提问可能无法在短期内回复, 有错处请版主代为修正, 谢谢!!
2010-1-21 20:04
苍龙诀
兄弟,你越来越厉害了!:D
你现在很少上网了么,啥时候上网了给我发个消息啊,有事想请你帮忙.
2010-1-23 14:12
冰麒麟
引擎绝技真强大
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.