From 38c6880d93327ca18c92b6c03bae6629de8592b3 Mon Sep 17 00:00:00 2001 From: krz Date: Mon, 1 Jun 2009 20:44:23 +0200 Subject: [PATCH] Detailed log of arena fights and arena team creation. --HG-- branch : trunk --- src/game/ArenaTeam.cpp | 10 +++++++++- src/game/BattleGround.cpp | 4 +++- src/shared/Log.cpp | 23 ++++++++++++++++++++++- src/shared/Log.h | 7 +++++++ src/trinitycore/trinitycore.conf.dist | 5 +++++ 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp index 747ad811b8..73d782a3e3 100644 --- a/src/game/ArenaTeam.cpp +++ b/src/game/ArenaTeam.cpp @@ -74,6 +74,7 @@ bool ArenaTeam::Create(uint64 captainGuid, uint32 type, std::string ArenaTeamNam CharacterDatabase.CommitTransaction(); AddMember(CaptainGuid); + sLog.outArena("New ArenaTeam created [Id: %u] [Type: %u] [Captain GUID: %u]", GetId(), GetType(), GetCaptain()); return true; } @@ -143,6 +144,7 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid) // hide promote/remove buttons if(CaptainGuid != PlayerGuid) pl->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * 6) + 1, 1); + sLog.outArena("Player: %s [GUID: %u] joined arena team type: %u [Id: %u].", pl->GetName(), pl->GetGUID(), GetType(), GetId()); } return true; } @@ -249,7 +251,10 @@ void ArenaTeam::SetCaptain(const uint64& guid) // enable remove/promote buttons Player *newcaptain = objmgr.GetPlayer(guid); if(newcaptain) + { newcaptain->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 1 + (GetSlot() * 6), 0); + sLog.outArena("Player: %s [GUID: %u] promoted player: %s [GUID: %u] to leader of arena team [Id: %u] [Type: %u].", oldcaptain->GetName(), oldcaptain->GetGUID(), newcaptain->GetName(), newcaptain->GetGUID(), GetId(), GetType()); + } } void ArenaTeam::DelMember(uint64 guid) @@ -274,8 +279,8 @@ void ArenaTeam::DelMember(uint64 guid) { player->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * 6) + i, 0); } + sLog.outArena("Player: %s [GUID: %u] left arena team type: %u [Id: %u].", player->GetName(), guid, GetType(), GetId()); } - CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u' AND guid = '%u'", GetId(), GUID_LOPART(guid)); } @@ -292,6 +297,9 @@ void ArenaTeam::Disband(WorldSession *session) DelMember(members.front().guid); } + if(Player *player = session->GetPlayer()) + sLog.outArena("Player: %s [GUID: %u] disbanded arena team type: %u [Id: %u].", player->GetName(), player->GetGUID(), GetType(), GetId()); + CharacterDatabase.BeginTransaction(); CharacterDatabase.PExecute("DELETE FROM arena_team WHERE arenateamid = '%u'", Id); CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", Id); //< this should be alredy done by calling DelMember(memberGuids[j]); for each member diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 695b32fd2d..822606d9a8 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -516,6 +516,7 @@ void BattleGround::EndBattleGround(uint32 winner) SetArenaTeamRatingChangeForTeam(HORDE, winner_change); SetArenaTeamRatingChangeForTeam(ALLIANCE, loser_change); } + sLog.outArena("Arena match Type: %u for Team1Id: %u - Team2Id: %u ended. WinnerTeamId: %u. RatingChange: %i.", m_ArenaType, m_ArenaTeamIds[BG_TEAM_ALLIANCE], m_ArenaTeamIds[BG_TEAM_HORDE], winner_arena_team->GetId(), winner_change); } else { @@ -928,8 +929,9 @@ void BattleGround::StartBattleGround() { ///this method should spawn spirit guides and so on SetStartTime(0); - SetLastResurrectTime(0); + if(m_IsRated) + sLog.outArena("Arena match type: %u for Team1Id: %u - Team2Id: %u started.", m_ArenaType, m_ArenaTeamIds[BG_TEAM_ALLIANCE], m_ArenaTeamIds[BG_TEAM_HORDE]); } void BattleGround::AddPlayer(Player *plr) diff --git a/src/shared/Log.cpp b/src/shared/Log.cpp index d042be82b7..46bef6b469 100644 --- a/src/shared/Log.cpp +++ b/src/shared/Log.cpp @@ -40,7 +40,7 @@ const int LogType_count = int(LogError) +1; Log::Log() : raLogfile(NULL), logfile(NULL), gmLogfile(NULL), charLogfile(NULL), - dberLogfile(NULL), m_colored(false), m_includeTime(false), m_gmlog_per_account(false) + dberLogfile(NULL), arenaLogFile(NULL), m_colored(false), m_includeTime(false), m_gmlog_per_account(false) { Initialize(); } @@ -231,6 +231,8 @@ void Log::Initialize() dberLogfile = openLogFile("DBErrorLogFile",NULL,"a"); raLogfile = openLogFile("RaLogFile",NULL,"a"); + arenaLogFile = openLogFile("ArenaLogFile",NULL,"a"); + // Main log file settings m_includeTime = sConfig.GetBoolDefault("LogTime", false); m_logLevel = sConfig.GetIntDefault("LogLevel", 0); @@ -248,6 +250,7 @@ void Log::Initialize() // Char log settings m_charLog_Dump = sConfig.GetBoolDefault("CharLogDump", false); + } FILE* Log::openLogFile(char const* configFileName,char const* configTimeStampFlag, char const* mode) @@ -423,6 +426,24 @@ void Log::outError( const char * err, ... ) fflush(stderr); } +void Log::outArena( const char * str, ... ) +{ + if( !str ) + return; + + if(arenaLogFile) + { + va_list ap; + outTimestamp(arenaLogFile); + va_start(ap, str); + vfprintf(arenaLogFile, str, ap); + fprintf(arenaLogFile, "\n" ); + va_end(ap); + fflush(arenaLogFile); + } + fflush(stdout); +} + void Log::outErrorDb( const char * err, ... ) { if( !err ) diff --git a/src/shared/Log.h b/src/shared/Log.h index ab8c24571f..f81a95661d 100644 --- a/src/shared/Log.h +++ b/src/shared/Log.h @@ -81,6 +81,10 @@ class Log : public Trinity::Singleton