StormTheGates Posted April 3, 2008 Share Posted April 3, 2008 I run a game and one of the features is Russian Roulette. The problem Ive been having is that when a user wins they get 2x their money. However if that value exceeds the max of a 32bit integer, 2.147 billion or so they loose the extra money they should have won. How can I rectify this? Thanks. Quote Link to comment Share on other sites More sharing options...
devstudio Posted April 3, 2008 Share Posted April 3, 2008 Switch to Euros?! If you have access to MySQL this may be of some help. http://www.biorust.com/tutorials/detail/256/en/ Quote Link to comment Share on other sites More sharing options...
StormTheGates Posted April 3, 2008 Author Share Posted April 3, 2008 Seems kinda brutal on the mysql. Heres what my code looks like: $end = $money*2; mysql_query("UPDATE users set money='$end' WHERE username='$username'"); Cant get past 2,147,483,647 The money field on the database is an int. Quote Link to comment Share on other sites More sharing options...
devstudio Posted April 3, 2008 Share Posted April 3, 2008 Should be able to do: mysql_query("UPDATE users SET money=money+money WHERE username='$username'"); -or- mysql_query("UPDATE users SET money=money*2 WHERE username='$username'"); MYSQL is probably better at it then php, because the value will never even be set in php's memory this way. Best, Nathan Quote Link to comment Share on other sites More sharing options...
StormTheGates Posted April 3, 2008 Author Share Posted April 3, 2008 Thanks . I solved it by making the mysql a bigint. Quote Link to comment Share on other sites More sharing options...
lordfrikk Posted April 3, 2008 Share Posted April 3, 2008 You can push the boundaries even further by using unsigned bigint, but you won't be able to use negative values afterwards. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.