Hogyne.
Tehát, az OnPlayerKeySate függvény egy kicsit rendhagyó a többihez képest.
( Wiki:
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )
Paraméterei a játékos ID és a leütött billentyûk.
Tehát, normális esetben így ellenõriznéd le hogy egy játékos lenyomott egy gombot:
[pawn]if (newkeys == KEY_FIRE)[/pawn]
Csakhogy ez hibás. Ehelyett így kell:
[pawn]if (newkeys & KEY_FIRE)[/pawn]
Ez pedig még nem teljes.
A definíció és használata:
[pawn]#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
if (PRESSED(KEY_FIRE))
//stb[/pawn]
Tulajdonképpen egyenértékû ezzel:
[pawn]if ( ((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)) )[/pawn]
Tehát a billentyû amit lenyomott a tüzelésé,
(newkeys & (KEY_FIRE)) == (KEY_FIRE)
de az elõzõleg lenyomott gomb nem a tüzelés
(oldkeys & (KEY_FIRE)) != (KEY_FIRE)
A wikin vannak további ellenõrzési módok (lenyomva tartja,felengedi stb..)