无反击兵种和武将代码,出现问题
扩展无反击兵种和武将代码,出现问题,求教各位前辈!!
这段代码是按严老师的教程、岱瀛的一些教程和毅大的一些教程修改扩展的,但不知道出来什么问题!!运行后,武将攻击会跳出的!!不知道是哪里错了,是不是判断武将的代码有错误??请哪位给我看看!!谢谢!!
如果按严老师的 各种兵种与宝物特效 原代码是可以有效的!!我改成下面的就会出现问题!!
004CE058 /74 05 JE SHORT Ekd51.004CE05F
004CE05A -|E9 8D84F3FF JMP Ekd51.004064EC 攻击者带无反装备,跳过反击有效代码
004CE05F \8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004CE062 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE065 E8 A685F3FF CALL Ekd51.00406610
004CE06A 25 FF000000 AND EAX,0FF
004CE06F 83F8 03 CMP EAX,3
004CE072 75 05 JNZ SHORT Ekd51.004CE079 不是3号兵种跳到004CE079判断是不是9号兵种
004CE074 - E9 7384F3FF JMP Ekd51.004064EC 是3号兵种,跳过反击有效代码
004CE079 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004CE07C 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE07F E8 8C85F3FF CALL Ekd51.00406610
004CE084 25 FF000000 AND EAX,0FF
004CE089 83F8 09 CMP EAX,9
004CE08C 75 05 JNZ SHORT Ekd51.004CE093 不是3号兵种跳到004CE093判断是不是0号武将
004CE08E - E9 5984F3FF JMP Ekd51.004064EC 是9号兵种,跳过反击有效代码
004CE093 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004CE096 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE099 E8 D215F9FF CALL Ekd51.0045F670 “这一段应该是判断
004CE09E 8BC8 MOV ECX,EAX 武将序号的
004CE0A0 6BC9 48 IMUL ECX,ECX,48 代码,自己看了其他
004CE0A3 81C1 681B4A00 ADD ECX,Ekd51.004A1B68 引擎和教程,才弄明白
004CE0A9 E8 52B4F3FF CALL Ekd51.00409500 一半,估计是这个问题
004CE0AE 25 FF000000 AND EAX,0FF
004CE0B3 83F8 00 CMP EAX,0 ”
004CE0B6 75 05 JNZ SHORT Ekd51.004CE0BD不是0号武将跳到004CE0BD判断是不是2号武将
004CE0B8 - E9 2F84F3FF JMP Ekd51.004064EC 是0号武将,跳过反击有效代码
004CE0BD 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004CE0C0 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE0C3 E8 A815F9FF CALL Ekd51.0045F670
004CE0C8 8BC8 MOV ECX,EAX
004CE0CA 6BC9 48 IMUL ECX,ECX,48
004CE0CD 81C1 681B4A00 ADD ECX,Ekd51.004A1B68
004CE0D3 E8 28B4F3FF CALL Ekd51.00409500
004CE0D8 25 FF000000 AND EAX,0FF
004CE0DD 83F8 02 CMP EAX,2
004CE0E0 75 05 JNZ SHORT Ekd51.004CE0E7
004CE0E2 - E9 0584F3FF JMP Ekd51.004064EC 同上判断是不是2号武将
004CE0E7 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
004CE0EA 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8]
004CE0ED E8 7E15F9FF CALL Ekd51.0045F670
004CE0F2 8BC8 MOV ECX,EAX
004CE0F4 6BC9 48 IMUL ECX,ECX,48
004CE0F7 81C1 681B4A00 ADD ECX,Ekd51.004A1B68
004CE0FD E8 FEB3F3FF CALL Ekd51.00409500
004CE102 25 FF000000 AND EAX,0FF
004CE107 83F8 03 CMP EAX,3
004CE10A - 0F85 6C83F3FF JNZ Ekd51.0040647C 同上判断是不是3号武将,以上都不是跳回继续执行反击
004CE110 - E9 D783F3FF JMP Ekd51.004064EC 是3号武将,跳过反击有效代码
004CE115 90 NOP
还有,我按star175 的教程在原曹操传增加一个X能力档时,找不到那五个调用的兵种的五项能力成长,原曹操传中也没找到很重要的自定义函数00406CC9的那段代码 ,
他们的位置和star175 说的不一样,是不是原曹操传中没有star175说自定义函数00406CC9的那段代码?也就没有调用的了??如果有谁告诉我一下位置!!
不胜感激!!
“这五个地方作用是一样的,就是通过自定义函数返回的值去找到相应的字母位置以表示兵种某项能力档,现在我们先来看一下477Cf7:
00477CF7 |. E8 CDEFF8FF CALL GEkd5.00406CC9 ; 自定义函数,返回eax
00477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477D03 |. 52 PUSH EDX ; /Text
关键的位置在
0477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
假设兵种的某项能力为1(eax)
EAX*4+406A51=406A55,这个位置就是我们刚才输入了24个字节的起始位置,而它的值就是0048C4D0,也就是字母D在exe里的ob地址了,这样此兵种
的该项能力成长就显示为D了。
以下依葫芦画瓢,修改其余的4处,就可以了。
00477CF7 |. E8 CDEFF8FF CALL GEkd5.00406CC9
00477CFC |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477D30 |. E8 94EFF8FF CALL GEkd5.00406CC9
00477D35 |. 8B0485 516A40>MOV EAX,DWORD PTR DS:[EAX*4+406A51]
00477D69 |. E8 5BEFF8FF CALL GEkd5.00406CC9
00477D6E |. 8B0C85 516A40>MOV ECX,DWORD PTR DS:[EAX*4+406A51]
00477DA0 |. E8 24EFF8FF CALL GEkd5.00406CC9
00477DA5 |. 8B1485 516A40>MOV EDX,DWORD PTR DS:[EAX*4+406A51]
00477DD9 |. E8 EBEEF8FF CALL GEkd5.00406CC9
00477DDE |. 8B0485 516A40>MOV EAX,DWORD PTR DS:[EAX*4+406A51]
”
多谢帮忙!!
没时间上网,一个月后再来看看回复!!
|