[Include] PlayerLoop - Skips unconnected players
#1

Loop through the connected players only, instead of looping through every playerid with this tiny script.
pawn Код:
/******************************************************************************/

new pl_Players[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...},
    pl_Connected,
    pl_MaxPlayers;

/******************************************************************************/

#define GetIndexPlayerID(%0) pl_Players[%0]
#define GetConnectedPlayers pl_Connected

/******************************************************************************/

public OnFilterScriptInit()
{
    pl_MaxPlayers = GetMaxPlayers();
    for(new playerid; playerid < pl_MaxPlayers; playerid ++)
    {
        if(IsPlayerConnected(playerid))
        {
            pl_Players[pl_Connected] = playerid;
            pl_Connected ++;
        }
    }
    #if defined pl_OnFilterScriptInit
        return pl_OnFilterScriptInit();
    #else
        return 1;
    #endif
}
#if defined pl_OnFilterScriptInit
    forward pl_OnFilterScriptInit();
#endif
#if defined _ALS_OnFilterScriptInit
    #undef OnFilterScriptInit
#else
    #define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit pl_OnFilterScriptInit

/******************************************************************************/

public OnGameModeInit()
{
    pl_MaxPlayers = GetMaxPlayers();
    #if defined pl_OnGameModeInit
        return pl_OnGameModeInit();
    #else
        return 1;
    #endif
}
#if defined pl_OnGameModeInit
    forward pl_OnGameModeInit();
#endif
#if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
#else
    #define _ALS_OnGameModeInit
#endif
#define OnGameModeInit pl_OnGameModeInit

/******************************************************************************/

public OnPlayerConnect(playerid)
{
    pl_Players[pl_Connected] = playerid;
    pl_Connected ++;
    #if defined pl_OnPlayerConnect
        return pl_OnPlayerConnect(playerid);
    #else
        return 1;
    #endif
}
#if defined pl_OnPlayerConnect
    forward pl_OnPlayerConnect(playerid);
#endif
#if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
#else
    #define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect pl_OnPlayerConnect

/******************************************************************************/

public OnPlayerDisconnect(playerid, reason)
{
    pl_Connected = 0;
    for(new id; id < pl_MaxPlayers; id ++)
    {
        if(IsPlayerConnected(id) && playerid != id)
        {
            pl_Players[pl_Connected] = id;
            pl_Connected ++;
        }
    }
    for(new index = pl_Connected; index < pl_MaxPlayers; index ++)
        pl_Players[index] = INVALID_PLAYER_ID;
    #if defined pl_OnPlayerDisconnect
        return pl_OnPlayerDisconnect(playerid, reason);
    #else
        return 1;
    #endif
}
#if defined pl_OnPlayerDisconnect
    forward pl_OnPlayerDisconnect(playerid, reason);
#endif
#if defined _ALS_OnPlayerDisconnect
    #undef OnPlayerDisconnect
#else
    #define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect pl_OnPlayerDisconnect

/******************************************************************************/
Example usage:
pawn Код:
for(new i = 0; i < GetConnectedPlayers; i ++)
{
    new playerid = GetIndexPlayerID(i);
    printf("playerid %i is connected", playerid);
}
Reply


Messages In This Thread
PlayerLoop - Skip unconnected players - by RedFusion - 19.06.2014, 14:28
Re: PlayerLoop - Skips unconnected players - by Richie© - 19.06.2014, 14:50
Re: PlayerLoop - Skips unconnected players - by SimonItaly - 19.06.2014, 15:12
Re: PlayerLoop - Skips unconnected players - by RedFusion - 19.06.2014, 15:21
Respuesta: PlayerLoop - Skips unconnected players - by Swedky - 19.06.2014, 15:55
Re: PlayerLoop - Skips unconnected players - by Kar - 19.06.2014, 18:51
Re: PlayerLoop - Skips unconnected players - by RedFusion - 19.06.2014, 19:01
Re: PlayerLoop - Skips unconnected players - by [WSF]ThA_Devil - 19.06.2014, 19:05
Re: PlayerLoop - Skips unconnected players - by Kar - 19.06.2014, 19:07
Re: PlayerLoop - Skips unconnected players - by RedFusion - 19.06.2014, 19:13
Re: PlayerLoop - Skips unconnected players - by Kar - 19.06.2014, 19:52
Re: PlayerLoop - Skips unconnected players - by RedFusion - 19.06.2014, 19:58
Re: PlayerLoop - Skips unconnected players - by Kar - 19.06.2014, 20:43
Re: PlayerLoop - Skips unconnected players - by iRaiDeN - 20.06.2014, 19:21
Re: PlayerLoop - Skips unconnected players - by StreetGT - 20.06.2014, 20:27
Re: PlayerLoop - Skips unconnected players - by iRaiDeN - 20.06.2014, 20:37
Re: PlayerLoop - Skips unconnected players - by Patrick - 20.06.2014, 20:45
Re: PlayerLoop - Skips unconnected players - by iRaiDeN - 20.06.2014, 20:48
Re: PlayerLoop - Skips unconnected players - by RedFusion - 21.06.2014, 11:23
Re : PlayerLoop - Skips unconnected players - by S4t3K - 21.06.2014, 11:54

Forum Jump:


Users browsing this thread: 1 Guest(s)