轩辕春秋文化论坛 » 曹操传MOD制作交流 » 貌似是star新引擎的一个BUG


2009-6-14 00:07 showzhuge
貌似是star新引擎的一个BUG

用77变量运算指定了指针变量p以后
用79变量测试无法测试指针变量*p指定为4917737以后的物品
也就是原版里面的敏捷果、好运果和经验果
我一个一个测试的 一直到4917736智力果都没问题
而且当指针变量*p 指定的4917737(敏捷果)数量为0时 正常情况下再减1 敏捷果会变成255 但是却变成了4917737敏捷果 4917738好运果 4917739经验果 全部变成了255
而4917738(好运果)为0时 则减1 好运果和经验果都变成255
4917739经验果为0时 减1 只有经验果为255

2009-6-14 00:10 showzhuge
哦 对了 我用的是4.2版 不过刚才用才下的5.2版测试了一下 也发生了同样的问题
应该不是我自己改过EXE的原因

2009-6-14 15:52 godtype
整形变量和指针变量都是四字节的。你的减1,在程序中实际上是减“00 00 00 01”,而在内存中,经验果存放的位置后面还有其他数据,所以如果敏捷果、运气果和经验果都是0,但是由于后面的数据有非零数值,减1后就会变成FF了。
例如
00(敏捷) 00(运气) 00(经验) 02(其他数据)
减1后就是 FF FF FF 01,实际是减00 00 00 01,前后倒转就是减01 00 00 00

2009-6-14 16:08 showzhuge
[quote]原帖由 [i]godtype[/i] 于 2009-6-14 15:52 发表
整形变量和指针变量都是四字节的。你的减1,在程序中实际上是减“00 00 00 01”,而在内存中,经验果存放的位置后面还有其他数据,所以如果敏捷果、运气果和经验果都是0,但是由于后面的数据有非零数值,减1后就 ... [/quote]
这个貌似没法解决吗? 那如果是+1会出错吗?
不过重点是79变量测试为什么会对最后三个物品无效呢?

2009-6-14 16:18 godtype
我已经说过是四字节的原因,最后三个物品只是占了三个位置,还有一个位置是其他的数据,如果这个“其他数据”有非零的存在,你的79测试肯定就不会正确测试啦。
解决的方法应该是改引擎,改成一个字节的测试。(不过我没试过)

2009-6-14 16:29 showzhuge
[quote]原帖由 [i]godtype[/i] 于 2009-6-14 16:18 发表
我已经说过是四字节的原因,最后三个物品只是占了三个位置,还有一个位置是其他的数据,如果这个“其他数据”有非零的存在,你的79测试肯定就不会正确测试啦。
解决的方法应该是改引擎,改成一个字节的测试。( ... [/quote]
哦 看来只有把果子的位置移动到别的道具上了 还好貌似STAR的引擎卖武器得果子的地址和原来的差不多 那个卖5级武器得两个果子还有新的地址吗?

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.