Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        /// <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();
        }