Ejemplo n.º 1
0
        public static void PageResp(object obj)
        {
            paging = true;
            object[] objects = (object[])obj;
            int      w       = (int)objects[0];
            int      pag     = (int)objects[1];
            int      paG;

            if (w == 1)
            {
up:
                try
                {
                    paG = Convert.ToInt32(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("Thats not a number,try again.");
                    goto up;
                }
                Console.WriteLine("Type your response");
                object[] ob = new object[] { 2, paG };
                ThreadPool.QueueUserWorkItem(new WaitCallback(PageResp), ob);
            }
            else
            {
                string    resp = Console.ReadLine();
                ArrayList list = PageQueue.List;
                m_List = (PageEntry[])list.ToArray(typeof(PageEntry));
                if (m_List.Length > 0)
                {
                    if (pag > m_List.Length)
                    {
                        Console.WriteLine("Error: Not a valid page number");
                    }
                    else
                    {
                        for (int i = 0; i < m_List.Length; ++i)
                        {
                            PageEntry e = m_List[i];
                            if (i == pag)
                            {
                                e.Sender.SendGump(new MessageSentGump(e.Sender, "Admin", resp));
                                PageQueue.Remove(e);
                                Console.WriteLine("Message Sent...");
                            }
                        }
                    }
                }
                else
                {
                    Console.WriteLine("There are no pages to display.");
                }
            }
            paging = false;
            ThreadPool.QueueUserWorkItem(new WaitCallback(ConsoleListen));
        }
Ejemplo n.º 2
0
        public AllPages() : base(0x07)
        {
            ArrayList list = PageQueue.List;

            int length = 0;

            for (int i = 0; i < list.Count;)
            {
                PageEntry e = (PageEntry)list[i];

                if (e.Sender.Deleted || e.Sender.NetState == null)
                {
                    PageQueue.Remove(e);
                }
                else
                {
                    length += 4 + 1 + e.Sent.ToString().Length + 1 + e.Sender.Name.Length + e.Message.Length + 1 + (e.Handler == null ? 0 : (e.Handler.Name.Length + 1));
                    ++i;
                }
            }

            EnsureCapacity(1 + 2 + 1 + length);

            m_Stream.Write((byte)0x01);               // All pages

            byte pageCount = (byte)Math.Min(list.Count, 255);

            m_Stream.Write(pageCount);

            for (byte i = 0; i < pageCount; i++)
            {
                PageEntry e = (PageEntry)list[i];

                m_Stream.Write(e.Sender.Serial);
                m_Stream.Write((byte)e.Type);
                long ticks = e.Sent.Ticks;
                m_Stream.Write((uint)(ticks >> 32)); m_Stream.Write((uint)ticks);
                m_Stream.WriteAsciiNull(e.Sender.Name);
                m_Stream.WriteAsciiNull(e.Message);
                m_Stream.Write(e.Handler != null);
                if (e.Handler != null)
                {
                    m_Stream.WriteAsciiNull(e.Handler.Name);
                }
            }
        }
Ejemplo n.º 3
0
        public static void Next(string input)
        {
            input = input.ToLower();

            if (input.StartsWith("bc"))
            {
                string sub = input.Replace("bc", "");

                BroadcastMessage(AccessLevel.Player, 0x35, String.Format("[Admin] {0}", sub));
                Console.WriteLine("Players will see: {0}", sub);
            }
            else if (input.StartsWith("sc"))
            {
                string sub = input.Replace("staff", "");

                BroadcastMessage(AccessLevel.Counselor, 0x32, String.Format("[Admin] {0}", sub));
                Console.WriteLine("Staff will see: {0}", sub);
            }
            else if (input.StartsWith("ban"))
            {
                string sub    = input.Replace("ban", "");
                var    states = NetState.Instances;

                if (states.Count == 0)
                {
                    Console.WriteLine("There are no players online.");
                }

                foreach (NetState t in states)
                {
                    Account a = t.Account as Account;

                    if (a == null)
                    {
                        continue;
                    }

                    Mobile m = t.Mobile;

                    if (m == null)
                    {
                        continue;
                    }

                    sub = sub.ToLower();

                    if (m.Name.ToLower() != sub.Trim())
                    {
                        continue;
                    }

                    NetState m_ns = m.NetState;

                    Console.WriteLine("Mobile name: '{0}' Account name: '{1}'", m.Name, a.Username);

                    a.Banned = true;
                    m_ns.Dispose();

                    Console.WriteLine("Banning complete.");
                }
            }
            else if (input.StartsWith("kick"))
            {
                string sub    = input.Replace("kick", "");
                var    states = NetState.Instances;

                if (states.Count == 0)
                {
                    Console.WriteLine("There are no players online.");
                }

                foreach (NetState t in states)
                {
                    Account a = t.Account as Account;

                    if (a == null)
                    {
                        continue;
                    }

                    Mobile m = t.Mobile;

                    if (m == null)
                    {
                        continue;
                    }

                    sub = sub.ToLower();

                    if (m.Name.ToLower() != sub.Trim())
                    {
                        continue;
                    }

                    NetState m_ns = m.NetState;

                    Console.WriteLine("Mobile name: '{0}' Account name: '{1}'", m.Name, a.Username);

                    m_ns.Dispose();

                    Console.WriteLine("Kicking complete.");
                }
            }
            else
            {
                switch (input.Trim())
                {
                case "shutdown":
                {
                    AutoSave.Save();
                    Core.Process.Kill();
                }
                break;

                case "shutdown nosave":
                    Core.Process.Kill();
                    break;

                case "restart":
                {
                    BroadcastMessage(AccessLevel.Player, 0x35, String.Format("[Server] We are restarting..."));
                    AutoSave.Save();
                    Process.Start(Core.ExePath, Core.Arguments);
                    Core.Process.Kill();
                }
                break;

                case "restart nosave":
                {
                    Process.Start(Core.ExePath, Core.Arguments);
                    Core.Process.Kill();
                }
                break;

                case "online":
                {
                    var states = NetState.Instances;

                    if (states.Count == 0)
                    {
                        Console.WriteLine("There are no users online at this time.");
                    }

                    foreach (NetState t in states)
                    {
                        Account a = t.Account as Account;

                        if (a == null)
                        {
                            continue;
                        }

                        Mobile m = t.Mobile;

                        if (m != null)
                        {
                            Console.WriteLine("- Account: {0}, Name: {1}, IP: {2}", a.Username, m.Name, t);
                        }
                    }
                }
                break;

                case "save":
                    AutoSave.Save();
                    break;

                case "hear":                         //credit to Zippy for the HearAll script!
                {
                    _HearConsole = !_HearConsole;

                    Console.WriteLine(
                        _HearConsole ? "Now sending all speech to the console." : "No longer sending speech to the console.");
                }
                break;

                case "pages":
                {
                    Paging = true;

                    ArrayList list = PageQueue.List;
                    PageEntry e;

                    for (int i = 0; i < list.Count;)
                    {
                        e = (PageEntry)list[i];

                        if (e.Sender.Deleted || e.Sender.NetState == null)
                        {
                            e.AddResponse(e.Sender, "[Logout]");
                            PageQueue.Remove(e);
                        }
                        else
                        {
                            ++i;
                        }
                    }

                    _List = (PageEntry[])list.ToArray(typeof(PageEntry));

                    if (_List.Length > 0)
                    {
                        for (int i = 0; i < _List.Length; ++i)
                        {
                            e = _List[i];

                            string type = PageQueue.GetPageTypeName(e.Type);

                            Console.WriteLine("--------------Page Number: " + i + " --------------------");
                            Console.WriteLine("Player   :" + e.Sender.Name);
                            Console.WriteLine("Catagory :" + type);
                            Console.WriteLine("Message  :" + e.Message);
                        }

                        Console.WriteLine("Type the number of the page to respond to.");

                        ThreadPool.QueueUserWorkItem(PageResp, new object[] { 1, 2 });
                    }
                    else
                    {
                        Console.WriteLine("No pages to display.");

                        Paging = false;
                    }
                }
                break;

                //case "help":
                //case "list":
                default:
                {
                    Console.WriteLine(" ");
                    Console.WriteLine("Commands:");
                    Console.WriteLine("save            - Performs a forced save.");
                    Console.WriteLine("shutdown        - Performs a forced save then shuts down the server.");
                    Console.WriteLine("shutdown nosave - Shuts down the server without saving.");
                    Console.WriteLine("restart         - Sends a message to players informing them that the server is");
                    Console.WriteLine("                      restarting, performs a forced save, then shuts down and");
                    Console.WriteLine("                      restarts the server.");
                    Console.WriteLine("restart nosave  - Restarts the server without saving.");
                    Console.WriteLine("online          - Shows a list of every person online:");
                    Console.WriteLine("                      Account, Char Name, IP.");
                    Console.WriteLine("bc <message>    - Type this command and your message after it. It will then be");
                    Console.WriteLine("                      sent to all players.");
                    Console.WriteLine("sc <message>    - Type this command and your message after it. It will then be");
                    Console.WriteLine("                      sent to all staff.");
                    Console.WriteLine("hear            - Copies all local speech to this console:");
                    Console.WriteLine("                      Char Name (Region name): Speech.");
                    Console.WriteLine("pages           - Shows all the pages in the page queue,you type the page");
                    Console.WriteLine("                      number ,then you type your response to the player.");
                    Console.WriteLine("ban <playername>- Kicks and bans the users account.");
                    Console.WriteLine("kick <playername>- Kicks the user.");
                    Console.WriteLine("list or help    - Shows this list.");
                    Console.WriteLine(" ");
                }
                break;
                }
            }

            if (!Paging)
            {
                ThreadPool.QueueUserWorkItem(ConsoleListen);
            }
        }
Ejemplo n.º 4
0
        private static void HandlePaging(string sub)
        {
            if (sub.StartsWith("help", StringComparison.OrdinalIgnoreCase) ||
                sub.StartsWith("?", StringComparison.OrdinalIgnoreCase))
            {
                DisplayPagingHelp();

                HandlePaging(String.Empty);
                return;
            }

            if (PageQueue.List.Count == 0)
            {
                Console.WriteLine("There are no pages in the queue.");

                if (_Pages != null)
                {
                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (String.IsNullOrWhiteSpace(sub))
            {
                if (_Pages == null)
                {
                    Console.WriteLine("[Pages]: Enabled page mode.");

                    DisplayPagingHelp();
                }

                _Pages = PageQueue.List.Cast <PageEntry>().ToArray();

                const string format = "{0:D3}:\t{1}\t{2}";

                for (var i = 0; i < _Pages.Length; i++)
                {
                    Console.WriteLine(format, i + 1, _Pages[i].Type, _Pages[i].Sender);
                }

                return;
            }

            if (sub.StartsWith("exit", StringComparison.OrdinalIgnoreCase))
            {
                if (_Pages != null)
                {
                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (sub.StartsWith("clear", StringComparison.OrdinalIgnoreCase))
            {
                if (_Pages != null)
                {
                    foreach (var page in _Pages)
                    {
                        PageQueue.Remove(page);
                    }

                    Console.WriteLine("[Pages]: Queue cleared.");

                    Array.Clear(_Pages, 0, _Pages.Length);

                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (sub.StartsWith("remove", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                var page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");
                }
                else
                {
                    PageQueue.Remove(page);

                    Console.WriteLine("[Pages]: Removed from queue.");
                }

                HandlePaging(String.Empty);
                return;
            }

            if (sub.StartsWith("handle", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                var page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");

                    HandlePaging(String.Empty);
                    return;
                }

                if (args.Length <= 0)
                {
                    Console.WriteLine("[Pages]: Message required.");

                    HandlePaging(String.Empty);
                    return;
                }

                page.Sender.SendGump(new MessageSentGump(page.Sender, ServerList.ServerName, String.Join(" ", args)));

                Console.WriteLine("[Pages]: Message sent.");

                PageQueue.Remove(page);

                Console.WriteLine("[Pages]: Removed from queue.");

                HandlePaging(String.Empty);
                return;
            }

            if (sub.StartsWith("view", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                var page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");

                    HandlePaging(String.Empty);
                    return;
                }

                var idx = Array.IndexOf(_Pages, page) + 1;

                Console.WriteLine("[Pages]: {0:D3}:\t{1}\t{2}", idx, page.Type, page.Sender);

                if (!String.IsNullOrWhiteSpace(page.Message))
                {
                    Console.WriteLine("[Pages]: {0}", page.Message);
                }
                else
                {
                    Console.WriteLine("[Pages]: No message supplied.");
                }

                HandlePaging(String.Empty);
                return;
            }

            if (_Pages != null)
            {
                string[] args;

                var page = FindPage(sub, out args);

                if (page != null)
                {
                    var idx = Array.IndexOf(_Pages, page) + 1;

                    Console.WriteLine("[Pages]: {0:D3}:\t{1}\t{2}", idx, page.Type, page.Sender);

                    if (!String.IsNullOrWhiteSpace(page.Message))
                    {
                        Console.WriteLine("[Pages]: {0}", page.Message);
                    }
                    else
                    {
                        Console.WriteLine("[Pages]: No message supplied.");
                    }

                    HandlePaging(String.Empty);
                    return;
                }

                Array.Clear(_Pages, 0, _Pages.Length);

                _Pages = null;

                Console.WriteLine("[Pages]: Disabled page mode.");
            }
        }
Ejemplo n.º 5
0
        public static void PageResp(object obj)
        {
            if (Core.Crashed)
            {
                return;
            }

            Paging = true;

            var objects = (object[])obj;
            var w       = (int)objects[0];
            var pag     = (int)objects[1];
            int paG;

            if (w == 1)
            {
up:
                try
                {
                    paG = Convert.ToInt32(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("Thats not a number,try again.");
                    goto up;
                }

                Console.WriteLine("Type your response");

                ThreadPool.QueueUserWorkItem(PageResp, new object[] { 2, paG });
            }
            else
            {
                var resp = Console.ReadLine();
                var list = PageQueue.List;

                _List = (PageEntry[])list.ToArray(typeof(PageEntry));

                if (_List.Length > 0)
                {
                    if (pag > _List.Length)
                    {
                        Console.WriteLine("Error: Not a valid page number");
                    }
                    else
                    {
                        for (var i = 0; i < _List.Length; ++i)
                        {
                            var e = _List[i];

                            if (i != pag)
                            {
                                continue;
                            }

                            e.Sender.SendGump(new MessageSentGump(e.Sender, "Admin", resp));
                            PageQueue.Remove(e);

                            Console.WriteLine("Message Sent...");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("There are no pages to display.");
                }
            }

            Paging = false;

            ThreadPool.QueueUserWorkItem(ConsoleListen);
        }
Ejemplo n.º 6
0
        public static void Next(string nput)
        {
            string input = nput.ToLower();

            if (input.StartsWith("bc"))
            {
                string imput = input.Replace("bc", "");
                BroadcastMessage(AccessLevel.Player, 0x35, String.Format("[Admin] {0}", imput));
                Console.WriteLine("Players will see: {0}", imput);
            }
            else if (input.StartsWith("sc"))
            {
                string imput = input.Replace("staff", "");
                BroadcastMessage(AccessLevel.Counselor, 0x32, String.Format("[Admin] {0}", imput));
                Console.WriteLine("Staff will see: {0}", imput);
            }
            else if (input.StartsWith("ban"))
            {
                string          imput  = input.Replace("ban", "");
                List <NetState> states = NetState.Instances;
                if (states.Count == 0)
                {
                    Console.WriteLine("There are no players online.");
                }
                for (int i = 0; i < states.Count; ++i)
                {
                    Account a = states[i].Account as Account;
                    if (a == null)
                    {
                        continue;
                    }
                    Mobile m = states[i].Mobile;
                    if (m == null)
                    {
                        continue;
                    }
                    string innput = imput.ToLower();
                    if (m.Name.ToLower() == innput.Trim())
                    {
                        NetState m_ns = m.NetState;
                        Console.WriteLine("Mobile name: '{0}' Account name: '{1}'", m.Name, a.Username);
                        a.Banned = true;
                        m_ns.Dispose();
                        Console.WriteLine("Banning complete.");
                    }
                }
            }
            else if (input.StartsWith("kick"))
            {
                string          imput  = input.Replace("kick", "");
                List <NetState> states = NetState.Instances;
                if (states.Count == 0)
                {
                    Console.WriteLine("There are no players online.");
                }
                for (int i = 0; i < states.Count; ++i)
                {
                    Account a = states[i].Account as Account;
                    if (a == null)
                    {
                        continue;
                    }
                    Mobile m = states[i].Mobile;
                    if (m == null)
                    {
                        continue;
                    }
                    string innput = imput.ToLower();
                    if (m.Name.ToLower() == innput.Trim())
                    {
                        NetState m_ns = m.NetState;
                        Console.WriteLine("Mobile name: '{0}' Account name: '{1}'", m.Name, a.Username);
                        m_ns.Dispose();
                        Console.WriteLine("Kicking complete.");
                    }
                }
            }
            else
            {
                switch (input.Trim())
                {
                case "shutdown nosave":
                    Core.Process.Kill();
                    break;

                case "restart nosave":
                    Process.Start(Core.ExePath, Core.Arguments);
                    Core.Process.Kill();
                    break;

                case "online":
                {
                    List <NetState> states = NetState.Instances;
                    if (states.Count == 0)
                    {
                        Console.WriteLine("There are no users online at this time.");
                    }
                    for (int i = 0; i < states.Count; ++i)
                    {
                        Account a = states[i].Account as Account;
                        if (a == null)
                        {
                            continue;
                        }
                        Mobile m = states[i].Mobile;
                        if (m != null)
                        {
                            Console.WriteLine("- Account: {0}, Name: {1}, IP: {2}", a.Username, m.Name, states[i]);
                        }
                    }
                    break;
                }

                case "pages":
                {
                    paging = true;
                    ArrayList list = PageQueue.List;
                    PageEntry e;
                    for (int i = 0; i < list.Count;)
                    {
                        e = (PageEntry)list[i];
                        if (e.Sender.Deleted || e.Sender.NetState == null)
                        {
                            e.AddResponse(e.Sender, "[Logout]");
                            PageQueue.Remove(e);
                        }
                        else
                        {
                            ++i;
                        }
                    }
                    m_List = (PageEntry[])list.ToArray(typeof(PageEntry));
                    if (m_List.Length > 0)
                    {
                        for (int i = 0; i < m_List.Length; ++i)
                        {
                            e = m_List[i];
                            string type = PageQueue.GetPageTypeName(e.Type);
                            Console.WriteLine("--------------Page Number: " + i + " --------------------");
                            Console.WriteLine("Player   :" + e.Sender.Name);
                            Console.WriteLine("Catagory :" + type);
                            Console.WriteLine("Message  :" + e.Message);
                        }
                        Console.WriteLine("Type the number of the page to respond to.");
                        object[] oj = new object[] { 1, 2 };
                        ThreadPool.QueueUserWorkItem(new WaitCallback(PageResp), oj);
                    }
                    else
                    {
                        Console.WriteLine("No pages to display.");
                        paging = false;
                    }
                    break;
                }

                case "help":
                case "list":                         //Credit to HomeDaddy for this wonderful list!
                default:
                {
                    Console.WriteLine(" ");
                    Console.WriteLine("Commands:");
                    Console.WriteLine("shutdown nosave - Shuts down the server without saving.");
                    Console.WriteLine("restart nosave  - Restarts the server without saving.");
                    Console.WriteLine("online          - Shows a list of every person online:");
                    Console.WriteLine("                      Account, Char Name, IP.");
                    Console.WriteLine("bc <message>    - Type this command and your message after it. It will then be");
                    Console.WriteLine("                      sent to all players.");
                    Console.WriteLine("sc <message>    - Type this command and your message after it.It will then be ");
                    Console.WriteLine("                      sent to all staff.");
                    Console.WriteLine("pages           - Shows all the pages in the page queue,you type the page");
                    Console.WriteLine("                      number ,then you type your response to the player.");
                    Console.WriteLine("ban <playername>- Kicks and bans the users account.");
                    Console.WriteLine("kick <playername>- Kicks the user.");
                    Console.WriteLine("list or help    - Shows this list.");
                    Console.WriteLine(" ");
                    break;
                }
                }
            }
            if (!paging)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(ConsoleListen));
            }
        }
        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;
            }
            }
        }