From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/EventLog.cpp | 257 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 mp/src/game/server/EventLog.cpp (limited to 'mp/src/game/server/EventLog.cpp') diff --git a/mp/src/game/server/EventLog.cpp b/mp/src/game/server/EventLog.cpp new file mode 100644 index 00000000..ffa8fd18 --- /dev/null +++ b/mp/src/game/server/EventLog.cpp @@ -0,0 +1,257 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#include "cbase.h" +#include "EventLog.h" +#include "team.h" +#include "KeyValues.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +CEventLog::CEventLog() +{ +} + +CEventLog::~CEventLog() +{ +} + + +void CEventLog::FireGameEvent( IGameEvent *event ) +{ + PrintEvent ( event ); +} + +bool CEventLog::PrintEvent( IGameEvent *event ) +{ + const char * name = event->GetName(); + + if ( Q_strncmp(name, "server_", strlen("server_")) == 0 ) + { + return true; // we don't care about server events (engine does) + } + else if ( Q_strncmp(name, "player_", strlen("player_")) == 0 ) + { + return PrintPlayerEvent( event ); + } + else if ( Q_strncmp(name, "team_", strlen("team_")) == 0 ) + { + return PrintTeamEvent( event ); + } + else if ( Q_strncmp(name, "game_", strlen("game_")) == 0 ) + { + return PrintGameEvent( event ); + } + else + { + return PrintOtherEvent( event ); // bomb_, round_, et al + } +} + +bool CEventLog::PrintGameEvent( IGameEvent *event ) +{ +// const char * name = event->GetName() + Q_strlen("game_"); // remove prefix + + return false; +} + +bool CEventLog::PrintPlayerEvent( IGameEvent *event ) +{ + const char * eventName = event->GetName(); + const int userid = event->GetInt( "userid" ); + + if ( !Q_strncmp( eventName, "player_connect", Q_strlen("player_connect") ) ) // player connect is before the CBasePlayer pointer is setup + { + const char *name = event->GetString( "name" ); + const char *address = event->GetString( "address" ); + const char *networkid = event->GetString("networkid" ); + UTIL_LogPrintf( "\"%s<%i><%s><>\" connected, address \"%s\"\n", name, userid, networkid, address); + return true; + } + else if ( !Q_strncmp( eventName, "player_disconnect", Q_strlen("player_disconnect") ) ) + { + const char *reason = event->GetString("reason" ); + const char *name = event->GetString("name" ); + const char *networkid = event->GetString("networkid" ); + CTeam *team = NULL; + CBasePlayer *pPlayer = UTIL_PlayerByUserId( userid ); + + if ( pPlayer ) + { + team = pPlayer->GetTeam(); + } + + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" disconnected (reason \"%s\")\n", name, userid, networkid, team ? team->GetName() : "", reason ); + return true; + } + + CBasePlayer *pPlayer = UTIL_PlayerByUserId( userid ); + if ( !pPlayer) + { + DevMsg( "CEventLog::PrintPlayerEvent: Failed to find player (userid: %i, event: %s)\n", userid, eventName ); + return false; + } + + if ( !Q_strncmp( eventName, "player_team", Q_strlen("player_team") ) ) + { + const bool bDisconnecting = event->GetBool( "disconnect" ); + + if ( !bDisconnecting ) + { + const int newTeam = event->GetInt( "team" ); + const int oldTeam = event->GetInt( "oldteam" ); + CTeam *team = GetGlobalTeam( newTeam ); + CTeam *oldteam = GetGlobalTeam( oldTeam ); + + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" joined team \"%s\"\n", + pPlayer->GetPlayerName(), + pPlayer->GetUserID(), + pPlayer->GetNetworkIDString(), + oldteam->GetName(), + team->GetName() ); + } + + return true; + } + else if ( !Q_strncmp( eventName, "player_death", Q_strlen("player_death") ) ) + { + const int attackerid = event->GetInt("attacker" ); + +#ifdef HL2MP + const char *weapon = event->GetString( "weapon" ); +#endif + + CBasePlayer *pAttacker = UTIL_PlayerByUserId( attackerid ); + CTeam *team = pPlayer->GetTeam(); + CTeam *attackerTeam = NULL; + + if ( pAttacker ) + { + attackerTeam = pAttacker->GetTeam(); + } + if ( pPlayer == pAttacker && pPlayer ) + { + +#ifdef HL2MP + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "", + weapon + ); +#else + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "", + pAttacker->GetClassname() + ); +#endif + } + else if ( pAttacker ) + { + CTeam *attackerTeam = pAttacker->GetTeam(); + +#ifdef HL2MP + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n", + pAttacker->GetPlayerName(), + attackerid, + pAttacker->GetNetworkIDString(), + attackerTeam ? attackerTeam->GetName() : "", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "", + weapon + ); +#else + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\"\n", + pAttacker->GetPlayerName(), + attackerid, + pAttacker->GetNetworkIDString(), + attackerTeam ? attackerTeam->GetName() : "", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "" + ); +#endif + } + else + { + // killed by the world + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" committed suicide with \"world\"\n", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "" + ); + } + return true; + } + else if ( !Q_strncmp( eventName, "player_activate", Q_strlen("player_activate") ) ) + { + UTIL_LogPrintf( "\"%s<%i><%s><>\" entered the game\n", + pPlayer->GetPlayerName(), + userid, + pPlayer->GetNetworkIDString() + ); + + return true; + } + else if ( !Q_strncmp( eventName, "player_changename", Q_strlen("player_changename") ) ) + { + const char *newName = event->GetString( "newname" ); + const char *oldName = event->GetString( "oldname" ); + CTeam *team = pPlayer->GetTeam(); + UTIL_LogPrintf( "\"%s<%i><%s><%s>\" changed name to \"%s\"\n", + oldName, + userid, + pPlayer->GetNetworkIDString(), + team ? team->GetName() : "", + newName + ); + return true; + } + +// ignored events +//player_hurt + return false; +} + +bool CEventLog::PrintTeamEvent( IGameEvent *event ) +{ +// const char * name = event->GetName() + Q_strlen("team_"); // remove prefix + + return false; +} + +bool CEventLog::PrintOtherEvent( IGameEvent *event ) +{ + return false; +} + + +bool CEventLog::Init() +{ + ListenForGameEvent( "player_changename" ); + ListenForGameEvent( "player_activate" ); + ListenForGameEvent( "player_death" ); + ListenForGameEvent( "player_team" ); + ListenForGameEvent( "player_disconnect" ); + ListenForGameEvent( "player_connect" ); + + return true; +} + +void CEventLog::Shutdown() +{ + StopListeningForAllEvents(); +} \ No newline at end of file -- cgit v1.2.3