Command help
#1

This code works but whenever I use /usepot pipe or /usepot bong it will not work - It only works when I do /usepot paper - P.S Im sure that I have bongs and Pipes on me before trying. Please help me ASAP. Will +REP you.

pawn Код:
if(strcmp(cmd, "/usepot", true) == 0 || strcmp(cmd, "/usepot", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            new x_nr[32];
            x_nr = strtok(cmdtext, idx);
            if(!strlen(x_nr))
            {
                SendClientMessage(playerid, COLOR_WHITE, "USAGE: /usepot [name]");
                SendClientMessage(playerid, COLOR_GRAD1, "Available names: Paper Pipe Bong");
                return 1;
            }
            if(strcmp(x_nr,"Paper",true) == 0)
            {
            if(UseDrugsTimer[playerid]) return SendClientMessage(playerid,COLOR_GREY,"   You must wait 5 seconds !");
            if(PlayerBoxing[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You can't use Pot while you are Boxing !");
                return 1;
            }
            if(PlayerPotStoned[playerid] >= 6)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You are too stoned to use Pot !");
                return 1;
            }
            if(PlayerInfo[playerid][pPot] > 1 && PlayerInfo[playerid][pPaper] >= 1)
            {
                new Float:health;
                GetPlayerHealth(playerid, health);
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if(health > 80)
                {
                SetPlayerHealth(playerid, 90.0);
                }
                else
                {
                SetPlayerHealth(playerid, health + 10.0);
                }
                PlayerPotStoned[playerid] += 1;
                if(PlayerPotStoned[playerid] >= 6)
                {
                    GameTextForPlayer(playerid, "~w~You are~n~~p~Stoned", 4000, 1);
                    SetPlayerDrunkLevel(playerid, 500000);
                    SetPlayerWeather(playerid, -59);
                }
                SendClientMessage(playerid, COLOR_GRAD1, "   You used 1 gram of pot !");
                if(PlayerInfo[playerid][pMask] == 1)
                {
                    format(string, sizeof(string), "* Stranger has used some pot.");
                }
                else
                {
                    format(string, sizeof(string), "* %s has used some pot.", sendername);
                }
                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; PlayerInfo[playerid][pPot] -= 1; PlayerInfo[playerid][pPaper] -= 1;
                SetTimerEx("UseDrugs",5*1000,0,"i",playerid);
            }
            else if(strcmp(x_nr,"Pipe",true) == 0)
            {
            if(UseDrugsTimer[playerid]) return SendClientMessage(playerid,COLOR_GREY,"   You must wait 5 seconds !");
            if(PlayerBoxing[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You can't use Pot while you are Boxing !");
                return 1;
            }
            if(PlayerPotStoned[playerid] >= 6)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You are too stoned to use Pot !");
                return 1;
            }
            if(PlayerInfo[playerid][pPot] > 1 && PlayerInfo[playerid][pPipe] >= 0)
            {
                new Float:health;
                GetPlayerHealth(playerid, health);
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if(health > 80)
                {
                SetPlayerHealth(playerid, 100.0);
                }
                else
                {
                SetPlayerHealth(playerid, health + 20.0);
                }
                PlayerPotStoned[playerid] += 1;
                if(PlayerPotStoned[playerid] >= 6)
                {
                    GameTextForPlayer(playerid, "~w~You are~n~~p~Stoned", 4000, 1);
                    SetPlayerDrunkLevel(playerid, 500000);
                    SetPlayerWeather(playerid, -59);
                }
                SendClientMessage(playerid, COLOR_GRAD1, "   You used 2 grams of pot !");
                if(PlayerInfo[playerid][pMask] == 1)
                {
                    format(string, sizeof(string), "* Stranger has used some pot.");
                }
                else
                {
                    format(string, sizeof(string), "* %s has used some pot.", sendername);
                }
                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; PlayerInfo[playerid][pPot] -= 2; PlayerInfo[playerid][pPipe] -= 1;
                SetTimerEx("UseDrugs",5*1000,0,"i",playerid);
            }
            else if(strcmp(x_nr,"Bong",true) == 0)
            {
            if(UseDrugsTimer[playerid]) return SendClientMessage(playerid,COLOR_GREY,"   You must wait 5 seconds !");
            if(PlayerBoxing[playerid] > 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You can't use Pot while you are Boxing !");
                return 1;
            }
            if(PlayerPotStoned[playerid] >= 6)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You are too stoned to use Pot !");
                return 1;
            }
            if(PlayerInfo[playerid][pPot] > 2 && PlayerInfo[playerid][pBong] >= 0)
            {
                new Float:health;
                GetPlayerHealth(playerid, health);
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if(health > 80)
                {
                SetPlayerHealth(playerid, 110.0);
                }
                else
                {
                SetPlayerHealth(playerid, health + 30.0);
                }
                PlayerPotStoned[playerid] += 1;
                if(PlayerPotStoned[playerid] >= 6)
                {
                    GameTextForPlayer(playerid, "~w~You are~n~~p~Stoned", 4000, 1);
                    SetPlayerDrunkLevel(playerid, 500000);
                    SetPlayerWeather(playerid, -59);
                }
                SendClientMessage(playerid, COLOR_GRAD1, "   You used 3 grams of pot !");
                if(PlayerInfo[playerid][pMask] == 1)
                {
                    format(string, sizeof(string), "* Stranger has used some pot.");
                }
                else
                {
                    format(string, sizeof(string), "* %s has used some pot.", sendername);
                }
                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; PlayerInfo[playerid][pPot] -= 3; PlayerInfo[playerid][pBong] -= 1;
                SetTimerEx("UseDrugs",5*1000,0,"i",playerid);
            }
                else if(PlayerInfo[playerid][pPot] == 0)
            {
                     SendClientMessage(playerid, COLOR_GREY, "   You dont have any pot left !");
                    }
                }
            }
        }
    }
        return 1;
    }
Reply
#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


Forum Jump:


Users browsing this thread: 1 Guest(s)