View Single Post
Emil
Junior Member
Join Date: May 2010
Location: Skövde, Sweden
Old 05-25-2017 , 15:08   Re: Get num players and player info
Reply With Quote #2

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

Last edited by Emil; 05-25-2017 at 16:21.
Emil is offline
Send a message via Skype™ to Emil