Example #1
0
        internal static void OnC2SAskEnterCharSelect(ByteBuffer buffer, Connection connection)
        {
            var incPacket = new ConnectionPackets.C2SAskEnterCharSelect(buffer, connection);

            if (DatabaseFunctions.getAllCharacters(incPacket.userID, out var characterInfos))
            {
                int userId = ClientManager.GetClient(connection).UserId;
                var bytes  = new List <byte>();
                bytes.AddRange(ByteUtils.ToByteArray(userId, 4));
                bytes.Add((byte)characterInfos.Count);
                bytes.Add((byte)characterInfos.Count);
                foreach (var info in characterInfos)
                {
                    bytes.AddRange(info.ToBytes());
                }
                var outPacket = new ConnectionPackets.S2CAnsEnterCharSelect(bytes.ToArray());
                outPacket.Send(connection);

                var outPacket2 = new ConnectionPackets.S2CAnsWorldPrepare("127.0.0.1", 8010);
                outPacket2.Send(connection);
            }
        }
Example #2
0
        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);
            }));
        }