invalid id ...
#1

im making this command Set admin level and when i want to set myself lv 1 -2 etc it says invaild level ....
can anyone of you tell me what i made wrong?

pawn Код:
dcmd_setlevel(playerid,params[])
{
    if(AccInfo[playerid][LoggedIn] == 1)
    {
        if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
        {
            new tmp [256];
            new tmp2[256];
            new Index;
            tmp  = strtok(params,Index);
            tmp2 = strtok(params,Index);
            if(!strlen(params))
            {
            new string[128];
            format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
            SendClientMessage(playerid,LIGHTBLUE2,string);
            return SendClientMessage(playerid, orange, " will set admin lv");
            }
            new player1, level, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
            player1 = strval(tmp);
            if(!strlen(tmp2)) return
            SendClientMessage(playerid, LIGHTBLUE2, "Usage: /setlevel [PlayerID] [Level (0/5)]") &&
            SendClientMessage(playerid, orange, " will set admin lv");
            level = strval(tmp2);

            if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
                if(AccInfo[player1][LoggedIn] == 1)
                {
                if(level > ServerInfo[MaxAdminLevel])
                return SendClientMessage(playerid,red,"ERROR: Invalid Level");
                if(level == AccInfo[player1][Level])
                return SendClientMessage(playerid,red,"ERROR: Player is already this level");
                SendCommandToAdmins(playerid,"SetLevel");
                GetPlayerName(player1, playername, sizeof(playername));
                GetPlayerName(playerid, adminname, sizeof(adminname));
                new year,month,day;
                new hour,minute,second;
                getdate(year, month, day);
                gettime(hour,minute,second);
Reply
#2

Why are you using strtok? It's horribly inefficient - I suggest you use the sscanf2 plugin for the purpose of parameter splitting.

pawn Код:
dcmd_setlevel(playerid,params[])
{
    if(AccInfo[playerid][LoggedIn] == 1)
    {
        if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
        {
            new
                playername[MAX_PLAYER_NAME],
                adminname[MAX_PLAYER_NAME],
                string[128],
                player1,
                level;
           
            if (!sscanf(params, "ud", player1, level))
            {
                format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
                SendClientMessage(playerid,LIGHTBLUE2,string);
                return SendClientMessage(playerid, orange, " will set admin lv");
            }
            else if (player1 != INVALID_PLAYER_ID &&)
            {
                if (AccInfo[player1][LoggedIn] == 1)
                {
                    if (level > ServerInfo[MaxAdminLevel])
                        return SendClientMessage(playerid,red,"ERROR: Invalid Level");
               
                    if (level == AccInfo[player1][Level])
                        return SendClientMessage(playerid,red,"ERROR: Player is already this level");
               
                    SendCommandToAdmins(playerid,"SetLevel");
                    GetPlayerName(player1, playername, sizeof(playername));
                    GetPlayerName(playerid, adminname, sizeof(adminname));
                    new year,month,day;
                    new hour,minute,second;
                    getdate(year, month, day);
                    gettime(hour,minute,second);
Reply
#3

it repeats the message of usage -_-
when i type /setlevel it shows again the same message
Usage: /setlevel [PlayerID] [Level (0/5)]
Reply
#4

My mistake, try this (haven't really scripted in a while, sorry):

pawn Код:
dcmd_setlevel(playerid,params[])
{
    if(AccInfo[playerid][LoggedIn] == 1)
    {
        if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
        {
            new
                playername[MAX_PLAYER_NAME],
                adminname[MAX_PLAYER_NAME],
                string[128],
                player1,
                level;
           
            if (sscanf(params, "ud", player1, level))
            {
                format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
                SendClientMessage(playerid,LIGHTBLUE2,string);
                return SendClientMessage(playerid, orange, " will set admin lv");
            }
            else if (player1 != INVALID_PLAYER_ID &&)
            {
                if (AccInfo[player1][LoggedIn] == 1)
                {
                    if (level > ServerInfo[MaxAdminLevel])
                        return SendClientMessage(playerid,red,"ERROR: Invalid Level");
               
                    if (level == AccInfo[player1][Level])
                        return SendClientMessage(playerid,red,"ERROR: Player is already this level");
               
                    SendCommandToAdmins(playerid,"SetLevel");
                    GetPlayerName(player1, playername, sizeof(playername));
                    GetPlayerName(playerid, adminname, sizeof(adminname));
                    new year,month,day;
                    new hour,minute,second;
                    getdate(year, month, day);
                    gettime(hour,minute,second);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)