找回密码
 点一下
查看: 3630|回复: 10

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

[复制链接]
发表于 2010-8-30 04:50:59 | 显示全部楼层 |阅读模式
以前学变量的时候知道了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”来清空金币……
回复

使用道具 举报

发表于 2010-8-30 22:54:46 | 显示全部楼层
引用第3楼希瓦于2010-08-30 15:21发表的  :
表示经常用“greedisgood 100000000000000000”来清空金币……
我用 "greedisgood -999999"來清的
回复

使用道具 举报

发表于 2010-9-7 22:33:07 | 显示全部楼层
我不会干清空金币这种傻事的。。
回复

使用道具 举报

发表于 2010-12-2 21:50:58 | 显示全部楼层
我爱输123456789如果再多个0就不管用了 看了4楼后才想到输负数...
回复

使用道具 举报

发表于 2011-1-19 17:51:01 | 显示全部楼层
........greedisgood -9999999你可以用来整爆电脑AI
回复

使用道具 举报

发表于 2011-1-19 20:26:47 | 显示全部楼层
真是太傻了!希望这种事不会在现实中发生!不然,嘿嘿。。。
回复

使用道具 举报

发表于 2011-1-19 22:14:32 | 显示全部楼层
引用第8楼aychxm于2011-01-19 20:26发表的 :
真是太傻了!希望这种事不会在现实中发生!不然,嘿嘿。。。

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

使用道具 举报

发表于 2011-1-20 18:26:27 | 显示全部楼层
1小时掌握XXX编程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-26 23:01 , Processed in 0.064104 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表