SA-MP Forums Archive
OnPlayerKeyStateChange - 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: OnPlayerKeyStateChange (/showthread.php?tid=94484)



OnPlayerKeyStateChange - Abernethy - 30.08.2009

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
  new keys, updown, leftright;
    new Float:X, Float:Y, Float:Z;
    if (AirBreakMode[playerid] == 1)
    {
      GetPlayerKeys(playerid, keys, updown, leftright);

      if (updown == KEY_UP)
        {
            GetPlayerPos(playerid, X, Y, Z);
            SetPlayerPos(playerid, X, Y+2.5, Z);
            PlayerPlaySound(playerid, 1138, X, Y, Z);
        }
        else if (updown == KEY_DOWN)
        {
            GetPlayerPos(playerid, X, Y, Z);
            SetPlayerPos(playerid, X, Y-2.5, Z);
            PlayerPlaySound(playerid, 1138, X, Y, Z);
        }
       
        else if (leftright == KEY_RIGHT)
        {
            GetPlayerPos(playerid, X, Y, Z);
            SetPlayerPos(playerid, X+2.5, Y, Z);
            PlayerPlaySound(playerid, 1138, X, Y, Z);
        }
       
        else if (leftright == KEY_LEFT)
        {
            GetPlayerPos(playerid, X, Y, Z);
            SetPlayerPos(playerid, X-2.5, Y, Z);
            PlayerPlaySound(playerid, 1138, X, Y, Z);
        }
    }
    return 1;
}
I've been trying to make a little bit of code that when you type /amove. You enter a mode where you can press the UP, DOWN, LEFT, & RIGHT keys to move Y+/- and X+/-
It isn't going too well. I don't have much experience at all with OnPlayerKeyStateChange. When I press capslock though; my character moves Y-2.5. I need to know how to properly use this.


Re: OnPlayerKeyStateChange - Zeex - 30.08.2009

Use "&" operator (bit and), e.g.:
pawn Код:
if (newkeys & KEY_ANALOG_UP)
{
    // Up arrow pressed
}
if (newkeys & KEY_ANALOG_LEFT)
{
    // left arrow pressed
}
....
etc.



Re: OnPlayerKeyStateChange - Correlli - 30.08.2009

You can't detect keys UP, DOWN, LEFT or RIGHT at OnPlayerKeyStateChange callback, use GetPlayerKeys with the timer.