É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.