diff options
author | Subv <subv2112@gmail.com> | 2014-06-01 22:43:24 -0500 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2014-06-01 22:43:24 -0500 |
commit | 18924654a3c052f20988870ca2da25ad857dc86e (patch) | |
tree | 177ffbe9d0ffbc8f384c0caa26052d8d3dad7dae /src/server/game/Handlers/QueryHandler.cpp | |
parent | 48ec2df81fa8f88cd32d7a79b587603aedbd89e0 (diff) | |
parent | 289a5c4318c5509eafeb36389a81bddc2ed349ca (diff) |
Merge branch '4.3.4' of github.com:TrinityCore/TrinityCore into 4.3.4_phases
Diffstat (limited to 'src/server/game/Handlers/QueryHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/QueryHandler.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index b2eb89efb31..ea30bcbab9b 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -411,19 +411,23 @@ void WorldSession::HandleQuestPOIQuery(WorldPacket& recvData) uint32 count; recvData >> count; // quest count, max=25 - if (count >= MAX_QUEST_LOG_SIZE) + if (count > MAX_QUEST_LOG_SIZE) { recvData.rfinish(); return; } - WorldPacket data(SMSG_QUEST_POI_QUERY_RESPONSE, 4+(4+4)*count); - data << uint32(count); // count - + // Read quest ids and add the in a unordered_set so we don't send POIs for the same quest multiple times + std::unordered_set<uint32> questIds; for (uint32 i = 0; i < count; ++i) + questIds.insert(recvData.read<uint32>()); // quest id + + WorldPacket data(SMSG_QUEST_POI_QUERY_RESPONSE, 4 + (4 + 4)*questIds.size()); + data << uint32(questIds.size()); // count + + for (auto itr = questIds.begin(); itr != questIds.end(); ++itr) { - uint32 questId; - recvData >> questId; // quest id + uint32 questId = *itr; bool questOk = false; |