detect if a player is near
#1

how to detect if a player is near a npc?? ima need it for my drug bot xD && the npc wont be in one place xD
Reply
#2

Here you go

pawn Код:
forward GetClosestPlayer(p1);
forward Float:GetDistanceBetweenPlayers(p1,p2);
pawn Код:
public GetClosestPlayer(p1)
{
    new x,Float:dis,Float:dis2,player;
    player = -1;
    dis = 99999.99;
    for (x=0;x<MAX_PLAYERS;x++)
    {
        if(IsPlayerConnected(x))
        {
            if(x != p1)
            {
                dis2 = GetDistanceBetweenPlayers(x,p1);
                if(dis2 < dis && dis2 != -1.00)
                {
                    dis = dis2;
                    player = x;
                }
            }
        }
    }
    return player;
}
pawn Код:
public Float:GetDistanceBetweenPlayers(p1,p2)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
        return -1.00;
    }
    GetPlayerPos(p1,x1,y1,z1);
    GetPlayerPos(p2,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
Reply
#3

Tanks but mind telling me how to use this?? xD
Reply
#4

Now I figure out easly way

each one second,
GetPlayerPos(npc,x,y,z)
if(IsPlayerInRangeOfPoint(playerid,3.0,x,y,z))
{
"You are near of NPC"
}

if you need whole script , just ask
Reply
#5

teheh just a little script to show me? please
Reply
#6

tehe gots it && of topic nice pic xD
Reply
#7

Here you go
pawn Код:
public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(YOUR_NPC_ID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,3.0,x,y,z))
    {
        SendClientMessage(playerid,0xFFFFFFFF,"NPC Says: hello, Im NPC, what can I do for you?");
    }
    return 1;
}
Reply
#8

Quote:
Originally Posted by ikey07
Посмотреть сообщение
Here you go
pawn Код:
public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(YOUR_NPC_ID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,3.0,x,y,z))
    {
        SendClientMessage(playerid,0xFFFFFFFF,"NPC Says: hello, Im NPC, what can I do for you?");
    }
    return 1;
}
Are you serious? that would spam your chatbox every 0.02 seconds or so.
Reply
#9

Maybe set it on like a 30 second timer. Idk. Or just like make a checkpoint and when player enter's the checkpoint display the text.
Reply
#10

Quote:
Originally Posted by WackoX
Посмотреть сообщение
Are you serious? that would spam your chatbox every 0.02 seconds or so.
Well, I only showed the script, what he put under it, its not my Biz, because there is ppls who understand only when there is SendClientMessage, than some only understand where he must put his code, I hope you got.

I belive that SendClient.... isn't good idea on some timers, but that was only script example!!!!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)