core/CPlayerManager.cpp
changeset 458 77520125ee67
parent 456 b181fc6f59c7
child 460 0be67c5566c6
     1.1 --- a/core/CPlayerManager.cpp	Thu Feb 08 21:41:28 2007 +0000
     1.2 +++ b/core/CPlayerManager.cpp	Fri Feb 09 01:08:59 2007 +0000
     1.3 @@ -14,6 +14,7 @@
     1.4  #include "CPlayerManager.h"
     1.5  #include "ForwardSys.h"
     1.6  #include "ShareSys.h"
     1.7 +#include "AdminCache.h"
     1.8  
     1.9  CPlayerManager g_Players;
    1.10  
    1.11 @@ -383,6 +384,26 @@
    1.12  	return GetPlayerByIndex(client);
    1.13  }
    1.14  
    1.15 +void CPlayerManager::ClearAdminId(AdminId id)
    1.16 +{
    1.17 +	for (int i=1; i<=m_maxClients; i++)
    1.18 +	{
    1.19 +		if (m_Players[i].m_Admin == id)
    1.20 +		{
    1.21 +			m_Players[i].DumpAdmin(true);
    1.22 +		}
    1.23 +	}
    1.24 +}
    1.25 +
    1.26 +void CPlayerManager::ClearAllAdmins()
    1.27 +{
    1.28 +	for (int i=1; i<=m_maxClients; i++)
    1.29 +	{
    1.30 +		m_Players[i].DumpAdmin(true);
    1.31 +	}
    1.32 +}
    1.33 +
    1.34 +
    1.35  /*******************
    1.36   *** PLAYER CODE ***
    1.37   *******************/
    1.38 @@ -393,6 +414,8 @@
    1.39  	m_IsInGame = false;
    1.40  	m_IsAuthorized = false;
    1.41  	m_pEdict = NULL;
    1.42 +	m_Admin = INVALID_ADMIN_ID;
    1.43 +	m_TempAdmin = false;
    1.44  }
    1.45  
    1.46  void CPlayer::Initialize(const char *name, const char *ip, edict_t *pEntity)
    1.47 @@ -416,6 +439,7 @@
    1.48  
    1.49  void CPlayer::Disconnect()
    1.50  {
    1.51 +	DumpAdmin(false);
    1.52  	m_IsConnected = false;
    1.53  	m_IsInGame = false;
    1.54  	m_IsAuthorized = false;
    1.55 @@ -469,3 +493,34 @@
    1.56  {
    1.57  	return (strcmp(m_AuthID.c_str(), "BOT") == 0);
    1.58  }
    1.59 +
    1.60 +void CPlayer::SetAdminId(AdminId id, bool temporary)
    1.61 +{
    1.62 +	if (!m_IsConnected)
    1.63 +	{
    1.64 +		return;
    1.65 +	}
    1.66 +
    1.67 +	DumpAdmin(false);
    1.68 +
    1.69 +	m_Admin = id;
    1.70 +	m_TempAdmin = temporary;
    1.71 +}
    1.72 +
    1.73 +AdminId CPlayer::GetAdminId() const
    1.74 +{
    1.75 +	return m_Admin;
    1.76 +}
    1.77 +
    1.78 +void CPlayer::DumpAdmin(bool deleting)
    1.79 +{
    1.80 +	if (m_Admin != INVALID_ADMIN_ID)
    1.81 +	{
    1.82 +		if (m_TempAdmin && !deleting)
    1.83 +		{
    1.84 +			g_Admins.InvalidateAdmin(m_Admin);
    1.85 +		}
    1.86 +		m_Admin = INVALID_ADMIN_ID;
    1.87 +		m_TempAdmin = false;
    1.88 +	}
    1.89 +}