09.12.2016, 16:32
I have this small drug system which has the command /selldrugs. Everything is stored in an enum, here is the code:
Now, I have looped the enum to set some variables to INVALID_PLAYER_ID using y_hooks.
Yes, I have defined y_hooks on top of the script.
Now whenever I try to sell the drugs, I always get the "You already have sent an offer to that user." message and I don't know why. I'm checking if the user sent an offer using the stock HasSentDrugsTo.
Код:
enum drugs
{
drugSender,
drugReceiver,
drugPrice,
drugAmount
}
new SellDrugs[1000][drugs];
hook OnGamemodeInit()
{
for(new i = 0; i < 1000; i++)
{
SellDrugs[i][drugSender] = INVALID_PLAYER_ID;
SellDrugs[i][drugReceiver] = INVALID_PLAYER_ID;
SellDrugs[i][drugPrice] = 0;
SellDrugs[i][drugAmount] = 0;
}
}
stock FreeDrugsSlot()
{
for(new i=0; i < 1000; i++)
{
if(SellDrugs[i][drugSender] == -1) return i;
break;
}
return -1;
}
stock HasSentDrugsTo(playerid, target)
{
for(new i=0; i < 1000; i++)
{
if(SellDrugs[i][drugReceiver] == target && SellDrugs[i][drugSender] == playerid) return 1;
break;
}
return 0;
}
CMD:selldrugs(playerid, params[])
{
new target, amount, price;
if(playerVariables[playerid][pJob] != 5) return SS(playerid, COOL_GREEN, "You're not a drugs dealer.", "Nu esti un dealer de droguri.");
if(sscanf(params, "rii", target, amount, price)) return SCM(playerid, COLOR_GREY, "Usage: {FFFFFF}/selldrugs [playerid] [amount] [price]");
if(HasSentDrugsTo(playerid, target)) return SS(playerid, COOL_GREEN, "You already have sent an offer to that user.", "Ai trimis deja o oferta jucatorului respectiv.");
new sd = FreeDrugsSlot();
SellDrugs[sd][drugSender] = playerid;
SellDrugs[sd][drugReceiver] = target;
SellDrugs[sd][drugPrice] = price;
SellDrugs[sd][drugAmount] = amount;
format(szMessage, sizeof(szMessage), "You have offered %s %dg drugs for $%s.", GetName(target), amount, NumberFormat(price));
SCM(playerid, COOL_GREEN, szMessage);
format(szMessage, sizeof(szMessage), "* %s has offered you %dg drugs for $%s.", GetName(playerid), amount, NumberFormat(price));
SCM(target, COOL_GREEN, szMessage);
return 1;
}
Yes, I have defined y_hooks on top of the script.
Now whenever I try to sell the drugs, I always get the "You already have sent an offer to that user." message and I don't know why. I'm checking if the user sent an offer using the stock HasSentDrugsTo.

