SA-MP Forums Archive
Detecting if player is on a pickup - 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: Detecting if player is on a pickup (/showthread.php?tid=358828)



Detecting if player is on a pickup - Jstylezzz - 11.07.2012

Hi everyone,

Like the title says, is there something like OnPlayerLeaveDynamicCP, but then for dynamic pickups?
I made something, that shows a textdraw when on a pickup, but i don't know how to hide them as soon as the player leaves the pickup..

Everything is welcome, thanks in advance


Re: Detecting if player is on a pickup - newbienoob - 11.07.2012

Use timer after they pickup the pickup.


Re: Detecting if player is on a pickup - Jstylezzz - 11.07.2012

Yeah, but how to check if the player is picking up something?
Maybe its pretty abvious, but im really tired xD


Re: Detecting if player is on a pickup - newbienoob - 11.07.2012

Maybe you can try this?
pawn Код:
//OnPlayerPickupPickup
{
    if(pickupid == yourpickupID)
    {
         TextDrawShow....()
         SetTimer("test",5000,false);
    }
    return 1;
}

forward test(playerid);
public test(playerid)
{
     TextDrawHideForPlayer();
     return 1;
}



Re: Detecting if player is on a pickup - Jstylezzz - 11.07.2012

ah, thats a great idea.. thanks


Re: Detecting if player is on a pickup - Joe Staff - 11.07.2012

What you should do is ignore the OnPlayerPickUpPickup and just determine if the player is within pickup range with a timer

pawn Код:
new PlayerPickup[MAX_PLAYERS];
new PickupPos[2][3]={        //2 Pickup positions of 3 dimensions
    {0.0,0.0,0.0},                //Pickup Positions (x,y,z)
    {1000.0,2000.0,-10.0}
};
stock GetPlayerPickup(playerid)return PlayerPickup[playerid];
forward PickupCheck();

public OnGameModeInit()
{
    SetTimer("PickupCheck",1000,1);

    for(new pickup;pickup<sizeof PickupPos; pickup++)
    CreatePickup(1242, 2, PickupPos[pickup][0], PickupPos[pickup][1], PickupPos[pickup][2], -1); //create visual pickup, you can also use 3D Texts or objects here
}
public PickupCheck()
{
    for(new playerid; playerid<MAX_PLAYERS;playerid++)
    {
        if(!IsPlayerConnected(playerid))continue;
        PlayerPickup[playerid]=-1;
        for(new pickup; pickup<sizeof PickupPos; pickup++)
        if(IsPlayerInRangeOfPoint(playerid,3.0,PickupPos[pickup][0],PickupPos[pickup][1],PickupPos[pickup][2]))
        {
            PlayerPickup[playerid]=pickup;
            //Place code here for ticking functions (every 1 second)
        }
    }
}
After this you could easily get what Pickup that the player is standing on with GetPlayerPickup(playerid) or you could set code to activate every second of the player standing on the pickup by placing it at the commented line. Also you should be able to easily define pickups