SetAdmin command.
#1

Hey, I'm working on different commands, not just the one in the title and my problem is.

I can't set a specific level for the admin, I can only increase it by one.
I use ZCMD, sscanf, enumerators.


Basically I have an enum

PlayerInfo[playerid][pAdmin]

Up until now I just used the command like, if the player using it is PlayerInfo[playerid][pAdmin] >= 6
he'll set the other player ID(PID) an admin lvl ++

Like;

PlayerInfo[playerid][pAdmin]++;


However I want to make it so that it works like this:


/setadmin (playerid) (admin level(1-4)

But I don't know how to make it so that the Enum increases by a set number and not always by 1.

Help :/?
Reply
#2

PHP код:
CMD:setlevel(playeridparams[])
{
    new
        
string[200],
        
id,
        
level
    
;
    
LoginCheck(playerid);
    if(
User[playerid][pAdmin] >= || IsPlayerAdmin(playerid))
    {
        if(
sscanf(params"ui"idlevel)) return SendClientMessage(playeridCOLOR_RED"USAGE: /setadmin [playerid] [level(0/5)]");
        if(
id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1"» "red"Player not connected.");
        if(
level || level 5) return SendClientMessage(playerid, -1"» "red"Invalid admin level.");
        if(
level == User[id][pAdmin]) return SendClientMessage(playerid, -1"» "red"Player is already in that level.");
        if(
User[id][accountLogged] == false) return SendClientMessage(playerid, -1"» "red"Player not logged in.");
        if(
User[id][pAdmin] < level)
        {
            
format(string128"» "green"You have been promoted to level %d administrative rank by %s."levelGetName(playerid));
            
SendClientMessage(id, -1string);
            
format(string128"» "green"You have promoted %s to level %d administrative rank."GetName(id), level);
            
SendClientMessage(playerid, -1string);
            
format(string128"%s has been promoted to level %d admin by %s."GetName(id), levelGetName(playerid));
        }
        else if(
User[id][pAdmin] > level)
        {
            
format(string128"» "red"You have been demoted to level %d administrative rank by %s."levelGetName(playerid));
            
SendClientMessage(id, -1string);
            
format(string128"» "red"You have demoted %s to level %d administrative rank."GetName(id), level);
            
SendClientMessage(playerid, -1string);
            
format(string128"%s has been demoted to level %d admin by %s."GetName(id), levelGetName(playerid));
        }
        
User[id][pAdmin] = level;
        
SavePlayer(id); // This will save the players data . change it.
    
}
    else
    {
        
SendClientMessage(playerid, -1"» "red"You are not authorized to use this command.");
    }
    return 
1;

PHP код:
stock GetName(playerid)
{
    new 
pName[24];
    
GetPlayerName(playeridpName24);
    return 
pName;

Reply
#3

Quote:
Originally Posted by Arxalan
Посмотреть сообщение
PHP код:
CMD:setlevel(playeridparams[])
{
    new
        
string[200],
        
id,
        
level
    
;
    
LoginCheck(playerid);
    if(
User[playerid][pAdmin] >= || IsPlayerAdmin(playerid))
    {
        if(
sscanf(params"ui"idlevel)) return SendClientMessage(playeridCOLOR_RED"USAGE: /setadmin [playerid] [level(0/5)]");
        if(
id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1"» "red"Player not connected.");
        if(
level || level 5) return SendClientMessage(playerid, -1"» "red"Invalid admin level.");
        if(
level == User[id][pAdmin]) return SendClientMessage(playerid, -1"» "red"Player is already in that level.");
        if(
User[id][accountLogged] == false) return SendClientMessage(playerid, -1"» "red"Player not logged in.");
        if(
User[id][pAdmin] < level)
        {
            
format(string128"» "green"You have been promoted to level %d administrative rank by %s."levelGetName(playerid));
            
SendClientMessage(id, -1string);
            
format(string128"» "green"You have promoted %s to level %d administrative rank."GetName(id), level);
            
SendClientMessage(playerid, -1string);
            
format(string128"%s has been promoted to level %d admin by %s."GetName(id), levelGetName(playerid));
        }
        else if(
User[id][pAdmin] > level)
        {
            
format(string128"» "red"You have been demoted to level %d administrative rank by %s."levelGetName(playerid));
            
SendClientMessage(id, -1string);
            
format(string128"» "red"You have demoted %s to level %d administrative rank."GetName(id), level);
            
SendClientMessage(playerid, -1string);
            
format(string128"%s has been demoted to level %d admin by %s."GetName(id), levelGetName(playerid));
        }
        
User[id][pAdmin] = level;
        
SavePlayer(id); // This will save the players data . change it.
    
}
    else
    {
        
SendClientMessage(playerid, -1"» "red"You are not authorized to use this command.");
    }
    return 
1;

PHP код:
stock GetName(playerid)
{
    new 
pName[24];
    
GetPlayerName(playeridpName24);
    return 
pName;

That's just a copied code from your gamemode. He doesn't have your variable..

Here's:

pawn Код:
CMD:setadmin(playerid, params[])
{
    new ID, Level, string[144], name[MAX_PLAYER_NAME], pname[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You are not authorized to use this command.");
    if(sscanf(params, "ui", ID, Level)) return SendClientMessage(playerid, -1, "{FF0000}USAGE: {FFFFFF}/SetAdmin [Player ID] [Level]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}That player is not connected.");
    if(Level > 4) return SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}Invalid Level. [0 - 4]");
    if(PlayerInfo[ID][pAdmin] == Level) return SendClientMesage(playerid, -1, "{FF0000}ERROR: {FFFFFF}That player already it's havin' that Admin Level.");
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(ID, pname, sizeof(pname));
    format(string, sizeof(string), "{FF0000}[ADMIN]: {FFFFFF}Administrator {FF0000}%s {FFFFFF}has setted your Admin Status to {FF0000}%i.", name, Level);
    SendClientMessage(ID, -1, string);
    format(string, sizeof(string), "{FF0000}[ADMIN]: {FFFFFF}You've setted {FF0000}%s's {FFFFFF}Admin Status to {FF0000}%i.", pname, Level);
    SendClientMessage(playerid, -1, string);
    PlayerInfo[ID][pAdmin] = Level; // Sets to that Player Admin Level to his specified Level.
    return 1;
}
I hope you use ZCMD and SSCANF.
Reply
#4

pawn Код:
CMD:setadmin(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You are no administrator.");
    if(sscanf(params, "ui", params[0], params[1]) return SendClientMessage(playerid, -1, "usage: /setadmin [playerid/name] [level 0-4].");
    if(!IsPlayerConnected(params[0])) return SendClientMesage(playerid, -1, "Player no connected.");
    if(params[1] > 4) return SendClientMessage(playerid, -1, "Level incorrect. min 0, max 4.");
    if(PlayerInfo[params[0]][pAdmin] == params[1]) return SendClientMessage(playerid, -1, "Player already this level.");
   
    new g_string[102], name_player[2][24];
    GetPlayerName(playerid, name_player[0], 24), GetPlayerName(params[0], name_player[1], 24);
    format(g_string, sizeof(g_string), "Administrador %s has been administrator level %d as %s.", name_player[0], params[1], name_player[1]);
    SendClientMessageToAll(-1, g_string);
    PlayerInfo[params[0]][pAdmin] = params[1];
    return true;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)