Issue with my /r
#1

Is there anything wrong with this?
PHP код:
CMD:r(playerid,params[])
{
    new 
text[128];
    if(
sscanf(params,"s",text)) return SendClientMessage(playerid,COLOR_SYNTAX,"[SYNTAX]: /r [message]");
    for(new 
iMAX_PLAYERSi++)
       {
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 1)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Deputy Sheriff %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 2)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Deputy Sheriff Bonus %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 3)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Sergeant %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 4)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Liutenant %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 5)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Under Sheriff %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(
PlayerInfo[i][Group] == && PlayerInfo[i][Member] == 6)
        {
            new 
str[128],pName[MAX_PLAYER_NAME];
            
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            
format(str,sizeof(str),"[Police Radio] Sheriff %s: %s , Over.",pName,text);
            
SendClientMessage(i,COLOR_SYNTAX,str);
        }
    }
    return 
1;

I don't really see anything wrong with this, but it ALWAYS says Sheriff no matter what rank...
Reply
#2

i guess there are something wrong in if(PlayerInfo[i][Group] == 1 && PlayerInfo[i][Member] == 6)
about the '=='
Reply
#3

fisrt your sscanf is not proprley it must go:

pawn Код:
if(sscanf(params,"s[128]",text)) return SendClientMessage(playerid,COLOR_SYNTAX,"[SYNTAX]: /r [message]");
second give us a variable for Rank?
Reply
#4

Member is Rank.. and I have no issues with the sscanf, that all works fine, I need to know why it says "Sheriff" for like every rank,

And BigBaws, it shouldnt be the == because that means equal to.
Reply
#5

pawn Код:
CMD:r(playerid,params[])
{
    new text[128];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid,COLOR_SYNTAX,"[SYNTAX]: /r [message]");

     if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 1)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Deputy Sheriff %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 2)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Deputy Sheriff Bonus %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 3)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Sergeant %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 4)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Liutenant %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 5)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Under Sheriff %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
        if(PlayerInfo[playerid][Group] == 1 && PlayerInfo[playerid][Member] == 6)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] Sheriff %s: %s , Over.",pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
    }
    return 1;
}
you must have playerid, dont loop...

and instend ranks use public function SendRadioMessage

pawn Код:
forward SendRadioMessage(group, color, string[]);
public SendRadioMessage(group, color, string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(PlayerInfo[i][Group] == clan)
        {
            SendClientMessage(i, color, string);
        }
    }
}
Reply
#6

So.. "member" is your rank?
Reply
#7

pawn Код:
stock GetRank(playerid)
{
    new string[126];
    switch(PlayerInfo[playerid][pRank]) // change to your rank variable
    {
        case 8: string = "Chief of Police";
        case 7: string = "Assistant Chief";
        case 6: string = "Commander";
        case 5: string = "Captain";
        case 4: string = "Lieutenant";
        case 3: string = "Sergeant";
        case 2: string = "Police Officer III";
        case 1: string = "Police Officer II";
        default: string = "Police Officer I";
        // change the name of your ranks
    }
    return string;
}

CMD:r(playerid,params[])
{
    new text[128];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid,COLOR_SYNTAX,"[SYNTAX]: /r [message]");
    for(new i; i < MAX_PLAYERS; i++)
       {
        if(PlayerInfo[i][Group] == 1)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] %s %s: %s , Over.",GetRank(playerid),pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
    }
    return 1;
}
Reply
#8

Quote:
Originally Posted by Jack_Leslie
Посмотреть сообщение
pawn Код:
stock GetRank(playerid)
{
    new string[126];
    switch(PlayerInfo[playerid][pRank]) // change to your rank variable
    {
        case 8: string = "Chief of Police";
        case 7: string = "Assistant Chief";
        case 6: string = "Commander";
        case 5: string = "Captain";
        case 4: string = "Lieutenant";
        case 3: string = "Sergeant";
        case 2: string = "Police Officer III";
        case 1: string = "Police Officer II";
        default: string = "Police Officer I";
        // change the name of your ranks
    }
    return string;
}

CMD:r(playerid,params[])
{
    new text[128];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid,COLOR_SYNTAX,"[SYNTAX]: /r [message]");
    for(new i; i < MAX_PLAYERS; i++)
       {
        if(PlayerInfo[i][Group] == 1)
        {
            new str[128],pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
            format(str,sizeof(str),"[Police Radio] %s %s: %s , Over.",GetRank(playerid),pName,text);
            SendClientMessage(i,COLOR_SYNTAX,str);
        }
    }
    return 1;
}
that Should working 99%
Reply
#9

@Jack Leslie, I did that, edited everything to my ranks and all, now it says Deputy Sheriff When Im rank six?

PHP код:
stock SDRank(playerid)
{
    new 
string[126];
    switch(
PlayerInfo[playerid][Member]) // change to your rank variable
    
{
        case 
5string "Sheriff";
        case 
4string "Under Sheriff";
        case 
3string "Lieutenant";
        case 
2string "Sergeant";
        case 
1string "Deputy Sheriff Bonus";
        default: 
string "Deputy Sheriff";
    }
    return 
string;

Reply
#10

Quote:
Originally Posted by Azzeto
Посмотреть сообщение
@Jack Leslie, I did that, edited everything to my ranks and all, now it says Deputy Sheriff When Im rank six?

PHP код:
stock SDRank(playerid)
{
    new 
string[126];
    switch(
PlayerInfo[playerid][Member]) // change to your rank variable
    
{
        case 
5string "Sheriff";
        case 
4string "Under Sheriff";
        case 
3string "Lieutenant";
        case 
2string "Sergeant";
        case 
1string "Deputy Sheriff Bonus";
        default: 
string "Deputy Sheriff";
    }
    return 
string;

Seeing as you scripted it that way.. yeah... if member is equal to 6 it will use the default, you need to add a case 6.
Reply
#11

Quote:
Originally Posted by Azzeto
Посмотреть сообщение
@Jack Leslie, I did that, edited everything to my ranks and all, now it says Deputy Sheriff When Im rank six?

PHP код:
stock SDRank(playerid)
{
    new 
string[126];
    switch(
PlayerInfo[playerid][Member]) // change to your rank variable
    
{
        case 
5string "Sheriff";
        case 
4string "Under Sheriff";
        case 
3string "Lieutenant";
        case 
2string "Sergeant";
        case 
1string "Deputy Sheriff Bonus";
        default: 
string "Deputy Sheriff";
    }
    return 
string;

Because there's no case 6, so it uses default.


pawn Код:
stock SDRank(playerid)
{
    new string[126];
    switch(PlayerInfo[playerid][Member]) // change to your rank variable
    {
        case 6: string = "Sheriff";
        case 5: string = "Deputy Sheriff";
        case 4: string = "Under Sheriff";
        case 3: string = "Lieutenant";
        case 2: string = "Sergeant";
        case 1: string = "Deputy Sheriff Bonus";
        default: string = // If there is no case for the rank, or the rank is 0, it will use this;
    }
    return string;
}
Reply
#12

Ok, thanks Prawk and Leslie, much appriciated
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)