internal static void OnC2SAskCreateCharacter(ByteBuffer buffer, Connection connection) { var incPacket = new CharacterPackets.C2SAskCreateCharacter(buffer, connection); var client = ClientManager.GetClient(connection); if (!DatabaseFunctions.CreateCharacter( client.UserId, incPacket.CharName, (byte)incPacket.ClassCode, (byte)incPacket.HeightCode, (byte)incPacket.FaceCode, (byte)incPacket.HairCode, out var character)) { return; } if (!DatabaseFunctions.AddCharacterToDB(character, out var charID)) { return; } character.Id = charID; var charInfoForPacket = new PacketStructs.CharacterInfo(character); var outPacket = new CharacterPackets.S2CAnsCreateCharacter(charInfoForPacket.ToBytes(), 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); })); }