public static void OnReceive(NetState state, PacketReader pvSrc)
        {
            byte cmd = pvSrc.ReadByte();

            if (cmd == 0x02)
            {
                Authenticate(state, pvSrc);
            }
            else if (cmd == 0xFF)
            {
                string statStr = String.Format(", Name={0}, Age={1}, Clients={2}, Items={3}, Chars={4}, Mem={5}K", Server.Misc.ServerList.ServerName, (int)(DateTime.Now - Server.Items.Clock.ServerStart).TotalHours, NetState.Instances.Count, World.Items.Count, World.Mobiles.Count, (int)(System.GC.GetTotalMemory(false) / 1024));
                state.Send(new UOGInfo(statStr));
                state.Dispose();
            }
            else if (!IsAuth(state))
            {
                Console.WriteLine("ADMIN: Unauthorized packet from {0}, disconnecting", state);
                Disconnect(state);
            }
            else
            {
                if (!RemoteAdminHandlers.Handle(cmd, state, pvSrc))
                {
                    Disconnect(state);
                }
            }
        }
        private static void StaffChat(NetState state, PacketReader pvSrc)           // 0x0B
        {
            Mobile from    = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
            string message = pvSrc.ReadUnicodeString();

            if (from != null && message.Length > 0)
            {
                CommandHandlers.StaffChat(from, message);
            }
        }
        private static void Broadcast(NetState state, PacketReader pvSrc)           // 0x0A
        {
            Mobile from    = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
            string message = pvSrc.ReadUnicodeString();

            if (from != null && message.Length > 0)
            {
                World.Broadcast(0x482, true, String.Format("Staff message from {0}:", from.Name));
                World.Broadcast(0x482, true, message);
            }
        }
        private static void Pages(NetState state, PacketReader pvSrc)           // 0x08
        {
            ArrayList list       = PageQueue.List;
            int       identifier = pvSrc.ReadInt32();
            byte      subID      = pvSrc.ReadByte();

            Mobile sender = World.FindMobile(identifier);

            if (sender == null)
            {
                return;
            }

            PageEntry e = PageQueue.GetEntry(sender);

            if (e == null)               // no such page
            {
                return;
            }

            switch (subID)
            {
            case 0x01:                     // Handle
            {
                bool   handle = pvSrc.ReadBoolean();
                Mobile from   = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                if (from != null && (e.Handler == null || e.Handler == from))
                {
                    e.Handler = handle ? from : null;
                }
                //Console.WriteLine( "Handle: {0} handler: {1}", handle, from != null ? from.Name : "none" );
                break;
            }

            case 0x02:                     // Remove
            {
                PageQueue.Remove(e);
                break;
            }

            case 0x03:                     // Predefined
            {
                byte      messageIndex = pvSrc.ReadByte();
                Mobile    from         = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                ArrayList preresp      = PredefinedResponse.List;

                if (from != null && messageIndex >= 0 && messageIndex < preresp.Count)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, ((PredefinedResponse)preresp[messageIndex]).Message));
                }
                break;
            }

            case 0x04:                     // Answer
            {
                Mobile from    = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                string message = pvSrc.ReadString();
                if (from != null)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, message));
                }
                break;
            }
            }
        }