diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-09-02 16:09:32 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-09-02 16:09:32 +0200 |
commit | e3f4cca534752851775f5174901fb8a43460cdbb (patch) | |
tree | 4e4b5a397de23282d94ca1df7dc588e5cebea425 /src | |
parent | b5cfd08a1038be3d63e7754384ea27eb8a9798b4 (diff) |
Core/Arena: Players online but not in world will now gain their arena points as intended
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlegrounds/ArenaTeamMgr.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index 70be3b52238..59f31e36971 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -146,18 +146,20 @@ void ArenaTeamMgr::DistributeArenaPoints() if (ArenaTeam * at = teamItr->second) at->UpdateArenaPointsHelper(PlayerPoints); + SQLTransaction trans = CharacterDatabase.BeginTransaction(); + // Cycle that gives points to all players for (std::map<uint32, uint32>::iterator playerItr = PlayerPoints.begin(); playerItr != PlayerPoints.end(); ++playerItr) { - // Update database - CharacterDatabase.PExecute("UPDATE characters SET arenaPoints = arenaPoints + '%u' WHERE guid = '%u'", playerItr->second, playerItr->first); - // Add points to player if online - Player* pl = ObjectAccessor::FindPlayer(playerItr->first); - if (pl) - pl->ModifyArenaPoints(playerItr->second); + if (Player* player = HashMapHolder<Player>::Find(playerItr->first)) + player->ModifyArenaPoints(playerItr->second, &trans); + else // Update database + trans->PAppend("UPDATE characters SET arenaPoints=arenaPoints+%u WHERE guid=%u", playerItr->second, playerItr->first); } + CharacterDatabase.CommitTransaction(trans); + PlayerPoints.clear(); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_END); |