Help with /admin command
#1

Trying to create a /admins command but I need help fixing the errors.

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    
GetPlayerName(playeridplayernameMAX_PLAYER_NAME);
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[828], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    if(
IsPlayerConnected)
    {
        if (
adlvl[playerid] >= 1)
        {
            if(
adlvl[playerid] > 6)
            {
                
AdmRank "Server Owner/Developer";
                
ChangeColor COL_LEVEL4;
            }
            else
            {
                switch(
adlvl[playerid])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
            
format(string128"%s | %s"playernameAdmRank);
            
SendClientMessage(playeridstringChangeColor);
            
count ++;
            }
        }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Error is

Code:
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26919) : error 035: argument type mismatch (argument 1)
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26923) : warning 209: function "cmd_admins" should return a value
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26924) : error 010: invalid function or declaration
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26926) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


3 Errors.
The error at 26919 is
PHP Code:
                SendClientMessage(stringChangeColor); 
Warning at 26923 is
PHP Code:
         
The error at 26924 is
PHP Code:
         if(count == 0
The error at 26926 is
PHP Code:
         return 1
Please help? I will +1 Rep
Reply
#2

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[828], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    for(new 
0MAX_PLAYERSi++) {
      if(
IsPlayerConnected(i))
       {
        if (
adlvl[i] >= 1)
        {
            
GetPlayerName(iplayernameMAX_PLAYER_NAME);
            if(
adlvl[i] > 6)
            {
                
AdmRank "Server Owner/Developer";
                
ChangeColor COL_LEVEL4;
            }
            else
            {
                switch(
adlvl[i])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
        }
        
format(string128"%s | %s"playernameAdmRank);
        
SendClientMessage(playeridstringChangeColor);
        
count ++;
      }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Code:
SendClientMessage(string, ChangeColor);
send it to who missed
PHP Code:
SendClientMessage(playerid,stringChangeColor); 
Reply
#3

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[828], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    for(new 
0MAX_PLAYERSi++) {
      if(
IsPlayerConnected(i))
       {
        if (
adlvl[i] >= 1)
        {
            
GetPlayerName(iplayernameMAX_PLAYER_NAME);
            if(
adlvl[i] > 6)
            {
                
AdmRank "Server Owner/Developer";
                
ChangeColor COL_LEVEL4;
            }
            else
            {
                switch(
adlvl[i])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
        }
        
format(string128"%s | %s"playernameAdmRank);
        
SendClientMessage(playerid,string,  ChangeColor);
        
count ++;
      }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Edit : Retarted..
Reply
#4

With using both of those. I still get

Code:
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26953) : error 035: argument type mismatch (argument 2)
E:\All Folders\Hobbies\Server Hosting\SA-MP\_PrP Gaming\gamemodes\RNTG.pwn(26947) : warning 204: symbol is assigned a value that is never used: "ChangeColor"
Reply
#5

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[828], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    for(new 
0MAX_PLAYERSi++) {
      if(
IsPlayerConnected(i))
       {
        if (
adlvl[i] >= 1)
        {
            
GetPlayerName(iplayernameMAX_PLAYER_NAME);
            if(
adlvl[i] > 6)
            {
                
AdmRank "Server Owner/Developer";
                
ChangeColor COL_LEVEL4;
            }
            else
            {
                switch(
adlvl[i])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
        }
        
format(string128"%s | %s"playernameAdmRank);
        
SendClientMessage(playeridChangeColorstring);
        
count ++;
      }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Code:
SendClientMessage(playerid, string, ChangeColor);
should be ;_; >
PHP Code:
SendClientMessage(playeridChangeColorstring); 
Reply
#6

Copying and Pasting isn't learning...

Encouraging this "here, paste this in" fix urge, isn't helping.



Code:
string[828]
Yep, you need to learn a bit more...
Reply
#7

Quote:
Originally Posted by Sew_Sumi
View Post
Copying and Pasting isn't learning...

Encouraging this "here, paste this in" fix urge, isn't helping.



Code:
string[828]
Yep, you need to learn a bit more...
The string[828] was a spelling mistake, thanks for pointing that out. I know that I still need to learn more and that's why I'm here posting on sa-mp forums. If you see in the previous post above he tells me what I did wrong and that I needed to change string and ChangeColor around because of what was said in the format.

Also if anyone else wants to help, I need help with this command, as it doesn't work on level 6. Because there is such thing as an undercover admin. So if the admin was undercover it shouldn't show up on /admins they should just be skipped. But how would I do that? I made a start on it. But I'd like someone to teach me how you'd do it, if that isn't too much to ask.

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[128], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    for(new 
0MAX_PLAYERSi++) {
      if(
IsPlayerConnected(i))
       {
        if (
adlvl[i] >= 1)
        {
            
GetPlayerName(iplayernameMAX_PLAYER_NAME);
            if(
adminuc[playerid])
            {
                
            }
            else
            {
                switch(
adlvl[i])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
6: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
        }
        
format(string128"%s | %s"playernameAdmRank);
        
SendClientMessage(playeridChangeColorstring);
        
count ++;
      }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Reply
#8

You can try this.

Code:
CMD:admins(playerid, params[])
{
    new playername[MAX_PLAYER_NAME];
    
    if(GetPlayerScore(playerid) < 50) return SendClientMessage(playerid, COLOR_RED, "You need 50 score to see online administrators");
    new count = 0, string[828], AdmRank[128];
    new ChangeColor;
    SendClientMessage(playerid, COLOR_GREEN, " ");
    SendClientMessage(playerid, COLOR_GREEN, "___________ |- Online Admins -| ___________");
    SendClientMessage(playerid, COLOR_GREEN, " ");
    for(new i = 0; i < MAX_PLAYERS; i++) {
      if(IsPlayerConnected(i))
       {
        if (adlvl[i] >= 1)
        {
            GetPlayerName(i, playername, MAX_PLAYER_NAME);
            if(adlvl[i] >= 6)
            {
                AdmRank = "Server Owner/Developer";
                ChangeColor = COL_LEVEL4;
            }
            else
            {
                switch(adlvl[i])
                {
                    case 1: {
                    AdmRank = "Moderator";
                    ChangeColor = COL_LEVEL1;
                    }
                    case 2: {
                    AdmRank = "Senior Moderator";
                    ChangeColor = COL_LEVEL2;
                    }
                    case 3: {
                    AdmRank = "Administrator";
                    ChangeColor = COL_LEVEL3;
                    }
                    case 4: {
                    AdmRank = "Lead Administrator";
                    ChangeColor = COL_LEVEL4;
                    }
                    case 5: {
                    AdmRank = "Lead Administrator";
                    ChangeColor = COL_LEVEL4;
                    }
                }
            }
        }
        format(string, 128, "%s | %s", playername, AdmRank);
        SendClientMessage(playerid, ChangeColor, string);
        count ++;
      }
    }
    if(count == 0)
    SendClientMessage(playerid, ADMINSONLINE, "There are currently no administrators online.");
    return 1;
}
if(adlvl[i] >= 6)
Reply
#9

Quote:
Originally Posted by povargek
View Post
You can try this.

Code:
CMD:admins(playerid, params[])
{
    new playername[MAX_PLAYER_NAME];
    
    if(GetPlayerScore(playerid) < 50) return SendClientMessage(playerid, COLOR_RED, "You need 50 score to see online administrators");
    new count = 0, string[828], AdmRank[128];
    new ChangeColor;
    SendClientMessage(playerid, COLOR_GREEN, " ");
    SendClientMessage(playerid, COLOR_GREEN, "___________ |- Online Admins -| ___________");
    SendClientMessage(playerid, COLOR_GREEN, " ");
    for(new i = 0; i < MAX_PLAYERS; i++) {
      if(IsPlayerConnected(i))
       {
        if (adlvl[i] >= 1)
        {
            GetPlayerName(i, playername, MAX_PLAYER_NAME);
            if(adlvl[i] >= 6)
            {
                AdmRank = "Server Owner/Developer";
                ChangeColor = COL_LEVEL4;
            }
            else
            {
                switch(adlvl[i])
                {
                    case 1: {
                    AdmRank = "Moderator";
                    ChangeColor = COL_LEVEL1;
                    }
                    case 2: {
                    AdmRank = "Senior Moderator";
                    ChangeColor = COL_LEVEL2;
                    }
                    case 3: {
                    AdmRank = "Administrator";
                    ChangeColor = COL_LEVEL3;
                    }
                    case 4: {
                    AdmRank = "Lead Administrator";
                    ChangeColor = COL_LEVEL4;
                    }
                    case 5: {
                    AdmRank = "Lead Administrator";
                    ChangeColor = COL_LEVEL4;
                    }
                }
            }
        }
        format(string, 128, "%s | %s", playername, AdmRank);
        SendClientMessage(playerid, ChangeColor, string);
        count ++;
      }
    }
    if(count == 0)
    SendClientMessage(playerid, ADMINSONLINE, "There are currently no administrators online.");
    return 1;
}
if(adlvl[i] >= 6)
That works. But if I'm undercover it still shows on /admins is there any way that if player is if(adminuc[playerid]) (UNDERCOVER) that their name won't show up on /admins no matter what level they are?
Reply
#10

PHP Code:
if(adlvl[i] >= && UndercoverAdmin[i] == 0
This is just an example of how it should be, replace the UndercoverAdmin with your undercover admin variable it basically means if a player's adminlevel is above or equal to 6 AND if the player is NOT undercover admin. You may as well place it below IsPlayerConnected as an if statement and it should work. An example is;

PHP Code:
CMD:admins(playeridparams[])
{
    new 
playername[MAX_PLAYER_NAME];
    
    if(
GetPlayerScore(playerid) < 50) return SendClientMessage(playeridCOLOR_RED"You need 50 score to see online administrators");
    new 
count 0string[128], AdmRank[128];
    new 
ChangeColor;
    
SendClientMessage(playeridCOLOR_GREEN" ");
    
SendClientMessage(playeridCOLOR_GREEN"___________ |- Online Admins -| ___________");
    
SendClientMessage(playeridCOLOR_GREEN" ");
    for(new 
0MAX_PLAYERSi++) {
      if(
IsPlayerConnected(i))
       {
       if(
UndercoverAdmin[i] == 0)
       {
          if (
adlvl[i] >= 1)
          {
            
GetPlayerName(iplayernameMAX_PLAYER_NAME);
            if(
adlvl[i] >= 6)
            {
                
AdmRank "Server Owner/Developer";
                
ChangeColor COL_LEVEL4;
            }
            else
            {
                switch(
adlvl[i])
                {
                    case 
1: {
                    
AdmRank "Moderator";
                    
ChangeColor COL_LEVEL1;
                    }
                    case 
2: {
                    
AdmRank "Senior Moderator";
                    
ChangeColor COL_LEVEL2;
                    }
                    case 
3: {
                    
AdmRank "Administrator";
                    
ChangeColor COL_LEVEL3;
                    }
                    case 
4: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                    case 
5: {
                    
AdmRank "Lead Administrator";
                    
ChangeColor COL_LEVEL4;
                    }
                }
            }
        }
        
format(string128"%s | %s"playernameAdmRank);
        
SendClientMessage(playeridChangeColorstring);
        
count ++;
      }
         }
    }
    if(
count == 0)
    
SendClientMessage(playeridADMINSONLINE"There are currently no administrators online.");
    return 
1;

Edit: Sorry about the indentation, I messed up a bit. Again, don't forget to change the undercoveradmin variable to fit your needs.

Edit 2: Also make sure to change the ChangeColor variable to a local variable. As a global variable, it will change per individual, meaning the last admin who gets counted will be the deciding factor of the colour displayed. What you need to do is basically this;

PHP Code:
new ChangeColor[MAX_PLAYERS]; 
instead of

PHP Code:
new ChangeColor
and change each ChangeColor to

PHP Code:
ChangeColor(i
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)