SA-MP Forums Archive
checkpoint ain't showing with IsPlayerInRangeOfPoint - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: checkpoint ain't showing with IsPlayerInRangeOfPoint (/showthread.php?tid=147972)



checkpoint ain't showing with IsPlayerInRangeOfPoint - Andy_McKinley - 15.05.2010

Hello, I made a checkpoint, under OnPlayerSpawn, I didn't want it to show on map when a player spawns, so I added IsPlayerInRangeOfPoint. But the checkpoint isn't showing, that's the problem.

THIS IS UNDER ONPLAYERSPAWN
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 3.0, -1422.1245,-288.1826,14.1484))
    {
        SetPlayerCheckpoint(playerid,-1422.1245,-288.1826,14.1484, 3.1);
    }
    return 1;



Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - [MWR]Blood - 15.05.2010

You missed a brace.
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 3.0, -1422.1245,-288.1826,14.1484))
{
    SetPlayerCheckpoint(playerid,-1422.1245,-288.1826,14.1484, 3.0);
return 1;
}



Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - juice.j - 15.05.2010

Quote:
Originally Posted by ikarus❶❸❸❼
...
Not really no, syntax wise there is no problem with that code.


What is the result that you want to have? Your current code creates a checkpoint if a player spawns near the checkpoint location.


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - Andy_McKinley - 15.05.2010

Quote:
Originally Posted by juice.j
Quote:
Originally Posted by ikarus❶❸❸❼
...
Not really no, syntax wise there is no problem with that code.


What is the result that you want to have? Your current code creates a checkpoint if a player spawns near the checkpoint location.
I tried what ikarus said! But, I want, when a player is near of that point, the checkpoint appears. Everyone spawns somewhere else.
What I need to do?


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - juice.j - 15.05.2010

As I said, syntax wise, your code is fine - you are not missing a bracket anywhere.

However to get the result you actually want you have to use OnPlayerSpawn is the wrong callback to use (as that only gets triggered when a player spawns).

I am not too sure whether this is the best solution but for instance you might check the current player coordinations with a loop with a timed function.

Код:
forward Inc_CheckPoint();
public Inc_Checkpoint(){
   for(new i=0;i<MAX_PLAYERS;i++){
     if(!IsPlayerConnected(i))
        continue;
     if(IsPlayerInRangeOfPoint(i,){   // intended coordinations
        // your code that shall be executed
     }
}

SetTimer("Inc_CheckPoint",5000,1);
Now this is definitely not a good solution ressource wise and I'd suggest you to come up with a workaround - but to start with and to give you an idea it should do good.

Another problem is, that there can be exceptions and no checkpoints show up if a player quickly runs through the area while the function doesn't trigger in that very moment (in the example above it's called each 5000ms).


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - Andy_McKinley - 15.05.2010

Quote:
Originally Posted by juice.j
As I said, syntax wise, your code is fine - you are not missing a bracket anywhere.

However to get the result you actually want you have to use OnPlayerSpawn is the wrong callback to use (as that only gets triggered when a player spawns).

I am not too sure whether this is the best solution but for instance you might check the current player coordinations with a loop with a timed function.

Код:
forward Inc_CheckPoint();
public Inc_Checkpoint(){
   for(new i=0;i<MAX_PLAYERS;i++){
     if(!IsPlayerConnected(i))
        continue;
     if(IsPlayerInRangeOfPoint(i,){  // intended coordinations
        // your code that shall be executed
     }
}

SetTimer("Inc_CheckPoint",5000,1);
Now this is definitely not a good solution ressource wise and I'd suggest you to come up with a workaround - but to start with and to give you an idea it should do good.
Is this all needed? Seriously, I only want to show checkpoint when a player is in range of that point, why the hell do I need timer? o.O


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - juice.j - 15.05.2010

Well, how do you want to check and especially - where - whether the player is in that range or not?

You can of course try workarounds and use functions getting called on other events, hence I straightly mentioned that in my post


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - Andy_McKinley - 15.05.2010

Quote:
Originally Posted by juice.j
Well, how do you want to check and especially - where - whether the player is in that range or not?

You can of course try workarounds and use functions getting called on other events, hence I straightly mentioned that in my post
IsPlayerInRangeOfPoint of course, maybe something else that works.


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - juice.j - 15.05.2010

That's not the problem. Where to put IsPlayerInRangeOfPoint is the question you have to ask yourself.


Re: checkpoint ain't showing with IsPlayerInRangeOfPoint - Killa_ - 15.05.2010

IsPlayerInRangeOfPoint doesnt call itself, you need to call it with a timer or another callback.