轩辕春秋文化论坛 » 曹操传MOD制作交流 » 请教一个代码问题


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.