Sure as long as you check if their still valid(ie not kicked or removed):
Code:
bool IsNull (edict_t *pEdict)
{
// thanx to PMB for this function
try
{
if (pEdict == NULL)
return true;
if (g_engfuncs.pfnEntOffsetOfPEntity (pEdict) == 0)
return true;
if (pEdict->free)
return true;
if (pEdict->v.flags & FL_KILLME)
return true;
}
catch (...)
{
#ifdef _DEBUG
FILE *fp = fopen("bot.txt", "a");
if(fp)
{
fprintf(fp, "IsNull(edict_t *) Error\n");
fclose(fp);
}
#endif
return true; // failed so assuming entity isn't valid...
}
return false;
}
and for players/bots specific
Code:
// Check if a player is valid
// CheckAlive(default true): check if this player is alive, if not return false
// CheckObserver(default true): If observer mode on and if this player is NOT a bot return false
bool UTIL_IsValidPlayer(CBasePlayer *pPlayer, bool CheckAlive, bool CheckObserver)
{
if (!pPlayer || !pPlayer->pev)
return false;
if (IsNull(pPlayer))
return false;
if ((CheckObserver) && (BotManager.ObserverMode()) && (!UTIL_IsBot(pPlayer)))
return false;
if (FStrEq(STRING(pPlayer->pev->netname),""))
return false;
if ((CheckAlive) && ((!pPlayer->IsAlive()) || (pPlayer->m_fObserverFlag)))
return false;
if (!(pPlayer->pev->flags & FL_CLIENT))
return false;
return true;
}