Core/Arena: Players online but not in world will now gain their arena points as intended

This commit is contained in:
Shauren
2011-09-02 16:09:32 +02:00
parent b5cfd08a10
commit e3f4cca534
@@ -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);