diff options
Diffstat (limited to 'src/server/game/Pools/PoolMgr.cpp')
-rw-r--r-- | src/server/game/Pools/PoolMgr.cpp | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index 0d057a7ce4d..9eb21c63e56 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -818,7 +818,8 @@ void PoolMgr::LoadFromDB() void PoolMgr::LoadQuestPools() { - QueryResult result = WorldDatabase.Query("SELECT entry, pool_entry FROM pool_quest"); + PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_LOAD_QUEST_POOLS); + PreparedQueryResult result = WorldDatabase.Query(stmt); mQuestSearchMap.clear(); mPoolQuestGroups.resize(max_pool_id + 1); @@ -849,11 +850,10 @@ void PoolMgr::LoadQuestPools() do { - Field* fields = result->Fetch(); bar.step(); - uint32 entry = fields[0].GetUInt32(); - uint32 pool_id = fields[1].GetUInt32(); + uint32 entry = result->GetUInt32(0); + uint32 pool_id = result->GetUInt32(1); Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry); if (!pQuest) @@ -914,7 +914,7 @@ void PoolMgr::LoadQuestPools() void PoolMgr::Initialize() { QueryResult result = WorldDatabase.Query("SELECT DISTINCT pool_template.entry, pool_pool.pool_id, pool_pool.mother_pool FROM pool_template LEFT JOIN game_event_pool ON pool_template.entry=game_event_pool.pool_entry LEFT JOIN pool_pool ON pool_template.entry=pool_pool.pool_id WHERE game_event_pool.pool_entry IS NULL"); - uint32 count=0; + uint32 count = 0; if (result) { do @@ -949,39 +949,25 @@ void PoolMgr::Initialize() void PoolMgr::SaveQuestsToDB() { SQLTransaction trans = CharacterDatabase.BeginTransaction(); - std::ostringstream query; - query << "DELETE FROM pool_quest_save WHERE pool_id IN ("; - bool first = true; + for (PoolGroupQuestMap::iterator itr = mPoolQuestGroups.begin(); itr != mPoolQuestGroups.end(); ++itr) { - if (!first) - query << ","; - first = false; - query << itr->GetPoolId(); - } - if (!first) - { - query << ")"; - trans->Append(query.str().c_str()); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_POOL_SAVE); + stmt->setUInt32(0, itr->GetPoolId()); + trans->Append(stmt); } - first = true; - query.rdbuf()->str(""); - query << "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES "; for (SearchMap::iterator itr = mQuestSearchMap.begin(); itr != mQuestSearchMap.end(); ++itr) { if (IsSpawnedObject<Quest>(itr->first)) { - if (!first) - query << ","; - first = false; - query << "(" << itr->second << "," << itr->first << ")"; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_QUEST_POOL_SAVE); + stmt->setUInt32(0, itr->second); + stmt->setUInt32(1, itr->first); + trans->Append(stmt); } } - if (!first) - trans->Append(query.str().c_str()); - CharacterDatabase.CommitTransaction(trans); } |