SA-MP Forums Archive
if player position don't change exist? - 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: if player position don't change exist? (/showthread.php?tid=461573)



if player position don't change exist? - Kapone21 - 02.09.2013

i need to do here:
Код:
			if(SweepTime[i] > 0)
			{
			    if(SweepTime[i] >= 16)
				{
					SweepTime[i] = 1;
					if(SweepDriver[i] < 999)
					{
						if(IsPlayerConnected(SweepDriver[i]))
						{
	      				return 1;
						}
					}
				}		
			    SweepTime[i] += 1;
				SweepCost[i] += 3;
			    format(string, sizeof(string), "~g~Salariul:%d$", SweepCost[i]);
			    GameTextForPlayer(i, string, 15000, 1);
			}
I want to SweepCost + 3 ONLY if Player drive the car ! and if stop to don't give money for him!


Re: if player position don't change exist? - Borg - 02.09.2013

you should save previous position and compare with current position. Declare variables with previous pos.
pawn Код:
new Float:lastPosition[MAX_PLAYERS][3];
As float isn't accurate type, it's better to use this foo
pawn Код:
stock IsPointInRangeOfPoint(Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2, Float:range)
{
    x2 -= x;
    y2 -= y;
    z2 -= z;
    return ((x2 * x2) + (y2 * y2) + (z2 * z2)) < (range * range);
}
and your finale code can be like
pawn Код:
if(SweepTime[i] > 0)
            {
                if(SweepTime[i] >= 16)
                {
                    SweepTime[i] = 1;
                    if(SweepDriver[i] < 999)
                    {
                        if(IsPlayerConnected(SweepDriver[i]))
                        {
                                return 1;
                        }
                    }
                }
                new Float:x, Float:y, Float:z;
                GetPlayerPos(playerid, x, y, z);
                if(!IsPointInRangeOfPoint(x, y, z, lastPosition[playerid][0], lastPosition[playerid][1], lastPosition[playerid][2], 0.1))
                {      
                    SweepTime[i] += 1;
                    SweepCost[i] += 3;
                    lastPosition[playerid][0] = x;
                    lastPosition[playerid][1] = y;
                    lastPosition[playerid][2] = z;
                }
                format(string, sizeof(string), "~g~Salariul:%d$", SweepCost[i]);
                GameTextForPlayer(i, string, 15000, 1);
            }