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 +}