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)); }
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); } } }
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); } }
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."); } }
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); }
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; } } }