『四裤全输』 发表于 2010-8-30 04:50:59

1分钟看完War3关于金币获得的范围。

以前学变量的时候知道了War3整数变量最大2^32,4294967296。
今天玩War3的时候发现当给予玩家金币数大于两亿左右,金币就会被清零,于是用WE测试了一番。
最后得出((2^32)/2)/10为限额

                  1 — 1000000      给予金币
    1000001 —  213748364 金币超额,这时并不会引起清零现象,但是金币也不会超过一百万。
213748365 — 428496730 金币清零,这里就会引起清零现象了,此时无论你有多少金币,只要给予这个数,金币立刻变鸭蛋。
428496731 — 429496730 扣除金币,这个理解为给予428496730金币实际效果为扣除一百万金币就可以了,多退少补。
429496731 - 430496730 给予金币,刚才扣完了一百万,现在再往上增加金币数量就会正常的给予金币。
430496731 — 643245094 金币超额,同上。
643245095 — ?????? 金币再次清零

测试到643245095清零后停止了测试,猜想应该是无限循环。
然后偷懒发帖说一下,接下来继续玩……

白银酱 发表于 2010-8-30 05:15:50

void give_gold(int gold){
int update=gold*10;
gold_data+=update;
}
嘛。之所以发生这个原因是因为玻璃渣使用了有符号整数而已。
至于为啥除以10推测是玻璃渣想让金币能达到0.1的精度。

『四裤全输』 发表于 2010-8-30 15:14:48

白银大人好厉害!

希瓦 发表于 2010-8-30 15:21:09

表示经常用“greedisgood 100000000000000000”来清空金币……

on9son 发表于 2010-8-30 22:54:46

引用第3楼希瓦于2010-08-30 15:21发表的:
表示经常用“greedisgood 100000000000000000”来清空金币…… images/back.gif

我用 "greedisgood -999999"來清的

w21m0115d01 发表于 2010-9-7 22:33:07

我不会干清空金币这种傻事的。。

风语 发表于 2010-12-2 21:50:58

我爱输123456789如果再多个0就不管用了 看了4楼后才想到输负数...

tomasl 发表于 2011-1-19 17:51:01

........greedisgood -9999999你可以用来整爆电脑AI

aychxm 发表于 2011-1-19 20:26:47

真是太傻了!希望这种事不会在现实中发生!不然,嘿嘿。。。

破喉咙 发表于 2011-1-19 22:14:32

引用第8楼aychxm于2011-01-19 20:26发表的 :
真是太傻了!希望这种事不会在现实中发生!不然,嘿嘿。。。 http://bbs.islga.org/images/back.gif

当现实中可以复制物品的时候这种BUG自然会出现

aychxm 发表于 2011-1-20 18:26:27

1小时掌握XXX编程
页: [1]
查看完整版本: 1分钟看完War3关于金币获得的范围。