loop all online names
#1

hi,

im just trying to script an admin function that lists all names of all players currently on the server.
This should be displayed via SendClientMessage.
But how to get all names? How to loop this?
This is what i got so far:

pawn Код:
if (strcmp("/iplist", cmdtext, true) == 0)
{
if(Spieler[playerid][AdminLevel] > 0)//checking if player is admin
{
for(new i; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i))
    {

new String[128],name[ 30 ];
GetPlayerName( i, name, 30);
format(String,sizeof(String),"Player %s",name);
SendClientMessage(playerid,0xAA3333AA,String);
}
}

}else return SendClientMessage(playerid, 0xFF0000FF, "You are not an admin!");

return 1;
}
e.g. if there are 3 players online: tom,betty,jack.
In this case it would send 3 ClientMessages to the admin that wrote this command like this.
PHP код:
Player tom
Player betty
Player jack 
regards...
Reply
#2

I do not understand what's wrong.
Reply
#3

it only sends me one single name (my name only) and not all names of all players currently playing on the server.
Reply
#4

pawn Код:
COMMAND:iplist( playerid, params[ ] )
{
    if ( Spieler[ playerid ][ AdminLevel ] > 0 )
    {
        new
            string[ MAX_PLAYER_NAME + 10 ],
            name[ MAX_PLAYER_NAME ]
        ;

        SendClientMessage( playerid, 0xFFFFFFAA, "List of players :" );
        foreach(Player,i)
        {
            GetPlayerName( i, name, sizeof( name ) );
            format( string, sizeof( string ), "Player %s", name );
            SendClientMessage( playerid, 0xFFFFFFAA, string );
        }
    }
    else
        SendClientMessage( playerid, 0xFFFFFFAA, "You are not an administrator !" );
    return 1;
}

To recommend ( new ) scripters to use zcmd/ycmd + foreach. I provided the code for you. I doubt that you will use it as you're using a gf edit ( afaik ) and you won't want to convert all the commands.
Reply
#5

thx for ur code.
I dont use a gf edit.
Scripting a TDM mode (i started from zero, scripting everything myself in order to learn sth)
Reply
#6

this is how i do it
pawn Код:
if (strcmp("/iplist", cmdtext, true) == 0){
        if(Spieler[playerid][AdminLevel] == 0)return SendClientMessage(playerid, 0xFF0000FF, "You are not an admin!");
        SendClientMessage(playerid, COLOUR_GOOD, "Players Online:");
        new x;
new String[128],name[MAX_PLAYER_NAME];
        for(new i; i < MAX_PLAYERS; i++){
            if(!IsPlayerConnected(i))continue;
           
            GetPlayerName( i, name, MAX_PLAYER_NAME);
            format(String, 128, "%s%s(%d)", String,name,i);
            x++;
            if(x > 4) {
                SendClientMessage(playerid, 0xABCDEEFF, String);
                x = 0;
                format(String, 128, "");
            }
            else {
                format(String, 128, "%s, ", String);
            }

        }
        if(x <= 4 && x > 0) {
            String[strlen(String)-2] = '.';
            SendClientMessage(playerid, 0xABCDEEFF, String);
        }
        return 1;
    }
5 names per line
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)