Код:
if(strcmp(cmd,"/materials",true)==0)
{
if(IsPlayerConnected(playerid))
{
if (PlayerInfo[playerid][pJob] != 1)
{
SendClientMessage(playerid,COLOR_LIGHTYELLOW2,"[ERROR:] Your not an arms dealer!");
return 1;
}
new x_nr[256];
x_nr = strtok(cmdtext, idx);
if(!strlen(x_nr)) {
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[USAGE:] /materials [usage]");
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[USAGES:] buy, dropoff.");
return 1;
}
new moneys;
moneys = strval(tmp);
if(moneys < 1 || moneys > 10) { SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] Maximum number of packages is 10."); return 1; }
new price = moneys * 100;
if(!strcmp(tmp, "buy",true,4))
{
if(PlayerToPoint(3.0,playerid,GunJob[BuyPackagesX],GunJob[BuyPackagesY],GunJob[BuyPackagesZ]))
{
if(MatsHolding[playerid] >= 10)
{
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] You can't hold any more packages.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
if(GetPlayerCash(playerid) > price)
{
format(string, sizeof(string), "[INFO:] You got %d materials packages - Cost: $%d.", moneys, price);
SendClientMessage(playerid, COLOR_WHITE, string);
GivePlayerCash(playerid, - price);
MatsHolding[playerid] = moneys;
}
return 1;
}
// new moneys;
moneys = strval(tmp);
if(moneys < 1 || moneys > 10) { SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] Maximum number of packages is 10."); return 1; }
// new price = moneys * 100;
if(GetPlayerCash(playerid) > price)
{
format(string, sizeof(string), "[INFO:] You got %d materials packages - Cost: $%d.", moneys, price);
SendClientMessage(playerid, COLOR_WHITE, string);
GivePlayerCash(playerid, - price);
MatsHolding[playerid] = moneys;
}
else
{
format(string, sizeof(string), "[ERROR:] You don't have $%d.", price);
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, string);
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] You are not at the materials package place!");
return 1;
}
}
if(!strcmp(tmp, "drop",true,4))
{
if(PlayerToPoint(3.0,playerid,GunJob[DeliverX],GunJob[DeliverY],GunJob[DeliverZ]))
{
if(MatsHolding[playerid] > 0)
{
new payout = (50)*(MatsHolding[playerid]);
format(string, sizeof(string), "{INFO:] Materials packages delivered, you got %d materials.", payout);
SendClientMessage(playerid, COLOR_WHITE, string);
PlayerInfo[playerid][pMaterials] += payout;
MatsHolding[playerid] = 0;
}
else
{
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] You don't even have any packages!");
return 1;
}
}
else
{
if(MatsHolding[playerid] > 0)
{
new payout = (50)*(MatsHolding[playerid]);
format(string, sizeof(string), "{INFO:] Materials packages delivered, you got %d materials.", payout);
SendClientMessage(playerid, COLOR_WHITE, string);
PlayerInfo[playerid][pMaterials] += payout;
MatsHolding[playerid] = 0;
}
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] Invalid Usage.");
return 1;
}
}
return 1;
}
offtopic: Sorry for long reply, I posted this at like 2:00am in the morning. I ended up falling asleep :P
it[strtok] is very slow in comparison to other methods, one of these methods, dcmd, is explained here along with a method of extracting parameters safely and quickly from the entered command. "[/url]