internal static void OnC2SAskDeleteCharacter(ByteBuffer buffer, Connection connection)
        {
            var packet = new CharacterPackets.C2SAskDeleteCharacter(buffer, connection);
            var client = ClientManager.GetClient(connection);

            if (!DatabaseFunctions.DeleteCharacter(client.UserId, packet.charSlot))
            {
                return;
            }
            var outPacket = new CharacterPackets.S2CAnsDeleteCharacter(connection);

            outPacket.Send(connection);
        }
        public static void RegisterDBPackets()
        {
            connection.AppendIncomingPacketHandler <byte[]>("CharacterCreateSuccess",
                                                            (header, connection, character) =>
            {
                ByteBuffer buffer  = new ByteBuffer(character);
                var userID         = BitConverter.ToInt32(buffer.ReadBlock(5), 0);
                var characterbytes = buffer.ReadBlock(buffer.Data.Length - 5);
                var cc             = CCM.GetClientConnection(userID);
                //var charstruct = new PacketStructs.CharacterInfo(character);
                var packet = new CharacterPackets.S2CAnsCreateCharacter(characterbytes, cc.AgentConnection);
                packet.Send(cc.AgentConnection);
            });
            connection.AppendIncomingPacketHandler <byte[]>("CharacterList", ((header, connection1, bytes) =>
            {
                ByteBuffer buffer = new ByteBuffer(bytes);
                var userID = BitConverter.ToInt32(buffer.ReadBlock(4), 0);
                var cc = CCM.GetClientConnection(userID);
                var packet = new ConnectionPackets.S2CAnsEnterCharSelect(buffer.Data);
                packet.Send(cc.AgentConnection);
            }));
            connection.AppendIncomingPacketHandler <int>("CharacterDeleteSuccess", (
                                                             (header, connection1, userID) =>
            {
                var conn = CCM.GetClientConnection(userID).AgentConnection;
                var packet = new CharacterPackets.S2CAnsDeleteCharacter(conn);
                packet.Send(conn);
            }));
            connection.AppendIncomingPacketHandler <int[]>("CharacterDeleteFailed", (
                                                               (header, connection1, incomingObject) =>
            {
                var conn = CCM.GetClientConnection(incomingObject[1]).AgentConnection;
                var errorCode = incomingObject[0];
                var packet = new CharacterPackets.S2CErrCharacterPacket(errorCode, conn);
                packet.Send(conn);
            }));
            connection.AppendIncomingPacketHandler <int>("CheckDuplicateNameSuccess", (
                                                             (header, connection1, incomingObject) =>
            {
            }));
            connection.AppendIncomingPacketHandler <int>("CheckDuplicateNameFailed", (
                                                             (header, connection1, incomingObject) =>
            {
                var conn = CCM.GetClientConnection(incomingObject).AgentConnection;
                var packet = new CharacterPackets.S2CAnsDuplicateNameCheck(0, connection);     //0 oder 5
                packet.Send(conn);
            }));
            connection.AppendIncomingPacketHandler <byte[]>("FullCharacterBytes", ((header, connection1,
                                                                                    fullCharacterBytes) =>
            {
                var userID = BitConverter.ToInt32(ByteUtils.SlicedBytes(fullCharacterBytes, 4, 8), 0);
                var conn = CCM.GetClientConnection(userID);
                var character = new Character(fullCharacterBytes);
                conn.Character = character;
                var playerInfoPacket = new CharacterPackets.S2CCharacterInfo(character);
                playerInfoPacket.Send(conn.AgentConnection);

                var skillInfoPacket = new CharacterPackets.S2CSkillInfo(character);
                skillInfoPacket.Send(conn.AgentConnection);

                var quickInfoPacket = new CharacterPackets.S2CQuickInfo(character);
                quickInfoPacket.Send(conn.AgentConnection);

                var styleInfoPacket = new CharacterPackets.S2CStyleInfo(character);
                styleInfoPacket.Send(conn.AgentConnection);

                var stateInfoPacket = new CharacterPackets.S2CStatePacket(character);
                stateInfoPacket.Send(conn.AgentConnection);

                var packet = new ConnectionPackets.S2CAnsEnterGame(character.Id);
                packet.Send(conn.AgentConnection);
            }));
        }