CMD:sampmembers
#1

Hello ,how can i fix this command? ,every time I type the command /sampmembers, appear only players who have rank 6


CMD:
Код:
CMD:sampmembers(playerid, params[])
{
    SendClientMessage(playerid, COLOR_CYAN, " ");
    SendClientMessage(playerid, COLOR_CYAN, "_______ |- Online [SA:MP] Members -| _______");
    SendClientMessage(playerid, COLOR_CYAN, " ");
    new count = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(!pData[i][pFaction]) continue;
        new pname[MAX_PLAYER_NAME], gg[70];
        GetPlayerName(i, pname, sizeof(pname));
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 1)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 1 || Godfather ||", GetName(i), i);
        }
        else if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 2)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 2 || Godfather ||", GetName(i), i);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 3)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 3 || Godfather ||", GetName(i), i);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 4)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 4 || Godfather ||", GetName(i), i);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 5)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 5 || Godfather ||", GetName(i), i);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 6)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 6 || Godfather ||", GetName(i), i);
        }
        else
        {
            SendClientMessage(playerid, COLOR_RED, "No [SA:MP] Member Online");
        }
        count++;
        SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
    }
    if(!count) SendClientMessage(playerid, COLOR_RED, "No [SA:MP] Member Online");
    SendClientMessage(playerid, COLOR_CYAN, "_________________________________________");
    return 1;
}
Sorry for my bad english ...
Reply
#2

It's only showing rank 6 members because you are basically wiping the string, then formatting it again. Since the last format is at rank 6, it's showing rank 6 members.

Add a SendClientMessage after every format, and you'll be okay
Reply
#3

something like that?

Код:
CMD:sampmembers(playerid, params[])
{
    SendClientMessage(playerid, COLOR_CYAN, " ");
    SendClientMessage(playerid, COLOR_CYAN, "_______ |- Online [SA:MP] Members -| _______");
    SendClientMessage(playerid, COLOR_CYAN, " ");
    new count = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(!pData[i][pFaction]) continue;
        new pname[MAX_PLAYER_NAME], gg[70];
        GetPlayerName(i, pname, sizeof(pname));
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 1)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 1 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        else if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 2)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 2 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 3)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 3 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 4)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 4 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 5)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 5 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        if(pData[i][pFaction] == 1 || pData[i][pFacrank] == 6)
        {
            format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: 6 || Godfather ||", GetName(i), i);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
        }
        else
        {
            SendClientMessage(playerid, COLOR_RED, "No [SA:MP] Member Online");
        }
        count++;
        SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
    }
    if(!count) SendClientMessage(playerid, COLOR_RED, "No [SA:MP] Member Online");
    SendClientMessage(playerid, COLOR_CYAN, "_________________________________________");
    return 1;
}
Reply
#4

I tried this method but still not working

Код:
CMD:sampmembers(playerid, params[])
{
    SendClientMessage(playerid, COLOR_CYAN, " ");
    SendClientMessage(playerid, COLOR_CYAN, "_______ |- Online [SA:MP] Members -| _______");
    SendClientMessage(playerid, COLOR_CYAN, " ");
    new count = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(!pData[i][pFaction]) continue;
        new pname[MAX_PLAYER_NAME], gg[70];
        GetPlayerName(i, pname, sizeof(pname));
        switch(pData[i][pFaction] == 1)
        {
            case 1: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || Newbie ||", GetName(i), i, pData[i][pFacrank]);
            case 2: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || Little Clucker ||", GetName(i), i, pData[i][pFacrank]);
            case 3: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || Big Clucker ||", GetName(i), i, pData[i][pFacrank]);
            case 4: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || Huge Clucker ||", GetName(i), i, pData[i][pFacrank]);
            case 5: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || Gangsta ||", GetName(i), i, pData[i][pFacrank]);
            case 6: format(gg, sizeof(gg), "|| %s (ID:%i) || Rank: %d || High Roller ||", GetName(i), i, pData[i][pFacrank]);
            default: continue;
        }
        count++;
        SendClientMessage(playerid, COLOR_LIGHTBLUE, gg);
    }
    if(!count) SendClientMessage(playerid, COLOR_RED, "No [SA:MP] Member Online");
    SendClientMessage(playerid, COLOR_CYAN, "_________________________________________");
    return 1;
}
Reply
#5

You had to use && instead || so it could be:
PHP код:
CMD:sampmembers(playeridparams[])
{
    
SendClientMessage(playeridCOLOR_CYAN" ");
    
SendClientMessage(playeridCOLOR_CYAN"_______ |- Online [SA:MP] Members -| _______");
    
SendClientMessage(playeridCOLOR_CYAN" ");
    new 
count 0;
    for(new 
0MAX_PLAYERSi++)
    {
        if(!
IsPlayerConnected(i)) continue;
        if(!
pData[i][pFaction]) continue;
        new 
pname[MAX_PLAYER_NAME], gg[70];
        
GetPlayerName(ipnamesizeof(pname));
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 1)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 1 || Godfather ||"GetName(i), i);
        }
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 2)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 2 || Godfather ||"GetName(i), i);
        }
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 3)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 3 || Godfather ||"GetName(i), i);
        }
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 4)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 4 || Godfather ||"GetName(i), i);
        }
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 5)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 5 || Godfather ||"GetName(i), i);
        }
        if(
pData[i][pFaction] == && pData[i][pFacrank] == 6)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: 6 || Godfather ||"GetName(i), i);
        }
        
count++;
        
SendClientMessage(playeridCOLOR_LIGHTBLUEgg);
    }
    if(!
countSendClientMessage(playeridCOLOR_RED"No [SA:MP] Member Online");
    
SendClientMessage(playeridCOLOR_CYAN"_________________________________________");
    return 
1;

Reply
#6

don't work
Reply
#7

Very poorly written. Creating arrays and variables in loops is very bad for the server.
I've re-written the code, it should work:

PHP код:
CMD:sampmembers(playeridparams[])
{
    
SendClientMessage(playeridCOLOR_CYAN" ");
    
SendClientMessage(playeridCOLOR_CYAN"_______ |- Online [SA:MP] Members -| _______");
    
SendClientMessage(playeridCOLOR_CYAN" ");
    new
        
str[64],
        
count 0;
    for (new 
iGetPlayerPoolSize(); <= ji++)
    
// Change to:
    // for (new i = 0; i < MAX_PLAYERS; i++) if you don't use sa-mp 0.3.7
    // foreach (new i : Player) if you use foreach/y_iterate
    
{
        if (!
IsPlayerConnected(i)) // Remove if you change to foreach/y_iterate
                
continue;
        if (
pData[i][pFaction] == && pData[i][pFacrank] > 0)
        {
            
GetPlayerName(istr25);
            
format(strsizeof (str), "|| %s (ID:%i) || Rank: %i || Godfather ||"stripData[i][pFacrank]);
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstr);
            
count++;
        }
    }
    
    if (!
count)
        
SendClientMessage(playeridCOLOR_RED"No [SA:MP] Member Online");
    
SendClientMessage(playeridCOLOR_CYAN"_________________________________________");
    return 
1;

Reply
#8

Don't work .....


this is my command for giverank:

Код:
CMD:giverank(playerid, params[])
{
	if(pData[playerid][pFacleader] > 0 || pData[playerid][pFacrank] >= 6)
	{
	    new targetid, rank, string[128]; 
	    if(sscanf(params, "ui", targetid, rank)) return SendClientMessage(playerid, COLOR_RED, "Usage: /coprank [playerid][rank]");
	    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_RED, "That player is not connected!");
	    if(pData[targetid][pFaction] != pData[playerid][pFaction]) return SendClientMessage(playerid, COLOR_RED, "That player is not in your faction!");
		if(rank < 1 || rank > 6) return SendClientMessage(playerid, COLOR_RED,"Rank must be 1-6");
		if(rank == 6) return SendClientMessage(playerid,COLOR_WHITE,"Doar un lider poate fi intr-o factiune");
		// SKINURI PD
		if(pData[playerid][pFaction] == 1 || pData[playerid][pFacleader] == 6)
	    {
        	if(rank == 1) return SetPlayerSkin(playerid, 284);
			else if(rank == 2) return SetPlayerSkin(playerid, 280);
			else if(rank == 3) return SetPlayerSkin(playerid, 281);
			else if(rank == 4) return SetPlayerSkin(playerid, 267);
			else if(rank == 5) return SetPlayerSkin(playerid, 266);
			else { string = "None"; }
		}
		// SKIN-URI F.B.I
  		if(pData[playerid][pFaction] == 2 || pData[playerid][pFacleader] == 6)
	    {
        	if(rank == 1) return SetPlayerSkin(playerid, 286);
			else if(rank == 2) return SetPlayerSkin(playerid, 163);
			else if(rank == 3) return SetPlayerSkin(playerid, 164);
			else if(rank == 4) return SetPlayerSkin(playerid, 166);
			else if(rank == 5) return SetPlayerSkin(playerid, 165);
			else { string = "None"; }
		}
		pData[targetid][pFacrank] = rank;
	    format(string, sizeof(string), "Your rank has been changed to rank %d!", rank);
	    SendClientMessage(targetid, COLOR_GREEN, string);
	}
	else 
	{
	    SendClientMessage(playerid, COLOR_RED, "You do not have the rank to set ranks");
	}
    return 1;
}
Reply
#9

Simple and easy use this and try

PHP код:
CMD:sampmembers(playeridparams[])
{
    
SendClientMessage(playeridCOLOR_CYAN" ");
    
SendClientMessage(playeridCOLOR_CYAN"_______ |- Online [SA:MP] Members -| _______");
    
SendClientMessage(playeridCOLOR_CYAN" ");
    new 
count 0;
    for(new 
0MAX_PLAYERSi++)
    {
        if(!
IsPlayerConnected(i)) continue;
        if(!
pData[i][pFaction]) continue;
        new 
pname[MAX_PLAYER_NAME], gg[70];
        
GetPlayerName(ipnamesizeof(pname));
        if(
pData[i][pFaction] == && pData[i][pFacrank] != 0)
        {
            
format(ggsizeof(gg), "|| %s (ID:%i) || Rank: %d || Godfather ||"GetName(i), ipData[i][pFacrank]);
            
SendClientMessage(playeridCOLOR_LIGHTBLUEgg);
            
count++;
        }
        
    }
    if(!
countSendClientMessage(playeridCOLOR_RED"No [SA:MP] Member Online");
    
SendClientMessage(playeridCOLOR_CYAN"_________________________________________");
    return 
1;

Reply
#10

What don't work yet after Stinged's code?
Reply
#11

appear only players who have rank 6
Reply
#12

I found the problem, when i type the command giverank ,rank player is not saved
I use YNI for save my data user

Код:
CMD:giverank(playerid, params[])
{
	if(pData[playerid][pFacleader] > 0 || pData[playerid][pFacrank] >= 6)
	{
	    new targetid, rank, string[128]; 
	    if(sscanf(params, "ui", targetid, rank)) return SendClientMessage(playerid, COLOR_RED, "Usage: /coprank [playerid][rank]");
	    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_RED, "That player is not connected!");
	    if(pData[targetid][pFaction] != pData[playerid][pFaction]) return SendClientMessage(playerid, COLOR_RED, "That player is not in your faction!");
		if(rank < 1 || rank > 6) return SendClientMessage(playerid, COLOR_RED,"Rank must be 1-6");
		if(rank == 6) return SendClientMessage(playerid,COLOR_WHITE,"Doar un lider poate fi intr-o factiune");
		new INI:File = INI_Open(UserPath(playerid));
		INI_SetTag(File,"data");
    	INI_WriteInt(File,"Facrank",pData[playerid][pFacrank]);
		INI_Close(File);
		// SKINURI PD
		if(pData[playerid][pFaction] == 1 || pData[playerid][pFacleader] == 6)
	    {
        	if(rank == 1) return SetPlayerSkin(playerid, 284);
			else if(rank == 2) return SetPlayerSkin(playerid, 280);
			else if(rank == 3) return SetPlayerSkin(playerid, 281);
			else if(rank == 4) return SetPlayerSkin(playerid, 267);
			else if(rank == 5) return SetPlayerSkin(playerid, 266);
			else { string = "None"; }
		}
		// SKIN-URI F.B.I
  		if(pData[playerid][pFaction] == 2 || pData[playerid][pFacleader] == 6)
	    {
        	if(rank == 1) return SetPlayerSkin(playerid, 286);
			else if(rank == 2) return SetPlayerSkin(playerid, 163);
			else if(rank == 3) return SetPlayerSkin(playerid, 164);
			else if(rank == 4) return SetPlayerSkin(playerid, 166);
			else if(rank == 5) return SetPlayerSkin(playerid, 165);
			else { string = "None"; }
		}
		pData[targetid][pFacrank] = rank;
	    format(string, sizeof(string), "Your rank has been changed to rank %d!", rank);
	    SendClientMessage(targetid, COLOR_GREEN, string);
	}
	else 
	{
	    SendClientMessage(playerid, COLOR_RED, "You do not have the rank to set ranks");
	}
    return 1;
}
I Added:
Код:
		new INI:File = INI_Open(UserPath(playerid));
		INI_SetTag(File,"data");
    	INI_WriteInt(File,"Facrank",pData[playerid][pFacrank]);
		INI_Close(File);
But still not working
Reply
#13

Hello... can help me someone?..
Reply
#14

Everybody has shown you solutions. The problem obviously lies somewhere else in the program. At this point, you're just asking people to code for you.
Reply
#15

I did not say "I want to make my code", but a small solution would be useful
Reply
#16

Quote:
Originally Posted by xAlecsu
Посмотреть сообщение
I did not say "I want to make my code", but a small solution would be useful
The code given by stinged should work show the current code of cmd: sampmembers (i dont think so you did used his code thats why)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)