using Filter; using Filter.Database.Character; using Filter.Database.GameFilter; using Filter.Networking.Instances; using Filter.Networking.Manager; using Filter.Utilities; using System; using System.Linq; using System.Linq.Expressions; using System.Runtime.CompilerServices; namespace Filter.Handlers.Manager { internal class Manager38Handle { public Manager38Handle() { } [ManagerPacketHandler(Manager38TypeClient.AcademyMessage)] public static void HandleAcademyMessage(ManagerClient ClientSocket, Packet ClientPacket) { string str; char chr; if (ClientSocket.IsConnected != 0) { return; } if (ClientSocket.Account == null || ClientSocket.Character == null) { ClientSocket.Disconnect(); return; } Muted muted = ( from nCharNo in Program.GameFilterData.Muteds where nCharNo.nCharNo == ClientSocket.Character.nCharNo select nCharNo).FirstOrDefault(); if (!ClientPacket.ReadString(out str)) { Echo.SendWhisper(ClientSocket, "Could not read your academy message.", new object[0]); return; } if (Injection.ContainsInvalidSymbol(str, out chr)) { ManagerClient clientSocket = ClientSocket; object[] objArray = new object[] { chr }; Echo.SendWhisper(clientSocket, "The academy message you tried to send had a invalid symbol in. Invalid Symbol: {0}.", objArray); return; } if (muted != null) { Echo.SendWhisper(ClientSocket, "Sorry but you cannot talk in academy chat, because you are muted.", new object[0]); return; } Packet packet = new Packet(Manager38TypeClient.AcademyMessage); packet.WriteString(str, true); ClientSocket.Server.SendPacket(packet); } [ManagerPacketHandler(Manager38TypeClient.AcademyWarp)] public static void HandleAcademyWarp(ManagerClient ClientSocket, Packet ClientPacket) { string str; if (ClientSocket.IsConnected != 0) { return; } if (ClientSocket.Account == null || ClientSocket.Character == null) { ClientSocket.Disconnect(); return; } if (!ClientPacket.ReadString(out str, 16)) { Echo.SendWhisper(ClientSocket, "Could not read name of the person you are trying to warp to.", new object[0]); return; } ManagerClient managerClient = ( from Character in Program.ManagerLoggedIn where Character.Character != null select Character into sID where sID.Character.sID == str select sID).FirstOrDefault(); ManagerClient managerClient1 = managerClient; ManagerClient managerClient2 = managerClient; if (managerClient1 == null) { Echo.SendWhisper(ClientSocket, "The player you tried to warp to is not online.", new object[0]); return; } if (( from MapIndex in Program.GameFilterData.AcademyNoWarps where MapIndex.MapIndex == managerClient2.Character.sLoginZone select MapIndex).FirstOrDefault() != null) { Echo.SendWhisper(ClientSocket, "The map this player is in cannot be warped to.", new object[0]); } object[] character = new object[] { managerClient2.Character.sID, managerClient2.Character.sLoginZone }; Echo.SendWhisper(ClientSocket, "You warped to {0}. They are at {1}.", character); ClientSocket.Server.SendPacket(ClientPacket); } } }