-
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))
-
Próbáld ezzel:
if(HOLDING(KEY_UP) && (HOLDING(KEY_DOWN))
-
Így sem jó .. :confused:
-
É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.
-
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
-
Nem tudom hogy tudnék lekérdezni két gombot a GetPlayerKeys - el .. Tudnál írni rá egy példát ?
-
public OnPlayerUpdate(playerid)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if((keys & KEY_UP) && (keys & KEY_DOWN))
{
// ide a kód
}
}
-
Próbáltam már így is, de sajnos nem jó . :confused:
-
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.
-
Gondoltam, hogy gyári hibás lesz .. :confused: Azért köszönöm a válaszokat .