diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /sp/src/game/server/EventLog.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/game/server/EventLog.cpp')
| -rw-r--r-- | sp/src/game/server/EventLog.cpp | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/sp/src/game/server/EventLog.cpp b/sp/src/game/server/EventLog.cpp new file mode 100644 index 00000000..ffa8fd18 --- /dev/null +++ b/sp/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 |