/// <inheritdoc /> public void ShowActiveQuests() { var connection = this.player.Connection; if (connection is null || this.player.SelectedCharacter is null) { return; } var activeQuests = this.player.SelectedCharacter.QuestStates.Where(state => state.Group != QuestConstants.LegacyQuestGroup && state.ActiveQuest != null).Select(s => s.ActiveQuest !).ToList(); using var writer = connection.StartSafeWrite( QuestStateList.HeaderType, QuestStateList.GetRequiredSize(activeQuests.Count)); var message = new QuestStateList(writer.Span); int i = 0; foreach (var activeQuest in activeQuests) { var questIdentification = message[i]; questIdentification.Number = (ushort)activeQuest.Number; questIdentification.Group = (ushort)activeQuest.Group; i++; } writer.Commit(); }
/// <inheritdoc/> public void ShowActiveEventQuests() { var connection = this.player.Connection; if (connection is null) { return; } // Hints: * This is only sent for new characters (level <= 1, no MG or DL). // * I also found a struct which contains the following fields (each 2 bytes: NpcNumber (0), Count (1), QuestGroup (1), QuestNumber (0)). // * Always: C1 0C F6 03 00 00 01 00 00 00 01 00 using var writer = connection.StartSafeWrite( QuestEventResponse.HeaderType, QuestEventResponse.Length); var message = new QuestStateList(writer.Span); var vanertGroup = message[0]; vanertGroup.Number = 1; var duprianGroup = message[1]; duprianGroup.Number = 1; writer.Commit(); }