You can get player info via IPlayerInfoManager
Code:
bool CSGOPlugin::Load(CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory)
{
ConnectTier1Libraries( &interfaceFactory, 1 );
// Set engine globals
g_playerinfomanager = (IPlayerInfoManager *)gameServerFactory(INTERFACEVERSION_PLAYERINFOMANAGER, NULL);
int g_maxPlayers = g_playerinfomanager->GetGlobalVars()->maxClients();
}
Save info on connect / disconnect
Code:
PLUGIN_RESULT CSGOPlugin::ClientConnect(bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen)
{
IPlayerInfo* info = g_playerinfomanager->GetPlayerInfo(pEntity);
}
void Players::ClientDisconnect(edict_t *pEntity)
{
}
Well i guess you can iterate through all entitys to get all players without saving on connect/disconnect.
Code:
void CSGOPlugin::CheckPlayers(void)
{
for(int i = 0; i<g_playerinfomanager->GetGlobalVars()->maxEntities; ++i)
{
edict_t* pEntity = g_playerinfomanager->GetGlobalVars()->pEdicts + i;
if(pEntity == NULL){
continue;
}
if(pEntity->IsFree()){
continue;
}
IPlayerInfo* info = g_playerinfomanager->GetPlayerInfo(pEntity);
if(info != NULL)
{
//do something with info
}
}
}