Holding key function?
#1

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..
Reply
#2

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;
}
Reply
#3

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.
Reply
#4

But result is same.
Reply
#5

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

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;
}
Reply
#7

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

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

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?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)