Command help
#2

pawn Код:
if(strcmp(cmd, "/usepot", true) == 0)
    {
        if(!IsPlayerConnected(playerid)) return 1;
        new x_nr[32];
        x_nr = strtok(cmdtext, idx);
        if(strcmp(x_nr, "Paper", true) != 0 && strcmp(x_nr, "Pipe", true) != 0 && strcmp(x_nr, "Bong", true) != 0)
        {
            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /usepot [name]");
            return SendClientMessage(playerid, COLOR_GRAD1, "Available names: Paper Pipe Bong");
        }
        if(PlayerInfo[playerid][pPot] < 1) return SendClientMessage(playerid, COLOR_GREY, "   You don't have any Pot left !");
        if(UseDrugsTimer[playerid]) return SendClientMessage(playerid,COLOR_GREY,"   You must wait 5 seconds !");
        if(PlayerBoxing[playerid] > 0) return SendClientMessage(playerid, COLOR_GREY, "   You can't use Pot while you are Boxing !");
        if(PlayerPotStoned[playerid] >= 6) return SendClientMessage(playerid, COLOR_GREY, "   You are too stoned to use Pot !");
        new count = 0;
        if(strcmp(x_nr, "Paper", true) == 0)
        {
            if(PlayerInfo[playerid][pPaper] < 1) return SendClientMessage(playerid, COLOR_GREY, "   You don't have any paper left !");
            PlayerInfo[playerid][pPaper] -= 1;
            count = 1;
        }
        else if(strcmp(x_nr, "Pipe", true) == 0)
        {
            if(PlayerInfo[playerid][pPot] < 2) return SendClientMessage(playerid, COLOR_GREY, "   You don't have enough Pot for a pipe !");
            if(PlayerInfo[playerid][pPipe] < 1) return SendClientMessage(playerid, COLOR_GREY, "   You don't have any pipes left !");
            PlayerInfo[playerid][pPipe] -= 1;
            count = 2;
        }
        else if(strcmp(x_nr, "Bong", true) == 0)
        {
            if(PlayerInfo[playerid][pPot] < 3) return SendClientMessage(playerid, COLOR_GREY, "   You don't have enough Pot for a bong !");
            if(PlayerInfo[playerid][pBong] < 1) return SendClientMessage(playerid, COLOR_GREY, "   You don't have any bongs left !");
            PlayerInfo[playerid][pBong] -= 1;
            count = 3;
        }
        new Float:health, dstr[35], playersname[MAX_PLAYER_NAME];
        format(dstr, sizeof(dstr), "   You used %d grams of pot !", count);
        SendClientMessage(playerid, COLOR_GRAD1, dstr);
        GetPlayerHealth(playerid, health);
        if(health > 80) SetPlayerHealth(playerid, (80.0 + (count * 10.0)));
        else SetPlayerHealth(playerid, (health + (count * 10.0)));
        PlayerInfo[playerid][pPot] -= count;
        GetPlayerName(playerid, playersname, sizeof(playersname));
        PlayerPotStoned[playerid] += 1;
        if(PlayerPotStoned[playerid] >= 6)
        {
            GameTextForPlayer(playerid, "~w~You are~n~~p~Stoned", 4000, 1);
            SetPlayerDrunkLevel(playerid, 500000);
            SetPlayerWeather(playerid, -59);
        }
        if(PlayerInfo[playerid][pMask] == 1) format(string, sizeof(string), "* Stranger has used some pot.");
        else format(string, sizeof(string), "* %s has used some pot.", playersname);
        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
        if(!IsPlayerInAnyVehicle(playerid)) ApplyAnimation(playerid,"SMOKING","M_smkstnd_loop",4.0,0,0,0,0,0);
        UseDrugsTimer[playerid] = 1;
        SetTimerEx("UseDrugs", 5 * 1000, 0, "i", playerid);
        return 1;
    }
From 172 lines down to 58 lines. I've even impressed myself :P

I've edited your entire code that it will work in all aspects of the command usage. This was just a case of badly placed 'if' and 'else if' statements.

EDIT: I would recommend that you update from strcmp to ZCMD and SSCANF. Links to the plugins/includes can be found below:

ZCMD - https://sampforum.blast.hk/showthread.php?tid=91354
SSCANF - https://sampforum.blast.hk/showthread.php?tid=120356
YCMD - https://sampforum.blast.hk/showthread.php?tid=169029
Reply


Messages In This Thread
Command help - by San1 - 19.02.2014, 05:50
Re: Command help - by Threshold - 19.02.2014, 07:05

Forum Jump:


Users browsing this thread: 1 Guest(s)