PHP Code:
int aPlayers[32];
int iNum = 0;
for (int i = 1; i <= gpGlobals->maxClients; ++i)
{
edict_t *pPlayer = INDEXENT( i );
if( IS_VALID_ENT( pPlayer ) )
{
if (!IsAlive( pPlayer ) )
continue;
aPlayers[iNum++] = i;
}
}
if( !iNum) return;
int iPlayer = aPlayers[rand() % iNum];
UTIL_ColorChat( INDEXENT( iPlayer ) , "Index %d", iPlayer);
PHP Code:
inline bool IsAlive(edict_t *pEdict)
{
return ((pEdict->v.deadflag == DEAD_NO) && (pEdict->v.health > 0));
}
PHP Code:
bool IS_VALID_ENT(const edict_t* ent)
{
if(FNullEnt(ent))
{
return false;
}
int iEnt = ENTINDEX(ent);
if (iEnt < 1 || iEnt > gpGlobals->maxEntities)
return false;
if (iEnt <= gpGlobals->maxClients)
{
if (!IS_PLAYER_VALID[iEnt])
{
return false;
}
}
return true;
}
IS_PLAYER_VALID - Connect true \ Disconnect false
It works, but the server can crash, what's the problem?
__________________