void ArenaTeamMgr::DistributeArenaPoints() { // Used to distribute arena points based on last week's stats sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_START); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_START); // Temporary structure for storing maximum points to add values for all players std::map<uint32, uint32> PlayerPoints; // At first update all points for all team members for (ArenaTeamContainer::iterator teamItr = GetArenaTeamMapBegin(); teamItr != GetArenaTeamMapEnd(); ++teamItr) if (ArenaTeam* at = teamItr->second) { at->UpdateArenaPointsHelper(PlayerPoints); sScriptMgr->OnBeforeUpdateArenaPoints(at, PlayerPoints); } SQLTransaction trans = CharacterDatabase.BeginTransaction(); PreparedStatement* stmt; // Cycle that gives points to all players for (std::map<uint32, uint32>::iterator playerItr = PlayerPoints.begin(); playerItr != PlayerPoints.end(); ++playerItr) { // Add points to player if online if (Player* player = HashMapHolder<Player>::Find(playerItr->first)) player->ModifyArenaPoints(playerItr->second, &trans); else // Update database { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ARENA_POINTS); stmt->setUInt32(0, playerItr->second); stmt->setUInt32(1, playerItr->first); trans->Append(stmt); } } CharacterDatabase.CommitTransaction(trans); PlayerPoints.clear(); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_START); for (ArenaTeamContainer::iterator titr = GetArenaTeamMapBegin(); titr != GetArenaTeamMapEnd(); ++titr) { if (ArenaTeam* at = titr->second) { at->FinishWeek(); at->SaveToDB(); at->NotifyStatsChanged(); } } sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_END); }
void ArenaTeamMgr::DistributeArenaPoints() { // Used to distribute arena points based on last week's stats sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_START); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_START); // Temporary structure for storing maximum points to add values for all players std::map<uint32, uint32> PlayerPoints; // At first update all points for all team members for (ArenaTeamContainer::iterator teamItr = GetArenaTeamMapBegin(); teamItr != GetArenaTeamMapEnd(); ++teamItr) if (ArenaTeam* at = teamItr->second) at->UpdateArenaPointsHelper(PlayerPoints); SQLTransaction trans = CharacterDatabase.BeginTransaction(); // Cycle that gives points to all players //TODO: Fix it after implementing ModifyConquestPoints //for (std::map<uint32, uint32>::iterator playerItr = PlayerPoints.begin(); playerItr != PlayerPoints.end(); ++playerItr) //{ // // Add points to player if online // if (Player* player = HashMapHolder<Player>::Find(playerItr->first)) // player->ModifyConquestPoints(playerItr->second, &trans); // else // Update database // trans->PAppend("UPDATE characters SET conquestPoints = conquestPoints + %u WHERE guid=%u", playerItr->second, playerItr->first); //} CharacterDatabase.CommitTransaction(trans); PlayerPoints.clear(); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_START); for (ArenaTeamContainer::iterator titr = GetArenaTeamMapBegin(); titr != GetArenaTeamMapEnd(); ++titr) { if (ArenaTeam* at = titr->second) { at->FinishWeek(); at->SaveToDB(); at->NotifyStatsChanged(); } } sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_END); }
void ArenaTeamMgr::DistributeArenaPoints() { // Used to distribute arena points based on last week's stats sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_START); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_START); // Temporary structure for storing maximum points to add values for all players std::map<uint32, uint32> PlayerPoints; // At first update all points for all team members for (ArenaTeamContainer::iterator teamItr = GetArenaTeamMapBegin(); teamItr != GetArenaTeamMapEnd(); ++teamItr) if (ArenaTeam * at = teamItr->second) at->UpdateArenaPointsHelper(PlayerPoints); // 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 = sObjectMgr->GetPlayer(playerItr->first); // if (pl) // pl->ModifyArenaPoints(playerItr->second); //} PlayerPoints.clear(); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_ONLINE_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_START); for (ArenaTeamContainer::iterator titr = GetArenaTeamMapBegin(); titr != GetArenaTeamMapEnd(); ++titr) { if (ArenaTeam * at = titr->second) { at->FinishWeek(); at->SaveToDB(); at->NotifyStatsChanged(); } } sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_TEAM_END); sWorld->SendWorldText(LANG_DIST_ARENA_POINTS_END); }
void ArenaTeamMgr::WeekReset() { for (ArenaTeamContainer::iterator titr = GetArenaTeamMapBegin(); titr != GetArenaTeamMapEnd(); ++titr) { if (ArenaTeam * at = titr->second) { at->FinishWeek(); at->SaveToDB(); at->NotifyStatsChanged(); } } }