Rank system Help
#1

so I'm trying to make a rank system but I'm facing an error called error:undefined symbol Guest
here is the code
PHP код:
    if(ran && ran<6)
        {
            
Rank[i]=Guest;
        } 
and is there any way to get player rank like strock GetPlayerRank(playerid); ?
Reply
#2

any one plz?
Reply
#3

Well, your codes don't explain much, but if your Rank var is string you will need " before guest so it will be:
PHP код:
Rank[i]="Guest"
Reply
#4

it is like so

PHP код:
new Rank[MAX_PLAYERS];
{
there is a timer on player connect]
forward OnRankUp(playerid);
public 
OnRankUp(playerid)
{
    for(new 
i=0i<MAX_PLAYERSi++)
    {
        new 
ran;
        
ran GetPlayerScore(i);
        if(
ran && ran<6)
        {
            
Rank[i]=Guest;
        }
        if(
ran && ran<11)
        {
              
Rank[i]=Citizen;
        }
        if(
ran 11 && ran<21)
        {
              
Rank[i]=Villager;
        }
        if(
ran 21 && ran<36)
        {
              
Rank[i]=Baron;
        }
        if(
ran 36 && ran<51)
        {
              
Rank[i]=Lord;
        }
        return 
1;
    }
    return 
1;
}
CMD:rank(playeridparams[])
{
     new 
str[128];
    
format(strsizeof(str), "{37A63D}(INFO):{FFFFFF}Your Current Rank Is: %s"Rank[playerid]);
    
SendClientMessage(playeridCOLOR_YELLOWstr);
    return 
1;

and I tried same way as yours but it didn't work I get this error (error 006: must be assigned to an array)
Reply
#5

Here you go O_O

PHP код:
new Rank[MAX_PLAYERS][15];

forward OnRankUp(playerid);
public 
OnRankUp(playerid)
{
    for(new 
i=0i<MAX_PLAYERSi++)
    {
        if(!
IsPlayerConnected(i)) continue;
        new 
ran;
        
ran GetPlayerScore(i);
        if(
ran && ran<6)
        {
            
Rank[i]="Guest";
        }
        if(
ran && ran<11)
        {
              
Rank[i]="Citizen";
        }
        if(
ran 11 && ran<21)
        {
              
Rank[i]="Villager";
        }
        if(
ran 21 && ran<36)
        {
              
Rank[i]="Baron";
        }
        if(
ran 36 && ran<51)
        {
              
Rank[i]="Lord";
        }
        return 
1;
    }
    return 
1;
}
CMD:rank(playeridparams[])
{
     new 
str[128];
    
format(strsizeof(str), "{37A63D}(INFO):{FFFFFF}Your Current Rank Is: %s"Rank[playerid]);
    
SendClientMessage(playeridCOLOR_YELLOWstr);
    return 
1;

your Rank was interget value, so it wasn't accepting an string...
Reply
#6

now I got this in my saving system XD
error 032: array index out of bounds (variable "Rank")
Код:
Rank[playerid][15] = dini_Int(AddDirFile(dir_userfiles, playername), "Rank");
Reply
#7

Quote:
Originally Posted by silverms
Посмотреть сообщение
now I got this in my saving system XD
error 032: array index out of bounds (variable "Rank")
Код:
Rank[playerid][15] = dini_Int(AddDirFile(dir_userfiles, playername), "Rank");
Do you save ranks in users as number or string? [ like you save score or rank name? ]
Reply
#8

You must optimize your code :
PHP код:
new Rank[MAX_PLAYERS][15];

forward OnRankUp(playerid);
public 
OnRankUp(playerid)
{
    for(new 
i=0i<MAX_PLAYERSi++)
    {
        if(!
IsPlayerConnected(i))
            continue;
        switch(
GetPlayerScore(i))
        {
            case 
.. Rank[i] = "Guest";
            case 
.. 10 Rank[i] = "Citizen";
            case 
11 .. 25 Rank[i] = "Villager";
            case 
26 .. 35 Rank[i] = "Baron";
            case 
36 .. 51 Rank[i] = "Lord";
        }
    }
    return 
1;

Reply
#9

ok every think is okay but can I use It as if(Rank[playerid] == "Guest") now?
Reply
#10

I believe it doesn't quite work that way.

The best shot for you would be:

pawn Код:
if(!strcmp(Rank[i],"RANKNAME")){}
however, IMO it is quite slow. I'd recommend reconsidering your rank system, so Rank[i] would actually hold an integer rather than exact rank name.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)