/// <summary> /// Sends a list of characters to the client. /// </summary> /// <param name="conn"></param> /// <param name="layer">This is the number on the left side of the character list in the client.</param> public static void BC_COMMANDER_LIST(LoginConnection conn, int layer = 1) { var characters = conn.Account.GetCharacters().Where(x => x.BarrackLayer == layer); var packet = new Packet(Op.BC_COMMANDER_LIST); packet.PutLong(conn.Account.Id); packet.PutByte(0); packet.PutByte((byte)characters.Count()); packet.PutString(conn.Account.TeamName, 64); packet.AddAccountProperties(conn.Account); foreach (var character in characters) { packet.AddBarrackPc(character); } // Null terminated list of some kind? // Example of != 0: 02 00 | 0B 00 00 00 01 00, 0C 00 00 00 00 00 packet.PutShort(0); // count? packet.PutShort(0); packet.PutInt(0); packet.PutShort(0); conn.Send(packet); }
/// <summary> /// Sets the character for the barrack /// </summary> /// <param name="conn"></param> /// <param name="id"></param> public static void BC_NORMAL_SetBarrackCharacter(LoginConnection conn, Character character) { var packet = new Packet(Op.BC_NORMAL); packet.PutInt(SubOp.Barrack.SetBarrackCharacter); packet.PutLong(conn.Account.Id); packet.PutLong(conn.Account.Id); packet.AddBarrackPc(character); conn.Send(packet); }
/// <summary> /// Sends a list of characters to the client. /// </summary> /// <param name="conn"></param> /// <param name="characters"></param> public static void BC_SPLIT_COMMANDER_INFO_LIST(LoginConnection conn, IEnumerable <Character> characters) { var characterCount = characters.Count(); var packet = new Packet(Op.BC_SPLIT_COMMANDER_INFO_LIST); packet.PutInt(characterCount); packet.PutLong(conn.Account.Id); packet.PutByte(0); packet.PutByte(characterCount != 0); packet.PutByte(1); foreach (var character in characters) { packet.AddBarrackPc(character); } conn.Send(packet); }