using System; using System.Linq; using System.Data; using System.Data.SqlClient; using Filter.Networking.Instances; using Filter.Networking.Manager; using Filter.Utilities; namespace Filter.Handlers.Manager { internal class Manager4Handle { [ManagerPacketHandler(Manager4TypeClient.SelectCharacter)] public static void HandleSelectCharacter(ManagerClient ClientSocket, Packet ClientPacket) { if (ClientSocket.IsConnected != 0) { ClientPacket.Dispose(); return; } else { Byte CharacterSlot; if (!ClientPacket.ReadByte(out CharacterSlot)) { ClientSocket.Disconnect(); } else if (CharacterSlot >= 5) { ClientSocket.Disconnect(); } else { using (var Connection = new SqlConnection()) { Connection.ConnectionString = Program.ConnectionBuilder.ConnectionString; try { Connection.Open(); } catch { ClientSocket.Disconnect(); } if (Connection.State == ConnectionState.Open) { using (var Command = Connection.CreateCommand()) { Command.CommandText = String.Format("SELECT TOP 1 sID FROM {0}..tCharacter WHERE nUserNo = '{1}' AND bDeleted = '0' AND nSlotNo = '{2}'", Program.Config.SQLCharacter, ClientSocket.AccountID, CharacterSlot); using (var Reader = Command.ExecuteReader()) { Reader.Read(); if (Reader.HasRows) { ClientSocket.CharacterName = Convert.ToString(Reader["sID"]); ClientSocket.Server.SendPacket(ClientPacket); } else { ClientSocket.Disconnect(); } } } } Connection.Close(); } } } ClientPacket.Dispose(); } } }