7亿5千万刷钱的原因和解决方法,附经验计算公式
GS中计算掉钱数reduce的公式为
money<=0,不计算
money>0,级别小于99时,reduce=money/100;
级别大于100,小于200时,reduce=money*2/100;
级别等于200时,reduce=0 //很奇怪,我认为这是个bug
级别大于200时,reduce=money*3/100
最后,用money-reduce就是掉钱以后的money
当一个人级别大于200,身上带有750000000钱时,reduce= -20449672,钱反而会增加了。。
原因就是在先乘3,除以100
money有符号长整数,上限2100000000左右,750000000*3就超过上限了,先除就没有问题了(韩国人写程序也这么烂阿。。)
解决办法就是在GS(GameServer)中找到如下绝对地址,将左边的改为右边的就可以了
仓库中钱的算法是一样的,在这里一起修正了
64dc4-64dce 6BC00399B964000000F7F9 >99B964000000F7F96BC003
64d9b-64da4 D1E099B964000000F7F9 >99B964000000F7F9D1E0
64ecc-64ed6 6BC00399B964000000F7F9 >99B964000000F7F96BC003
64ea3-64eac D1E099B964000000F7F9 >99B964000000F7F9D1E0
200级不掉钱修正如下
64db9 7e17 ->7c17
64ec1 7e17 ->7c17
我用的是时速的GS,我想所有的GS都差不多吧
每级需求经验的计算公式是
level<=255
exp=(level+9)*level*level*10
level>255
exp=[(level-255)+9]*(level-255)*(level-255)*1000+(level+9)*level*level*10
死亡掉落经验的计算公式是
(下级需求经验-本级需求经验)*n/100
又是这种先乘后除的做法,n是根据情况定的,与级别,pk值等等有关,0<=n<=8
这里可以刷经验吗?
不过按正常情况,这里不会有问题的:)