SA-MP Forums Archive
Holding key function? - 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: Holding key function? (/showthread.php?tid=371309)



Holding key function? - RelaxCafe - 23.08.2012

Is there any function released or a something releated to holding down a key? Well, would it be like a timer? if(newkeys == 128 ) blahh ... and again and again? Well, that would make it tapping..


Re: Holding key function? - RedJohn - 23.08.2012

pawn Код:
#define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define RELEASED(%0) \
    (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(PRESSED(KEY_FIRE))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            AddVehicleComponent(GetPlayerVehicleID(playerid), 1010); //Add nitro on click pressed
        }
    }
    if(RELEASED(KEY_FIRE))
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            RemoveVehicleComponent(GetPlayerVehicleID(playerid), 1010); //Remove nitro on click release
        }
    }
    return 1;
}



Re: Holding key function? - clarencecuzz - 23.08.2012

Or you could use:
pawn Код:
#define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        {
            if(PRESSED(KEY_FIRE))
            {
                AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
            }
            else
            {
                RemoveVehicleComponent(GetPlayerVehicleID(playerid), 1010);
        }
    }
    return 1;
}
Changed
Код:
PRESSED(KEY_FIRE)
to your desired key.

Check https://sampwiki.blast.hk/wiki/GetPlayerKeys for available Player Keys.


Re: Holding key function? - RedJohn - 23.08.2012

But result is same.


Re: Holding key function? - clarencecuzz - 23.08.2012

Exactly, but the code I posted is quicker and more efficient.


Re: Holding key function? - RedJohn - 23.08.2012

I think you missed one bracket:
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        {
            if(PRESSED(KEY_FIRE))
            {
                AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
            }
            else
            {
                RemoveVehicleComponent(GetPlayerVehicleID(playerid), 1010);
        }
    }
    return 1;
}
into

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        {
            if(PRESSED(KEY_FIRE))
            {
                AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
            }
            else
            {
                RemoveVehicleComponent(GetPlayerVehicleID(playerid), 1010);
            } //This is missing
        }
    }
    return 1;
}



Re: Holding key function? - clarencecuzz - 23.08.2012

meh. It happens when you're typing it out on an iPhone :S


Re: Holding key function? - RedJohn - 23.08.2012

xD. Just saying cuz some newbies could copy/paste and it will be "huge" problem when they see errors.


Re: Holding key function? - Larry123 - 25.10.2012

But is there any function to check how long i hold button down? Like i want to do a system, which activate car ENGINE after i have holded KEY_FIRE down for 5 seconds. Is it possible?