Beispiel #1
0
        void HandleQuestPOIQuery(QuestPOIQuery packet)
        {
            if (packet.MissingQuestCount >= SharedConst.MaxQuestLogSize)
            {
                return;
            }

            // Read quest ids and add the in a unordered_set so we don't send POIs for the same quest multiple times
            HashSet <uint> questIds = new HashSet <uint>();

            for (int i = 0; i < packet.MissingQuestCount; ++i)
            {
                questIds.Add(packet.MissingQuestPOIs[i]); // QuestID
            }
            QuestPOIQueryResponse response = new QuestPOIQueryResponse();

            foreach (uint questId in questIds)
            {
                if (_player.FindQuestSlot(questId) != SharedConst.MaxQuestLogSize)
                {
                    QuestPOIData poiData = Global.ObjectMgr.GetQuestPOIData(questId);
                    if (poiData != null)
                    {
                        response.QuestPOIDataStats.Add(poiData);
                    }
                }
            }

            SendPacket(response);
        }
Beispiel #2
0
        void HandleQuestPOIQuery(QuestPOIQuery packet)
        {
            if (packet.MissingQuestCount >= SharedConst.MaxQuestLogSize)
            {
                return;
            }

            // Read quest ids and add the in a unordered_set so we don't send POIs for the same quest multiple times
            HashSet <uint> questIds = new HashSet <uint>();

            for (int i = 0; i < packet.MissingQuestCount; ++i)
            {
                questIds.Add(packet.MissingQuestPOIs[i]); // QuestID
            }
            QuestPOIQueryResponse response = new QuestPOIQueryResponse();

            foreach (var QuestID in questIds)
            {
                bool questOk = false;

                ushort questSlot = GetPlayer().FindQuestSlot(QuestID);

                if (questSlot != SharedConst.MaxQuestLogSize)
                {
                    questOk = GetPlayer().GetQuestSlotQuestId(questSlot) == QuestID;
                }

                if (questOk)
                {
                    var poiData = Global.ObjectMgr.GetQuestPOIList(QuestID);
                    if (poiData != null)
                    {
                        QuestPOIData questPOIData = new QuestPOIData();

                        questPOIData.QuestID = QuestID;

                        foreach (var data in poiData)
                        {
                            QuestPOIBlobData questPOIBlobData = new QuestPOIBlobData();

                            questPOIBlobData.BlobIndex               = data.BlobIndex;
                            questPOIBlobData.ObjectiveIndex          = data.ObjectiveIndex;
                            questPOIBlobData.QuestObjectiveID        = data.QuestObjectiveID;
                            questPOIBlobData.QuestObjectID           = data.QuestObjectID;
                            questPOIBlobData.MapID                   = data.MapID;
                            questPOIBlobData.WorldMapAreaID          = data.WorldMapAreaID;
                            questPOIBlobData.Floor                   = data.Floor;
                            questPOIBlobData.Priority                = data.Priority;
                            questPOIBlobData.Flags                   = data.Flags;
                            questPOIBlobData.WorldEffectID           = data.WorldEffectID;
                            questPOIBlobData.PlayerConditionID       = data.PlayerConditionID;
                            questPOIBlobData.UnkWoD1                 = data.UnkWoD1;
                            questPOIBlobData.AlwaysAllowMergingBlobs = data.AlwaysAllowMergingBlobs;

                            foreach (var point in data.points)
                            {
                                questPOIBlobData.QuestPOIBlobPointStats.Add(new QuestPOIBlobPoint(point.X, point.Y));
                            }

                            questPOIData.QuestPOIBlobDataStats.Add(questPOIBlobData);
                        }

                        response.QuestPOIDataStats.Add(questPOIData);
                    }
                }
            }

            SendPacket(response);
        }