GetPlayerAdminRank
#1

Hello.

I have a situation with my function for admin system. So i made GetPlayerAdminRank(playerid); to get player's admin rank if he's admin. The real problem is:
- When i set player's administration level to lets say '5' (owner,which should work) it doesn't. But when i set '4' it sets the owner level. Is the problem that the numbers are counted from 0 to 4? If yes how can i fix it?

CODE:

PHP код:
stock GetPlayerAdminRank(playerid)
{
    new 
level[64];
    switch (
PlayerInfo[playerid][pAdministrator])
    {
        case 
1level "{FF0000}Admin I{FFFFFF}";
        case 
2level "{FF0000}Admin II{FFFFFF}";
        case 
3level "{FF0000}Admin III{FFFFFF}";
        case 
4level "{FF0000}Direktor{FFFFFF}";
        case 
5level "{FF0000}Vlasnik{FFFFFF}";
    }
    return 
level;

Sorry for my bad English!
Thanks for support.
Reply
#2

Get the value of PlayerInfo[playerid][pAdministrator] using printf and check if it's five.
Reply
#3

Add this, type /test in game and post results
PHP код:
CMD:test(playerid,params[]) {
    
printf("Admin Rank ID: %i || Rank Name: %s",PlayerInfo[playerid][pAdministrator],GetPlayerAdminRank(playerid));
    return 
true;

Reply
#4

Thanks ill test it now
Reply
#5

PHP код:
[19:22:42Admin Rank ID|| Rank Name: {FF0000}Vlasnik{FFFFFF
It seems it works,but it shows me something else in dialog. When i set to 4 it shows me Owner,and 5 director
Reply
#6

Quote:
Originally Posted by NoDi522
Посмотреть сообщение
PHP код:
[19:22:42Admin Rank ID|| Rank Name: {FF0000}Vlasnik{FFFFFF
It seems it works,but it shows me something else in dialog. When i set to 4 it shows me Owner,and 5 director
Show us the dialog
Reply
#7

PHP код:
CMD:makeadmin(playerid,params[])
{
    new 
poruka[256],poruka2[650],poruka3[650],ID,level,randomiziraj random(99999);
    if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Niste se spojili na server");
    if(
pUlogiran[playerid] != 1) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Niste ulogirani na server.");
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Nemate dozvolu za tu komandu");
    if(
sscanf(params,"ud",ID,level)) return SendClientMessage(playerid,-1,"{FF0000}Koristenje:{FFFFFF} /makeadmin [ID/ime] [level]");
    {
        if(
level || level 5) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Dozvoljeni admin leveli za dodijelu: 0-5");
        if(
ID == playerid)
        {
            
format(poruka,256,"{FF0000}[A-INFO]: %s {FFFFFF}%s je postavio sebe za administratora na levelu %d",GetPlayerAdminRank(playerid),GetName(playerid),level);
            
SendAdminMessage(-1,poruka);
            
// --> format(poruka2,650,"{FFFFFF}Postavili ste se na administracijsku poziciju. Pozicija: %s.\nKao clan administracije prihvacate pravila napisana na nasoj forum stranici.\nCestitke na tituli od citave WG Administracije.Nadamo se da cete uspjesno ispunjvati svoju duznost.\n\n{FF0000}*{FFFFFF} Dolje navedeni kod zapisite negdje na papir ili u text dokument jer ce vam\npri svakom logiranju na server on biti potreban za ulazenje na racun:\n%d",GetPlayerAdminRank(playerid),randomiziraj);
            
ShowPlayerDialog(playerid,DIALOG_DEFAULT,DIALOG_STYLE_MSGBOX,"WG Administration",poruka2,"Uredu","");
            
printf("ADMIN: %s je postavio vlastiti admin level na %d",GetName(playerid),level);
            
PlayerInfo[playerid][pAdminKod] = randomiziraj;
            
PlayerInfo[playerid][pAdministrator] = level;
            
               new 
INI:UFile INI_Open(UserPath(ID));
            
INI_SetTag(UFile,"Podatci");
            
INI_WriteInt(UFile,"pAdminKod",PlayerInfo[ID][pAdminKod]);
            
INI_Close(UFile);
        }
        else
        {
            
format(poruka,256,"{0080FF}WG{FFFFFF}: %s {FFFFFF}%s vas je postavio za administratora na levelu %d. Cestitamo!",GetPlayerAdminRank(playerid),GetName(playerid),level);
            
SendClientMessage(ID,-1,poruka);
            
// --> format(poruka3,650,"{FFFFFF}Postavljeni ste na administraciju poziciju od strane vlasnika. Pozicija: %s.\nKao clan administracije prihvacate pravila napisana na nasoj forum stranici.\nCestitke na tituli od citave WG Administracije.Nadamo se da cete uspjesno ispunjvati svoju duznost.\n\n{FF0000}*{FFFFFF} Dolje navedeni kod zapisite negdje na papir ili u text dokument jer ce vam\npri svakom logiranju na server on biti potreban za ulazenje na racun:\n%d",GetPlayerAdminRank(level),randomiziraj);
            
ShowPlayerDialog(ID,DIALOG_DEFAULT2,DIALOG_STYLE_MSGBOX,"WG Administration",poruka3,"Uredu","");
            
format(poruka,256,"{0080FF}WG{FFFFFF}: Postavili ste %sa za administratora na levelu %d",GetName(ID),level);
            
SendClientMessage(playerid,-1,poruka);
            
format(poruka,256,"{FF0000}[A-INFO]: %s {FFFFFF}%s je postavio %su administratora na levelu %d",GetPlayerAdminRank(playerid),GetName(playerid),GetName(ID),level);
            
SendAdminMessage(-1,poruka);
            
printf("ADMIN: %s je postavio %s za administratora na levelu %d",GetName(playerid),GetName(ID),level);
            
PlayerInfo[ID][pAdminKod] = randomiziraj;
            
PlayerInfo[ID][pAdministrator] = level;
            
            new 
INI:UFile INI_Open(UserPath(ID));
            
INI_SetTag(UFile,"Podatci");
            
INI_WriteInt(UFile,"pAdminKod",PlayerInfo[ID][pAdminKod]);
            
INI_Close(UFile);
        }
     }
    return 
1;

Reply
#8

You were getting their Admin Rank before you were setting it.

This should resolve it all!

PHP код:
CMD:makeadmin(playerid,params[])
{
    new 
poruka[256],poruka2[650],poruka3[650],ID,level,randomiziraj random(99999);
    if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Niste se spojili na server");
    if(
pUlogiran[playerid] != 1) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Niste ulogirani na server.");
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Nemate dozvolu za tu komandu");
    if(
sscanf(params,"ud",ID,level)) return SendClientMessage(playerid,-1,"{FF0000}Koristenje:{FFFFFF} /makeadmin [ID/ime] [level]");
    {
        if(
level || level 5) return SendClientMessage(playerid,-1,"{FF0000}Greska:{FFFFFF} Dozvoljeni admin leveli za dodijelu: 0-5");
        if(
ID == playerid)
        {
            
PlayerInfo[playerid][pAdminKod] = randomiziraj;
            
PlayerInfo[playerid][pAdministrator] = level;
            
format(poruka,256,"{FF0000}[A-INFO]: %s {FFFFFF}%s je postavio sebe za administratora na levelu %d",GetPlayerAdminRank(playerid),GetName(playerid),level);
            
SendAdminMessage(-1,poruka);
            
format(poruka2,650,"{FFFFFF}Postavili ste se na administracijsku poziciju. Pozicija: %s.\nKao clan administracije prihvacate pravila napisana na nasoj forum stranici.\nCestitke na tituli od citave WG Administracije.Nadamo se da cete uspjesno ispunjvati svoju duznost.\n\n{FF0000}*{FFFFFF} Dolje navedeni kod zapisite negdje na papir ili u text dokument jer ce vam\npri svakom logiranju na server on biti potreban za ulazenje na racun:\n%d",GetPlayerAdminRank(playerid),randomiziraj);
            
ShowPlayerDialog(playerid,DIALOG_DEFAULT,DIALOG_STYLE_MSGBOX,"WG Administration",poruka2,"Uredu","");
            
printf("ADMIN: %s je postavio vlastiti admin level na %d",GetName(playerid),level);
            
            new 
INI:UFile INI_Open(UserPath(ID));
            
INI_SetTag(UFile,"Podatci");
            
INI_WriteInt(UFile,"pAdminKod",PlayerInfo[ID][pAdminKod]);
            
INI_Close(UFile);
        }
        else
        {
            
PlayerInfo[ID][pAdminKod] = randomiziraj;
            
PlayerInfo[ID][pAdministrator] = level;
            
format(poruka,256,"{0080FF}WG{FFFFFF}: %s {FFFFFF}%s vas je postavio za administratora na levelu %d. Cestitamo!",GetPlayerAdminRank(playerid),GetName(playerid),level);
            
SendClientMessage(ID,-1,poruka);
            
format(poruka3,650,"{FFFFFF}Postavljeni ste na administraciju poziciju od strane vlasnika. Pozicija: %s.\nKao clan administracije prihvacate pravila napisana na nasoj forum stranici.\nCestitke na tituli od citave WG Administracije.Nadamo se da cete uspjesno ispunjvati svoju duznost.\n\n{FF0000}*{FFFFFF} Dolje navedeni kod zapisite negdje na papir ili u text dokument jer ce vam\npri svakom logiranju na server on biti potreban za ulazenje na racun:\n%d",GetPlayerAdminRank(level),randomiziraj);
            
ShowPlayerDialog(ID,DIALOG_DEFAULT2,DIALOG_STYLE_MSGBOX,"WG Administration",poruka3,"Uredu","");
            
format(poruka,256,"{0080FF}WG{FFFFFF}: Postavili ste %sa za administratora na levelu %d",GetName(ID),level);
            
SendClientMessage(playerid,-1,poruka);
            
format(poruka,256,"{FF0000}[A-INFO]: %s {FFFFFF}%s je postavio %su administratora na levelu %d",GetPlayerAdminRank(playerid),GetName(playerid),GetName(ID),level);
            
SendAdminMessage(-1,poruka);
            
printf("ADMIN: %s je postavio %s za administratora na levelu %d",GetName(playerid),GetName(ID),level);
            
            new 
INI:UFile INI_Open(UserPath(ID));
            
INI_SetTag(UFile,"Podatci");
            
INI_WriteInt(UFile,"pAdminKod",PlayerInfo[ID][pAdminKod]);
            
INI_Close(UFile);
        }
     }
    return 
1;

EDIT: Un commencted the lines.
Reply
#9

It is because you are assigning admin rank 1 to the place where your variable returns 0 which should be player.

You need to do something like this instead.

PHP код:
stock GetPlayerAdminRank(playerid)
{
    new 
level[64];
    switch (
PlayerInfo[playerid][pAdministrator])
    {
        case 
0level "{FF0000}Player";
        case 
1level "{FF0000}Admin I{FFFFFF}";
        case 
2level "{FF0000}Admin II{FFFFFF}";
        case 
3level "{FF0000}Admin III{FFFFFF}";
        case 
4level "{FF0000}Direktor{FFFFFF}";
        case 
5level "{FF0000}Vlasnik{FFFFFF}";
    }
    return 
level;

Your variable starts counting from 0 so you have to assign something with it like null or whatever, i have set it Player cause players have no level.
Reply
#10

Quote:
Originally Posted by Sjn
Посмотреть сообщение
It is because you are assigning admin rank 1 to the place where your variable returns 0 which should be player.

You need to do something like this instead.

PHP код:
stock GetPlayerAdminRank(playerid)
{
    new 
level[64];
    switch (
PlayerInfo[playerid][pAdministrator])
    {
        case 
0level "{FF0000}Player";
        case 
1level "{FF0000}Admin I{FFFFFF}";
        case 
2level "{FF0000}Admin II{FFFFFF}";
        case 
3level "{FF0000}Admin III{FFFFFF}";
        case 
4level "{FF0000}Direktor{FFFFFF}";
        case 
5level "{FF0000}Vlasnik{FFFFFF}";
    }
    return 
level;

Your variable starts counting from 0 so you have to assign something with like like null or whatever, i have set it Player cause players have no level.
Switch doesnt "count" them. Switch goes straight to assigned value.

PHP код:
MyFunction(playerid) {
    new 
switchid 2;
    switch(
switchid) {
        case 
0: print("Hi");
        case 
1: print("Hi"); 
        case 
2: print("Hi"); // jumps to case 2 straight away.
    
}
    return 
true;
}
MyFunction(playerid) {
    new 
switchid 2;
    if(
switchid == 0) return print("Hi"); //checks
    
else if(switchid == 1) return print("Hi"); //checks
    
else if(switchid == 2) return print("Hi"); //checks
    
return true;

If you want to check if they are not any of that.
PHP код:
MyFunction(playerid) {
    new 
switchid 2;
    switch(
switchid) {
        case 
1: print("Hi");
        case 
2: print("Hi"); // jumps to case 2 straight away.
        
default: print("Not 1 or 2"); //if it isnt 1-2
    
}
    return 
true;

Therefore imagine that 0 doesnt represent anything. You are correct in 1 way, he should have default value incase they are above 5 or bellow 1. But defining just case 0 would be plain dumb just because there is no usage at all for him.

PHP код:
stock GetPlayerAdminRank(playerid)
{
    new 
level[64];
    switch (
PlayerInfo[playerid][pAdministrator])
    {
        case 
1level "{FF0000}Admin I{FFFFFF}";
        case 
2level "{FF0000}Admin II{FFFFFF}";
        case 
3level "{FF0000}Admin III{FFFFFF}";
        case 
4level "{FF0000}Direktor{FFFFFF}";
        case 
5level "{FF0000}Vlasnik{FFFFFF}";
        default: 
level "Player";
    }
    return 
level;

Reply


Forum Jump:


Users browsing this thread: