Szerző Téma: HOLDING( KEY_UP | KEY_DOWN )  (Megtekintve 1237 alkalommal)

Nem elérhető Amf

  • 1459
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Dátum: 2013. szeptember 25. - 11:24:53 »
0 Show voters
Sziasztok !
Valamiért, ezen a lekérdezésen nem jut tovább: if( HOLDING( KEY_UP | KEY_DOWN ) )
Próbáltam már, KEY_ANALOG_UP - al, de úgy sem .. a wikin is így írták le példának ..
Arra szolgálna, hogy lekérdezzem vele, hogy füstölteti - e a gumikat a játékos.
 
#define HOLDING(%0) \\ ((newkeys & (%0)) == (%0))

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #1 Dátum: 2013. szeptember 25. - 11:33:40 »
0 Show voters
Próbáld ezzel:
 

if(HOLDING(KEY_UP) && (HOLDING(KEY_DOWN))

Nem elérhető Amf

  • 1459
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #2 Dátum: 2013. szeptember 25. - 12:16:29 »
0 Show voters
Így sem jó ..  :confused:

HOLDING( KEY_UP | KEY_DOWN )
« Válasz #3 Dátum: 2013. szeptember 25. - 15:24:09 »
0 Show voters
Én így oldanám meg:
Új definek:
 

#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define RELEASED(%0) \\
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))

 
Új változók:
 

new HoldingUp[MAX_PLAYERS];
new HoldingDown[MAX_PLAYERS];
new Drifting[MAX_PLAYERS];

 
És maga a rendszer lelke ami az OnPlayerKeyStateChange-ba megy:
 

if(PRESSED(KEY_UP))
{
HoldingUp[playerid] = 1;
}
if(RELASED(KEY_UP))
{
HoldingUp[playerid] = 0;
}
if(PRESSED(KEY_DOWN))
{
HoldingUp[playerid] = 1;
}
if(RELASED(KEY_DOWN))
{
HoldingUp[playerid] = 0;
}
if(HoldingUp[playerid] == 1 && HoldingDown[playerid] == 1)
{
Drifting[playerid] = 1;   
}
else
{
Drifting[playerid] = 0;   
}

 
Tehát ha égeti a gumikat akkor a Drifting[playerid] változó értéke 1.

HOLDING( KEY_UP | KEY_DOWN )
« Válasz #4 Dátum: 2013. szeptember 25. - 16:44:56 »
0 Show voters
A-a, ezekre nem válaszol az OnPlayerKeyStateChange.A  GetPlayerKeys()-el kell lekérdezned õket, vagy egy timer, vagy egy OnPlayerUpdate alatt.
Példa:
http://wiki.sa-mp.com/wiki/GetPlayerKeys
« Utoljára szerkesztve: 2013. szeptember 25. - 17:36:43 írta kadaradam »

Nem elérhető Amf

  • 1459
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #5 Dátum: 2013. szeptember 25. - 17:23:37 »
0 Show voters
Nem tudom hogy tudnék lekérdezni két gombot a GetPlayerKeys - el .. Tudnál írni rá egy példát ?

HOLDING( KEY_UP | KEY_DOWN )
« Válasz #6 Dátum: 2013. szeptember 25. - 17:32:42 »
0 Show voters

public OnPlayerUpdate(playerid)
{
    new Keys,ud,lr;
    GetPlayerKeys(playerid,Keys,ud,lr);
    if((keys & KEY_UP) && (keys & KEY_DOWN))
    {
        // ide a kód
    }
}

Nem elérhető Amf

  • 1459
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #7 Dátum: 2013. szeptember 25. - 18:43:55 »
0 Show voters
Próbáltam már így is, de sajnos nem jó .  :confused:

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #8 Dátum: 2013. szeptember 25. - 22:50:55 »
0 Show voters
Nem oldható meg. Sajnos az van hogyha a \"KEY_UP\" és a \"KEY_DOWN\" gombot egyszerre nyomod meg, \"KEY_DOWN\"-ként megy tovább. Vagyis olyan mintha csak a lefele gombot érzékelné. Még akkor is ha a \"KEY_UP\" gombot hamarabb nyomod le tizedmásodpercekkel.
« Utoljára szerkesztve: 2013. szeptember 25. - 22:52:39 írta BoOy »

Nem elérhető Amf

  • 1459
    • Profil megtekintése
HOLDING( KEY_UP | KEY_DOWN )
« Válasz #9 Dátum: 2013. szeptember 26. - 13:49:04 »
0 Show voters
Gondoltam, hogy gyári hibás lesz ..  :confused:  Azért köszönöm a válaszokat .

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal