using System; using System.Data; using FilterAPI; using FilterAPI.Networking; using FilterManager.ManagerNetworking; namespace FilterManager.ManagerHandlers { internal class Manager5Handle { [ManagerPacketHandler(NETCMD.WM_CREATE_CHAR)] public static void HandleCreateCharacter(ManagerClient ClientSocket, Packet ClientPacket) { Int16 Slot = -1; String sID = String.Empty; Int16 JobGender = -1; Int16 Hair = -1; Int16 Color = -1; Int16 Style = -1; if ((Slot = ClientPacket.PacketReader.ReadByte()) != -1 && (sID = ClientPacket.ReadString(16)) != String.Empty && (JobGender = ClientPacket.PacketReader.ReadByte()) != -1 && (Hair = ClientPacket.PacketReader.ReadByte()) != -1 && (Color = ClientPacket.PacketReader.ReadByte()) != -1 && (Style = ClientPacket.PacketReader.ReadByte()) != -1) { Boolean IsMale = Convert.ToBoolean((Byte)((JobGender >> 7) & 0x01)); Byte ClassID = (Byte)((JobGender >> 2) & 0x1F); // Character Name Protection if (Convert.ToBoolean(Program.Conf.GetConfigValue("ManagerFeatureCNP")) && !Injection.ContainsOnlyLetterOrDigit(sID)) { GlobalPacket.SendCharacterNameTaken(ClientSocket); } else if (Program.SQL.sIDTaken(sID)) { GlobalPacket.SendCharacterNameTaken(ClientSocket); } else { ClientSocket.NewCharacter = new Character() { Slot = Slot, sID = sID, JobGender = JobGender, Hair = Hair, Color = Color, Style = Style, IsMale = IsMale, ClassID = ClassID }; ClientSocket.SendPacketServer(ClientPacket); } } } [ManagerPacketHandler(NETCMD.WM_CREATED_CHAR)] public static void HandleCharacterCreated(ManagerClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); } } }