diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-05 05:54:10 +0200 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2015-04-05 05:54:53 +0200 |
commit | 4359c4c75886ed227b8e14aadc0f37efc23d0341 (patch) | |
tree | 08128bec8c640a04d353993902b3e92e0a0fd383 /src/server/game/Globals/ObjectMgr.cpp | |
parent | d1902b40957c4ce6eb0f20a48d6bb86822d96bd0 (diff) |
Core/PacketIO: Updated and enabled CMSG_QUEST_POI_QUERY / SMSG_QUEST_POI_QUERY_RESPONSE
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index feb419a011a..de6adc04fb1 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6802,45 +6802,45 @@ void ObjectMgr::LoadQuestPOI() { uint32 oldMSTime = getMSTime(); - _questPOIStore.clear(); // need for reload case + _questPOIStore.clear(); // need for reload case uint32 count = 0; - // 0 1 2 3 4 5 6 7 - QueryResult result = WorldDatabase.Query("SELECT questId, id, objIndex, mapid, WorldMapAreaId, FloorId, unk3, unk4 FROM quest_poi order by questId"); - + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1 FROM quest_poi order by QuestID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 quest POI definitions. DB table `quest_poi` is empty."); return; } - // 0 1 2 3 - QueryResult points = WorldDatabase.Query("SELECT questId, id, x, y FROM quest_poi_points ORDER BY questId DESC, idx"); + // 0 1 2 3 4 + QueryResult points = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, X, Y FROM quest_poi_points ORDER BY QuestID DESC, Idx1, Idx2"); - std::vector<std::vector<std::vector<QuestPOIPoint> > > POIs; + std::vector<std::vector<std::vector<QuestPOIPoint>>> POIs; if (points) { // The first result should have the highest questId Field* fields = points->Fetch(); - uint32 questIdMax = fields[0].GetUInt32(); + uint32 questIdMax = fields[0].GetInt32(); POIs.resize(questIdMax + 1); do { fields = points->Fetch(); - uint32 questId = fields[0].GetUInt32(); - uint32 id = fields[1].GetUInt32(); - int32 x = fields[2].GetInt32(); - int32 y = fields[3].GetInt32(); + int32 QuestID = fields[0].GetInt32(); + int32 BlobIndex = fields[1].GetInt32(); + int32 Idx1 = fields[2].GetInt32(); + int32 X = fields[3].GetInt32(); + int32 Y = fields[4].GetInt32(); - if (POIs[questId].size() <= id + 1) - POIs[questId].resize(id + 10); + if (POIs[QuestID].size() <= Idx1 + 1) + POIs[QuestID].resize(Idx1 + 10); - QuestPOIPoint point(x, y); - POIs[questId][id].push_back(point); + QuestPOIPoint point(X, Y); + POIs[QuestID][Idx1].push_back(point); } while (points->NextRow()); } @@ -6848,23 +6848,29 @@ void ObjectMgr::LoadQuestPOI() { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); - uint32 id = fields[1].GetUInt32(); - int32 objIndex = fields[2].GetInt32(); - uint32 mapId = fields[3].GetUInt32(); - uint32 WorldMapAreaId = fields[4].GetUInt32(); - uint32 FloorId = fields[5].GetUInt32(); - uint32 unk3 = fields[6].GetUInt32(); - uint32 unk4 = fields[7].GetUInt32(); - - QuestPOI POI(id, objIndex, mapId, WorldMapAreaId, FloorId, unk3, unk4); - if (questId < POIs.size() && id < POIs[questId].size()) - { - POI.points = POIs[questId][id]; - _questPOIStore[questId].push_back(POI); + int32 QuestID = fields[0].GetInt32(); + int32 BlobIndex = fields[1].GetInt32(); + int32 Idx1 = fields[2].GetInt32(); + int32 ObjectiveIndex = fields[3].GetInt32(); + int32 QuestObjectiveID = fields[4].GetInt32(); + int32 QuestObjectID = fields[5].GetInt32(); + int32 MapID = fields[6].GetInt32(); + int32 WorldMapAreaId = fields[7].GetInt32(); + int32 Floor = fields[8].GetInt32(); + int32 Priority = fields[8].GetInt32(); + int32 Flags = fields[9].GetInt32(); + int32 WorldEffectID = fields[10].GetInt32(); + int32 PlayerConditionID = fields[12].GetInt32(); + int32 WoDUnk1 = fields[13].GetInt32(); + + QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1); + if (QuestID < POIs.size() && Idx1 < POIs[QuestID].size()) + { + POI.points = POIs[QuestID][Idx1]; + _questPOIStore[QuestID].push_back(POI); } else - TC_LOG_ERROR("server.loading", "Table quest_poi references unknown quest points for quest %u POI id %u", questId, id); + TC_LOG_ERROR("server.loading", "Table quest_poi references unknown quest points for quest %i POI id %i", QuestID, BlobIndex); ++count; } while (result->NextRow()); |