diff options
Diffstat (limited to 'src')
5 files changed, 17 insertions, 23 deletions
diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index 0167aa08d30..d32eff862bb 100755 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -88,21 +88,6 @@ void LoadCreatureFormations() return; } - std::set<uint32> guidSet; - - QueryResult guidResult = WorldDatabase.PQuery("SELECT guid FROM creature"); - if (guidResult) - { - do - { - Field* fields = guidResult->Fetch(); - uint32 guid = fields[0].GetUInt32(); - - guidSet.insert(guid); - - } while (guidResult->NextRow()); - } - uint32 count = 0; Field* fields; FormationInfo* group_member; @@ -114,8 +99,8 @@ void LoadCreatureFormations() //Load group member data group_member = new FormationInfo; group_member->leaderGUID = fields[0].GetUInt32(); - uint32 memberGUID = fields[1].GetUInt32(); - group_member->groupAI = fields[4].GetUInt8(); + uint32 memberGUID = fields[1].GetUInt32(); + group_member->groupAI = fields[4].GetUInt8(); //If creature is group leader we may skip loading of dist/angle if (group_member->leaderGUID != memberGUID) { @@ -130,14 +115,14 @@ void LoadCreatureFormations() // check data correctness { - if (guidSet.find(group_member->leaderGUID) == guidSet.end()) + if (!sObjectMgr->GetCreatureData(group_member->leaderGUID)) { sLog->outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID); delete group_member; continue; } - if (guidSet.find(memberGUID) == guidSet.end()) + if (!sObjectMgr->GetCreatureData(memberGUID)) { sLog->outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID); delete group_member; diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 99317eb22b0..e2c8982ffd4 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -1018,12 +1018,12 @@ int WorldSocket::HandleAuthSession(WorldPacket& recvPacket) // Update the last_ip in the database - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(LOGIN_UPDATE_LAST_IP); + PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPDATE_LAST_IP); stmt->setString(0, address); stmt->setString(1, account); - CharacterDatabase.Execute(stmt); + LoginDatabase.Execute(stmt); // NOTE ATM the socket is single-threaded, have this in mind ... ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale, recruiter, isRecruiter), -1); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 853c03af07b..d53f2688fa5 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2728,7 +2728,9 @@ void World::SetPlayerSecurityLimit(AccountTypes _sec) void World::ResetWeeklyQuests() { - CharacterDatabase.Execute("DELETE FROM character_queststatus_weekly"); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_WEEKLY); + CharacterDatabase.Execute(stmt); + for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) if (itr->second->GetPlayer()) itr->second->GetPlayer()->ResetWeeklyQuestStatus(); @@ -2743,7 +2745,10 @@ void World::ResetWeeklyQuests() void World::ResetRandomBG() { sLog->outDetail("Random BG status reset for all characters."); - CharacterDatabase.Execute("DELETE FROM character_battleground_random"); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_BATTLEGROUND_RANDOM); + CharacterDatabase.Execute(stmt); + for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) if (itr->second->GetPlayer()) itr->second->GetPlayer()->SetRandomWinner(false); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index c48adb8c70a..fa12bb32f49 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -45,6 +45,8 @@ void CharacterDatabaseConnection::DoPrepareStatements() PREPARE_STATEMENT(CHAR_GET_FREE_NAME, "SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC); PREPARE_STATEMENT(CHAR_GET_GUID_RACE_ACC_BY_NAME, "SELECT guid, race, account FROM characters WHERE name = ?", CONNECTION_ASYNC); PREPARE_STATEMENT(CHAR_DEL_QUEST_STATUS_DAILY, "DELETE FROM character_queststatus_daily", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_DEL_QUEST_STATUS_WEEKLY, "DELETE FROM character_queststatus_weekly", CONNECTION_ASYNC); + PREPARE_STATEMENT(CHAR_DEL_BATTLEGROUND_RANDOM, "DELETE FROM character_battleground_random", CONNECTION_ASYNC); // Start LoginQueryHolder content PREPARE_STATEMENT(CHAR_LOAD_PLAYER, "SELECT guid, account, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags, " diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 7461e87f6d9..571bea9768b 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -65,6 +65,8 @@ enum CharacterDatabaseStatements CHAR_GET_FREE_NAME, CHAR_GET_GUID_RACE_ACC_BY_NAME, CHAR_DEL_QUEST_STATUS_DAILY, + CHAR_DEL_QUEST_STATUS_WEEKLY, + CHAR_DEL_BATTLEGROUND_RANDOM, CHAR_LOAD_PLAYER, CHAR_LOAD_PLAYER_GROUP, CHAR_LOAD_PLAYER_BOUNDINSTANCES, |