void RecvBuyFromShop(IIPSocket conn, BitStream r)
        {
            var slot = r.ReadShopItemIndex();
            var amount = r.ReadByte();

            User user;
            if ((user = TryGetUser(conn)) == null)
                return;

            if (user.IsPeerTrading)
                return;

            user.ShoppingState.TryPurchase(slot, amount);
        }