骑士气血技能后攻击超21亿会变负数,这个问题主要是溢出导致的,最大貌似是21E。如何解决此问题呢?请看下面的流程:

1.首先,骑士气血攻击是在野战中使用的,我们首先进入野战,遇到怪物,开启httpfox抓包,点击使用气血技能,停止抓包,会看到刚才攻击时的封包。
地址是:xxx.com/plugin.php?id=wxpet:pet&type=ajax&ajaxindex=fight_callmagic&action=callmpower&timestamp=1386059681931
抓取气血技能使用的封包示意图

通过地址,可以定位到文件是位于ajax下的fight_callmagic.php,进入文件,阅读源码,搜索“callmpower”,定位到第159行。
向下看,看到了“$addatk = intval($mypetdata[str] * $nn);”,注意其中的intval,这个函数的作用是将值转化为实数,实际的最大值也不过21E,如果超过的话就越界变负数了。
解决办法就是,把intval统一批量替换为floor,floor函数的作用是向下舍入为最接近的整数,其取值范围比intval大,所以替换为他。

如此,攻击溢出的问题就得以解决了。

本节教程结束。

Related Posts: 无心宠物-BUG修复系列-15-骑士气血攻击溢出的解决办法 :