aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/ArenaTeamMgr.cpp14
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);