Setlevel Admin Command
#1

Here Is My Setlevel Command

Код:
PInfo[id][Level] = level;//sets the level of the player
	dini_IntSet(file,"Level",level);//saves the new level to the file
	format(str,sizeof(str),"You have set %s's level to %d",n,level);//creates the string
	SendClientMessage(playerid,LIGHTBLUE,str);
	return 1;
}
And It Compiles With No Errors!

But When i type /setlevel <id>

It Set My Level To The Specified Id. Please Help
Reply
#2

SHow us the whole command since you say:

Quote:

But When i type /setlevel <id>

It Set My Level To The Specified Id. Please Help

And it seems you copied this code from a tutorial. You shouldn't copy and paste from tutorials..
Reply
#3

Код:
dcmd_setlevel(playerid,params[])
{
	new level,id,file[256],n[MAX_PLAYER_NAME];
	new tmp[256], tmp2[256], Index,str[50];
	tmp = strtok(params,Index), tmp2 = strtok(params,Index),id = strval(tmp),level = strval(tmp2);
	GetPlayerName(id,n,MAX_PLAYER_NAME);
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"You are not an RCON admin!");
	if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,"USAGE: /setlevel <ID> <Level>");
	if(!IsPlayerConnected(id))return SendClientMessage(playerid,COLOR_RED,"You have entered an incorrect ID");
	
	PlayerInfo[playerid][pAdminLevel] = pAdminLevel;
	dini_IntSet(file,"AdminLevel",level);
	format(str,sizeof(str),"You have set %s's level to %d",n,level);
	SendClientMessage(playerid,COLOR_BLUE,str);
	return 1;
}
Sorry! Here's The Whole Code
Reply
#4

Argh I just hate Strtok. Better use Sccanf. It's easier and better than the stock Strtok.
Reply
#5

Ok! So Can You Convert It TO Sscanf? I never used it before!
Reply
#6

Here download it first;

https://sampforum.blast.hk/showthread.php?tid=120356

EDIT:

Found your error:

PHP код:
PlayerInfo[playerid][pAdminLevel] = pAdminLevel
Should be:

PHP код:
PlayerInfo[id][pAdminLevel] = pAdminLevel
Reply
#7

Ok Then?
Reply
#8

I was faster ^^

PHP код:
dcmd_setlevel(playerid,params[])
{
    new 
level,id,file[256],n[100],n2[100];
    
GetPlayerName(id,n,100);
    
GetPlayerName(playerid,n2,100);
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"You are not an RCON admin!");
    if(!
IsPlayerConnected(id))return SendClientMessage(playerid,COLOR_RED,"You have entered an incorrect ID");
    if(
sscanf(params,"ui",id,level)) SendClientMessage(playerid,COLOR_RED,"Usage: setlevel 8id] [level]");
    
PlayerInfo[id][pAdminLevel] = level;
    
dini_IntSet(file,"AdminLevel",level);
    
format(str,sizeof(str),"You have set %s's level to %d",n,level);
    
SendClientMessage(playerid,COLOR_BLUE,str);
    
format(str,sizeof(str),"%s have set your Level to %d",n2,level);
    
SendClientMessage(id,COLOR_BLUE,str);
    return 
1;

Reply
#9

Here is an example with Sscanf:

PHP код:
dcmd_makeadmin(playeridparams[])
{
    new 
levelaname[MAX_PLAYER_NAME];
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridRed"You must be an Admin to use this command!");
    else
    {
        new 
targetid;
        if(
sscanf(params"ui"targetidlevel)) return SendClientMessage(playeridYellow"Correct Usage: /makeadmin [PlayerID][Level]");
        if(!
IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1"That play is not connected to the server");
        if(
level || level 10) return SendClientMessage(playeridLime"Admin Level Range Is From 2 To 10");
        new 
string1[90], tname[MAX_PLAYER_NAME], string2[90];
        
PlayerInfo[targetid][pAdmin]=level;
        
dini_IntSet(file,"AdminLevel",level);
        
GetPlayerName(playeridanamesizeof(aname));
        
GetPlayerName(targetidtnamesizeof(tname));
        
format(string1sizeof(string1), "Admin %s has set your Admin level to %i"anamelevel);
        
SendClientMessage(targetidGreenstring1);
        
format(string2sizeof(string1), ""COL_GREEN"Admin %s has set %s's level to %i"anametnamelevel);
        
SendClientMessageToAll(Yellowstring2);
    }
    return 
1;

Better yes?

EDIT:[Bios]Marcel: Yes you were faster!
Reply
#10

Then your command could look like this:

pawn Код:
dcmd_setlevel(playerid, params[])
{
    new id, level, n[MAX_PLAYER_NAME], str[128];

    if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not a RCON admin!");
    if (sscanf(params, "dd", id, level)) return SendClientMessage(playerid, COLOR_RED, "USAGE: /setlevel <ID> <Level>");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "You have entered an incorrect ID");
    GetPlayerName(id, n, MAX_PLAYER_NAME);
    PlayerInfo[id][pAdminLevel] = level;
    dini_IntSet(file, "AdminLevel", level);
    format(str, 128, "You have set %s's level to %d", n, level);
    SendClientMessage(playerid, COLOR_BLUE, str);
    return 1;
}
I also see that you set the level in your command to 'pAdminLevel'. That is incorrect?

EDIT: I was too late :S
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)