![Board logo](images/default/logo_bg.jpg)
标题: 请教一个代码问题 [打印本页]
作者:
YSH0212 时间: 2012-11-2 23:52 标题: 请教一个代码问题
模仿别人写了一段安排人物特效的代码,本来以为可以了,但刚发现所有人都有了这种效果……
下面一段时判断武将的写法,不知道哪里出问题了,各位看看,指点一下。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 -----执行代码
作者:
WHITESHIP 时间: 2012-11-3 00:04
按F2设断点在cmp eax,4处,然后F9运行游戏。随便让一个人触发特效。
系统会自动跳转到断点处,此时看下[strike]右下角[/strike]eax是多少,如果和那个人的武将编号不同,那就说明代码有问题。
说错了,eax在反汇编窗口的左下角。
[ 本帖最后由 WHITESHIP 于 2012-11-3 00:17 编辑 ]
作者:
godtype 时间: 2012-11-3 09:58
JE Ekd5.004231BD
的下一行是什么内容?如果是需要给4号武将的效果,那上面这行就应该用jnz
作者:
YSH0212 时间: 2012-11-3 10:43 标题: 回复 #2 WHITESHIP 的帖子
果然不对,eax居然是是0000FFFF,这是什么情况……
作者:
YSH0212 时间: 2012-11-3 10:47 标题: 回复 #3 godtype 的帖子
应该是用je,后面的代码是不执行特效的代码,跳转过去的是人物特效代码。
你们平时给人物设置特效一般怎么写,我觉得是前面
MOV EAX,DWORD PTR SS:[EBP-8]
MOV CL,BYTE PTR DS:[EAX+1]
这里给eax赋值什么的出了问题。因为cmp eax,4这里的eax的值一直是0000ffff
作者:
WHITESHIP 时间: 2012-11-3 12:49 标题: 回复 #5 YSH0212 的帖子
你把
MOV EAX,DWORD PTR SS:[EBP-8]
MOV CL,BYTE PTR DS:[EAX+1]
这两条也设断点测试一下。可能调用武将代码的ECX就错了。
我从没写过特效……这个是我的弱项。这里我不太记得了,ECX本应该是什么来着……?
如果错误要修正的话,就要看右下角的堆栈代码,然后来计算要读取哪个栈。
作者:
513633522 时间: 2012-11-3 13:31
CMP EAX,4 -------武将data号
JE Ekd5.004231BD -----执行代码
后面的代码是不执行特效的代码,跳转过去的是人物特效代码。
把那一段全部贴出来看看 这样 不执行特效的代码 后 跳过 特效代码 了没
eax的值一直是0000ffff 调用函数之前清空下看看
5.0引擎表示没看过 ![](images/smilies/1024.gif)
[ 本帖最后由 513633522 于 2012-11-3 13:33 编辑 ]
作者:
godtype 时间: 2012-11-3 15:02
贴完整代码,从跳转的位置来看,这里没什么效果可以添加。
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |