public static void Evaluate(UserObject userobj, ProtoMessage msg, AresTCPPacketReader packet, uint time)
        {
            UserPool.Broadcast(AresTcpPackets.NoSuch(msg.ToString()));
            if (!userobj.LoggedIn)
            {
                if (msg > ProtoMessage.MSG_CHAT_CLIENT_LOGIN)
                {
                    throw new Exception();
                }
            }
            switch (msg)
            {
            case ProtoMessage.MSG_CHAT_CLIENT_LOGIN:
                Login(userobj, packet, time);
                break;

            case ProtoMessage.MSG_CHAT_CLIENT_PUBLIC:
                PublicText(userobj, packet);
                break;

            case ProtoMessage.MSG_CHAT_CLIENT_AVATAR:
                Avatar(userobj, packet);
                break;

            case ProtoMessage.MSG_CHAT_CLIENT_PERSONAL_MESSAGE:
                String text = packet.ReadString();
                if (ServerEvents.OnPersonalMessage(userobj, text))
                {
                    userobj.PersonalMessage = text;
                }
                break;

            case ProtoMessage.MSG_CHAT_CLIENT_UPDATE_STATUS:

                break;

            case ProtoMessage.MSG_CHAT_SERVER_UPDATE_USER_STATUS:
                userobj.LastFastPing = time;
                AresTcpPackets.UpdateUserStatus(userobj, userobj);
                break;

            case ProtoMessage.MSG_CHAT_CLIENT_COMMAND:
                //Command(userobj, packet.ReadString());
                break;
            }
        }