Other very slight problem - it is possible for a client to pickup (after another client's drop) a weapon between two money messages, surely?
Also, the client could drop one of their weapons (not sure exactly how ~ works though, so this may not affect it ) which could (again, not sure) confuse the comparison.
It should easily work well enough (and is very handy - I never knew get_user_weapons returned a bitsum) so I ain't complaining