2012-11-2 23:52
YSH0212
请教一个代码问题
模仿别人写了一段安排人物特效的代码,本来以为可以了,但刚发现所有人都有了这种效果……
下面一段时判断武将的写法,不知道哪里出问题了,各位看看,指点一下。5.0引擎。
MOV EAX,DWORD PTR SS:[EBP-8]
MOV CL,BYTE PTR DS:[EAX+1]
AND ECX,0FF
IMUL ECX,ECX,24
ADD ECX,Ekd5.004B2C50
CALL Ekd5.0045F670
CMP EAX,4 -------武将data号
JE Ekd5.004231BD -----执行代码
2012-11-3 00:04
WHITESHIP
按F2设断点在cmp eax,4处,然后F9运行游戏。随便让一个人触发特效。
系统会自动跳转到断点处,此时看下[strike]右下角[/strike]eax是多少,如果和那个人的武将编号不同,那就说明代码有问题。
说错了,eax在反汇编窗口的左下角。
[color=Silver][[i] 本帖最后由 WHITESHIP 于 2012-11-3 00:17 编辑 [/i]][/color]
2012-11-3 09:58
godtype
JE Ekd5.004231BD
的下一行是什么内容?如果是需要给4号武将的效果,那上面这行就应该用jnz
2012-11-3 10:43
YSH0212
回复 #2 WHITESHIP 的帖子
果然不对,eax居然是是0000FFFF,这是什么情况……
2012-11-3 10:47
YSH0212
回复 #3 godtype 的帖子
应该是用je,后面的代码是不执行特效的代码,跳转过去的是人物特效代码。
你们平时给人物设置特效一般怎么写,我觉得是前面
MOV EAX,DWORD PTR SS:[EBP-8]
MOV CL,BYTE PTR DS:[EAX+1]
这里给eax赋值什么的出了问题。因为cmp eax,4这里的eax的值一直是0000ffff
2012-11-3 12:49
WHITESHIP
回复 #5 YSH0212 的帖子
你把
MOV EAX,DWORD PTR SS:[EBP-8]
MOV CL,BYTE PTR DS:[EAX+1]
这两条也设断点测试一下。可能调用武将代码的ECX就错了。
我从没写过特效……这个是我的弱项。这里我不太记得了,ECX本应该是什么来着……?
如果错误要修正的话,就要看右下角的堆栈代码,然后来计算要读取哪个栈。
2012-11-3 13:31
513633522
[quote]CMP EAX,4 -------武将data号
JE Ekd5.004231BD -----执行代码
后面的代码是不执行特效的代码,跳转过去的是人物特效代码。[/quote]
把那一段全部贴出来看看 这样 不执行特效的代码 后 跳过 特效代码 了没
eax的值一直是0000ffff 调用函数之前清空下看看
5.0引擎表示没看过 :hz1024:
[color=Silver][[i] 本帖最后由 513633522 于 2012-11-3 13:33 编辑 [/i]][/color]
2012-11-3 15:02
godtype
贴完整代码,从跳转的位置来看,这里没什么效果可以添加。
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.