19.02.2014, 07:05
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;
}
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