3 * ===============================================================
4 * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
5 * ===============================================================
7 * This file is not open source and may not be copied without explicit
8 * written permission of AlliedModders LLC. This file may not be redistributed
9 * in whole or significant part.
10 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
15 #ifndef _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_
16 #define _INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_
18 #include "sm_globals.h"
20 #include "sourcemm_api.h"
21 #include <IForwardSys.h>
22 #include <IPlayerHelpers.h>
23 #include <IAdminSystem.h>
24 #include <sh_string.h>
26 #include <sh_vector.h>
28 using namespace SourceHook;
30 class CPlayer : public IGamePlayer
32 friend class PlayerManager;
36 const char *GetName();
37 const char *GetIPAddress();
38 const char *GetAuthString();
44 void SetAdminId(AdminId id, bool temporary);
47 IPlayerInfo *GetPlayerInfo();
49 void Initialize(const char *name, const char *ip, edict_t *pEntity);
51 void Authorize(const char *steamid);
53 void SetName(const char *name);
54 void DumpAdmin(bool deleting);
75 public: //SMGlobalClass
76 void OnSourceModAllInitialized();
77 void OnSourceModShutdown();
78 void OnSourceModLevelEnd();
80 CPlayer *GetPlayerByIndex(int client) const;
82 void ClearAdminId(AdminId id);
83 void ClearAllAdmins();
85 bool OnClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen);
86 bool OnClientConnect_Post(edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen);
87 void OnClientPutInServer(edict_t *pEntity, char const *playername);
88 void OnClientDisconnect(edict_t *pEntity);
89 void OnClientDisconnect_Post(edict_t *pEntity);
90 void OnClientCommand(edict_t *pEntity);
91 void OnClientSettingsChanged(edict_t *pEntity);
92 public: //IPlayerManager
93 void AddClientListener(IClientListener *listener);
94 void RemoveClientListener(IClientListener *listener);
95 IGamePlayer *GetGamePlayer(int client);
96 IGamePlayer *GetGamePlayer(edict_t *pEdict);
99 int GetClientOfUserId(int userid);
101 inline int MaxClients()
105 inline int NumPlayers()
107 return m_PlayerCount;
110 void OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax);
112 List<IClientListener *> m_hooks;
113 IForward *m_clconnect;
114 IForward *m_cldisconnect;
115 IForward *m_cldisconnect_post;
116 IForward *m_clputinserver;
117 IForward *m_clcommand;
118 IForward *m_clinfochanged;
120 IForward *m_onActivate;
121 IForward *m_onActivate2;
127 unsigned int *m_AuthQueue;
130 extern PlayerManager g_Players;
131 extern bool g_OnMapStarted;
133 #endif //_INCLUDE_SOURCEMOD_CPLAYERMANAGER_H_