Jump to content
  • 0

pomoc OnPlayerKeyStateChange


Anonimus24

Dotaz

8 odpovědí na tuto otázku

Recommended Posts

  • 1
On 13. 4. 2020 at 9:37, Anonimus24 said:

if(oldkeys == KEY_WALK + KEY_SPRINT)

Kupovanie domov ti podľa mňa nefunguje, pretože tam porovnávaš oldkeys namiesto newkeys.

Ten samý problém u odchodu z domu:

On 13. 4. 2020 at 9:37, Anonimus24 said:

if(oldkeys == KEY_WALK)

Edited by DuFF
Link to comment
Share on other sites

  • 1
  • Administrátor
if(newkeys == KEY_WALK + KEY_SPRINT)

Přeloženo

if( newkeys == 1024+8)// 1032

Seznam kláves v samp:

#define KEY_ACTION				(1)
#define KEY_CROUCH				(2)
#define KEY_FIRE				(4)
#define KEY_SPRINT				(8)
#define KEY_SECONDARY_ATTACK	(16)
#define KEY_JUMP				(32)
#define KEY_LOOK_RIGHT			(64)
#define KEY_HANDBRAKE			(128)
#define KEY_LOOK_LEFT			(256)
#define KEY_SUBMISSION			(512)
#define KEY_LOOK_BEHIND			(512)
#define KEY_WALK				(1024)
#define KEY_ANALOG_UP			(2048)
#define KEY_ANALOG_DOWN			(4096)
#define KEY_ANALOG_LEFT			(8192)
#define KEY_ANALOG_RIGHT		(16384)
#define KEY_YES					(65536)
#define KEY_NO					(131072)
#define KEY_CTRL_BACK			(262144)

#define KEY_UP					(-128)
#define KEY_DOWN				(128)
#define KEY_LEFT				(-128)
#define KEY_RIGHT				(128)

Klávesa 1032 404

Link to comment
Share on other sites

  • 1
On 14. 4. 2020 at 8:20, Ewwe said:

Klávesa 1032 404

Klávesy fungujú ako bitmaska, určite to nie je neexistujúca klávesa.

1032 by malo byť stlačené KEY_WALK a KEY_SPRINT (a nič iné) naraz.

Ak chceš, aby bolo možné mať okrem týchto 2 kláves stlačené aj niečo iné, musíš v newkeys kontrolovať iba prislúchajúce bity (bitwise operátormi).

Napríklad nejak takto:

if (newkeys & (KEY_SPRINT | KEY_WALK))

Prípadne na samp wiki na stránke s OnPlayerKeyStateChange nájdeš makrá na detekciu stlačenia 1 alebo viac kláves.

Ale predpokladám, že toto nie je tvoj hlavný problém.

Edited by DuFF
Link to comment
Share on other sites

  • 0
  • Administrátor
před 17 minutami, DuFF said:

Klávesy fungujú ako bitmaska, určite to nie je neexistujúca klávesa.

1032 by malo byť stlačené KEY_WALK a KEY_SPRINT (a nič iné) naraz.

Ak chceš, aby bolo možné mať okrem týchto 2 kláves stlačené aj niečo iné, musíš v newkeys kontrolovať iba prislúchajúce bity (bitwise operátormi).

Napríklad nejak takto:

if (newkeys & (KEY_SPRINT | KEY_WALK))

Prípadne na samp wiki na stránke s OnPlayerKeyStateChange nájdeš makrá na detegovanie stlačenia 1 alebo viac kláves.

Ale predpokladám, že toto nie je tvoj hlavný problém.

Seš si jistej.. Neměl by tam být nějakej bitovej operator a ne plus ?

Link to comment
Share on other sites

  • 0
před 12 minutami, Ewwe said:

Seš si jistej.. Neměl by tam být nějakej bitovej operator a ne plus

V tomto prípade je podľa mňa jedno, či tam bude + alebo | (keďže 8 a 1024 obsahujú iba jednu jedničku a to na rôznych bitoch). Dôležitejšie je skôr použitie toho & miesto rovnosti.

Dolných 16 bitov z 1024:

0000 0100 0000 0000

Dolných 16 bitov z 8:

0000 0000 0000 1000

 

  0000 0100 0000 0000

| 0000 0000 0000 1000

--------------------------------------

  0000 0100 0000 1000 (1032)

Edited by DuFF
Link to comment
Share on other sites

  • 0
  • Administrátor

já právě myslel ze tam musí bejt & ... Tak kdyz to rikas musel bych to jedine vezkouset a na to nemam ani pawno ani sanačko tak asi to tak bude

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...