SA-MP Forums Archive
Need help for a simple command. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Need help for a simple command. (/showthread.php?tid=380996)



Need help for a simple command. - Dizzle - 27.09.2012

Well, I got a little problem with a command for selling guns and here it is -

Код:
if(strcmp(cmdtext,"/sellak",true)==0)
{
  new playerb, bullets;
  if(gTeam[playerid] !=  TEAM_GUNDEALERS) return SendClientMessage(playerid,COLOR_RED,"You are not Emmet's Place Worker!");
if(!IsPlayerNearPlayer(playerid, playerb, 5)) return SendClientMessage(playerid, COLOR_RED, "You are too far away from that player.");
  if(bullets < 1 || > 400) return SendClientMessage(playerid, 0xFF9900AA, "You can only take 1-400 bullets at once!");
  SendClientMessage(playerb, 0xFF9900AA, "Emmet Worker has given you a AK-47 and a box of ammo.");
  GivePlayerWeapon(playerb, 30, bullets);
  GivePlayerMoney(playerid, -500);
  return 1;
}
But when I try to sell to someone, it says "You are too far away from that player" or either "You can only take 1-400 bullets at once!"...

I've also added this function:

Код:
stock IsPlayerNearPlayer(playerid, targetid, Float:radius)
{
	new Float:x, Float:y, Float:z;
	GetPlayerPos(targetid, x, y, z);
	if(IsPlayerInRangeOfPoint(playerid, radius ,x, y, z))
	{
	    return 1;
	}
	return 0;
}
Did I forgot something ? It compiles fine and Im just confused, should I add "playerid" at "new playerb, bullets;" ?
Or If someone can make it working, thanks in advance.
Everyone who atleast try to help me will be +Repped x)


Re: Need help for a simple command. - RedJohn - 27.09.2012

pawn Код:
if(strcmp(cmdtext,"/sellak",true)==0)
{
    new playerb, bullets, Float:x, Float:y, Float:z;
    GetPlayerPos(playerb, x, y, z);
    if(gTeam[playerid] !=  TEAM_GUNDEALERS) return SendClientMessage(playerid,COLOR_RED,"You are not Emmet's Place Worker!");
    if(IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
    {
        if(bullets < 1 || bullets > 400) return SendClientMessage(playerid, 0xFF9900AA, "You can only take 1-400 bullets at once!");
        SendClientMessage(playerb, 0xFF9900AA, "Emmet Worker has given you a AK-47 and a box of ammo.");
        GivePlayerWeapon(playerb, 30, bullets);
        GivePlayerMoney(playerid, -500);
    }
    else SendClientMessage(playerid, COLOR_RED, "You are too far away from that player.");
    return 1;
}
Try it.


Re: Need help for a simple command. - Dizzle - 27.09.2012

Thanks, I will... anyways, thanks for replying x)

P.S: +Repped


Re: Need help for a simple command. - Dizzle - 27.09.2012

Im sorry for double-posting, but its the same again, I think its something else.. I mean if I type only /sellak, it shows me "You are too far away from this player", and when I type "/sell ak id ammo - ex: /sellak 1 50" it shows me unknown command ? What should be wrong ?


Re: Need help for a simple command. - zDevon - 27.09.2012

Do you have sscanf installed?


Re: Need help for a simple command. - Dizzle - 27.09.2012

Yeah I was thinking about that.. It may be cause of this - I dont have it.


Re: Need help for a simple command. - zDevon - 27.09.2012

Well it's not necessarily because you don't have it, but it's the easiest way to accomplish what you're trying to do here. Install it, and try this out.
pawn Код:
if(strcmp(cmdtext,"/sellak",true)==0)
{
    new playerb, bullets;
    if(sscanf(params,"ii",playerb,bullets)) return SendClientMessage(playerid,-1,"Usage: /sellak [id] [ammo]");
    else {
        if(gTeam[playerid] !=  TEAM_GUNDEALERS) return SendClientMessage(playerid,COLOR_RED,"You are not Emmet's Place Worker!");
        else {
            if(IsPlayerNearPlayer(playerid, playerb, 5)) {
                if(bullets < 1 || > 400) return SendClientMessage(playerid, 0xFF9900AA, "You can only take 1-400 bullets at once!");
                else {
                    SendClientMessage(playerb, 0xFF9900AA, "Emmet Worker has given you a AK-47 and a box of ammo.");
                    GivePlayerWeapon(playerb, 30, bullets);
                    GivePlayerMoney(playerb, -500);
                    GivePlayerMoney(playerid,500);
                }
            }
            else return SendClientMessage(playerid, COLOR_RED, "You are too far away from that player.");
        }
    }
    return 1;
}



Re: Need help for a simple command. - mamorunl - 28.09.2012

The problem was indeed caused by not specifying any parameters. They magically appear and are not used at all. So playerb is always ID 0 and bullets as well.

The problem with above code from zDevon is, that the variable PARAMS doesn't exist. Even he is making stuff up. Switch to another command processor (damn, I have done that a lot in the past 15 minutes) to fully enjoy sscanf and the easiness of writing commands.