Ejemplo n.º 1
0
bool CHLTVClientState::ProcessGameEvent( SVC_GameEvent *msg )
{
	bf_read tmpBuf = msg->m_DataIn;

	IGameEvent *event = g_GameEventManager.UnserializeEvent( &tmpBuf );

	if ( event )
	{
		const char *pszName = event->GetName();

		bool bDontForward = false;

		if ( Q_strcmp( pszName, "hltv_status" ) == 0 )
		{
			m_pHLTV->m_nGlobalSlots = event->GetInt("slots");;
			m_pHLTV->m_nGlobalProxies = event->GetInt("proxies");
			m_pHLTV->m_nGlobalClients = event->GetInt("clients");
			m_pHLTV->m_RootServer.SetFromString( event->GetString("master") );
			bDontForward = true;
		}
		else if ( Q_strcmp( pszName, "hltv_title" ) == 0 )
		{
			// ignore title messages
			bDontForward = true;
		}

		// free event resources
		g_GameEventManager.FreeEvent( event );

		if ( bDontForward )
			return true;
	}

	// forward event
	CopyDataInToOut( msg );

	return m_pHLTV->SendNetMsg( *msg ); // relay to server
}