public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(vehDashboardToggled[playerid] == true)
{
if(IsPlayerInAnyVehicle(playerid))
{
new iVehicleID = GetPlayerVehicleID(playerid);
if(RELEASED(KEY_DOWN))
{
if(vehDashboardArrow[playerid] == 1)
{
TextDrawHideForPlayer(playerid, vehMenuArrow1TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow2TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 2;
}
else if(vehDashboardArrow[playerid] == 2)
{
TextDrawHideForPlayer(playerid, vehMenuArrow2TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow3TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 3;
}
}
else if(RELEASED(KEY_UP))
{
if(vehDashboardArrow[playerid] == 3)
{
TextDrawHideForPlayer(playerid, vehMenuArrow3TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow2TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 2;
}
else if(vehDashboardArrow[playerid] == 2)
{
TextDrawHideForPlayer(playerid, vehMenuArrow2TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow1TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 1;
}
}
else if(RELEASED(KEY_LEFT))
{
if(vehDashboardArrow[playerid] == 1)
{
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(engine != 1)
{
TextDrawSetString(vehicleEngineTD[playerid], "~g~ENGINE");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, 1, lights, alarm, doors, bonnet, boot, objective);
}
else
{
TextDrawSetString(vehicleEngineTD[playerid], "~r~ENGINE");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, 0, lights, alarm, doors, bonnet, boot, objective);
}
}
if(vehDashboardArrow[playerid] == 2)
{
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(engine != 1)
{
TextDrawSetString(vehicleEngineTD[playerid], "~g~LIGHTS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, 1, alarm, doors, bonnet, boot, objective);
}
else
{
TextDrawSetString(vehicleEngineTD[playerid], "~r~LIGHTS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, 0, alarm, doors, bonnet, boot, objective);
}
}
if(vehDashboardArrow[playerid] == 3)
{
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(doors != 1)
{
TextDrawSetString(vehicleDoorsTD[playerid], "~g~DOORS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, lights, alarm, 1, bonnet, boot, objective);
}
else
{
TextDrawSetString(vehicleEngineTD[playerid], "~r~DOORS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, lights, alarm, 0, bonnet, boot, objective);
}
}
}
else if(RELEASED(KEY_SECONDARY_ATTACK))
{
vehDashboardToggled[playerid] = false;
PlayerPlaySound(playerid, 1084, -1, -1, -1);
TogglePlayerControllable(playerid, true);
}
}
}
return 1;
}
CMD:dashboard(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid))
return false;
if(vehDashboardToggled[playerid] == true)
return false;
vehDashboardArrow[playerid] = 1;
vehDashboardToggled[playerid] = true;
TogglePlayerControllable(playerid, false);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
TextDrawShowForPlayer(playerid, vehMenuArrow1TD[playerid]);
return 1;
}
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
meh idk about secondary_attack but for keys up,down,left,right u can try using GetPlayerKeys...
can u help me with mine? https://sampforum.blast.hk/showthread.php?tid=311112 |
[08:32:44] OnPlayerKeyStateChange called. [08:32:44] OnPlayerKeyStateChange called. [08:32:47] OnPlayerKeyStateChange called. [08:32:47] OnPlayerKeyStateChange called. [08:32:55] OnPlayerKeyStateChange called. [08:32:55] OnPlayerKeyStateChange called. [08:33:10] OnPlayerKeyStateChange called. [08:33:10] After if:Bool [08:33:10] After IsPlayerInAnyVehicle [08:33:10] OnPlayerKeyStateChange called. [08:33:10] After if:Bool [08:33:10] After IsPlayerInAnyVehicle [08:33:12] OnPlayerKeyStateChange called. [08:33:12] After if:Bool [08:33:12] After IsPlayerInAnyVehicle [08:33:12] OnPlayerKeyStateChange called. [08:33:12] After if:Bool [08:33:12] After IsPlayerInAnyVehicle [08:33:12] RELEASED(KEY_SECONDARY_ATTACK)) [08:33:13] OnPlayerKeyStateChange called. [08:34:43] OnPlayerKeyStateChange called. [08:34:47] OnPlayerKeyStateChange called. [08:34:47] After if:Bool [08:34:47] After IsPlayerInAnyVehicle [08:34:48] OnPlayerKeyStateChange called. [08:34:48] After if:Bool [08:34:48] After IsPlayerInAnyVehicle [08:34:48] RELEASED(KEY_SECONDARY_ATTACK)) [08:34:51] OnPlayerKeyStateChange called. [08:34:51] OnPlayerKeyStateChange called. [08:34:53] OnPlayerKeyStateChange called. [08:35:03] OnPlayerKeyStateChange called.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
print("OnPlayerKeyStateChange called.");
new keys, ud, lr;
GetPlayerKeys(playerid, keys, ud, lr);
if(vehDashboardToggled[playerid] == true)
{
print("After if:Bool");
if(IsPlayerInAnyVehicle(playerid))
{
print("After IsPlayerInAnyVehicle");
new iVehicleID = GetPlayerVehicleID(playerid);
if(ud > 0)
{
print("After ud > 0");
if(vehDashboardArrow[playerid] == 1)
{
print("ud > 0 -- vehDashArrow[playerid] == 1");
TextDrawHideForPlayer(playerid, vehMenuArrow1TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow2TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 2;
}
else if(vehDashboardArrow[playerid] == 2)
{
print("ud > 0 -- vehDashArrow[playerid] == 2");
TextDrawHideForPlayer(playerid, vehMenuArrow2TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow3TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 3;
}
}
else if(ud < 0)
{
print("After ud < 0");
if(vehDashboardArrow[playerid] == 3)
{
print("ud < 0 -- vehDashArrow[playerid] == 3");
TextDrawHideForPlayer(playerid, vehMenuArrow3TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow2TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 2;
}
else if(vehDashboardArrow[playerid] == 2)
{
print("ud < 0 -- vehDashArrow[playerid] == 2");
TextDrawHideForPlayer(playerid, vehMenuArrow2TD[playerid]);
TextDrawShowForPlayer(playerid, vehMenuArrow1TD[playerid]);
PlayerPlaySound(playerid, 1083, -1, -1, -1);
vehDashboardArrow[playerid] = 1;
}
}
else if(lr > 0 || lr < 0)
{
print("lr > 0 || lr < 0");
if(vehDashboardArrow[playerid] == 1)
{
print("lr > 0 || lr < 0 -- vehDashArrow[playerid] == 1");
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(engine != 1)
{
print("engine != 1");
TextDrawSetString(vehicleEngineTD[playerid], "~g~ENGINE");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, 1, lights, alarm, doors, bonnet, boot, objective);
}
else
{
print("else ENGINE");
TextDrawSetString(vehicleEngineTD[playerid], "~r~ENGINE");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, 0, lights, alarm, doors, bonnet, boot, objective);
}
}
if(vehDashboardArrow[playerid] == 2)
{
print("lr > 0 || lr < 0 -- vehDashArrow[playerid] == 2");
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(lights != 1)
{
print("lights != 1");
TextDrawSetString(vehicleEngineTD[playerid], "~g~LIGHTS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, 1, alarm, doors, bonnet, boot, objective);
}
else
{
print("else LIGHTS");
TextDrawSetString(vehicleEngineTD[playerid], "~r~LIGHTS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, 0, alarm, doors, bonnet, boot, objective);
}
}
if(vehDashboardArrow[playerid] == 3)
{
print("lr > 0 || lr < 0 -- vehDashArrow[playerid] == 3");
PlayerPlaySound(playerid, 1083, -1, -1, -1);
if(doors != 1)
{
print("doors != 1");
TextDrawSetString(vehicleDoorsTD[playerid], "~g~DOORS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, lights, alarm, 1, bonnet, boot, objective);
}
else
{
print("else DOORS");
TextDrawSetString(vehicleEngineTD[playerid], "~r~DOORS");
GetVehicleParamsEx(iVehicleID, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(iVehicleID, engine, lights, alarm, 0, bonnet, boot, objective);
}
}
}
else if(RELEASED(KEY_SECONDARY_ATTACK))
{
print("RELEASED(KEY_SECONDARY_ATTACK))");
TextDrawHideForPlayer(playerid, vehMenuArrow1TD[playerid]);
TextDrawHideForPlayer(playerid, vehMenuArrow2TD[playerid]);
TextDrawHideForPlayer(playerid, vehMenuArrow3TD[playerid]);
vehDashboardToggled[playerid] = false;
PlayerPlaySound(playerid, 1084, -1, -1, -1);
TogglePlayerControllable(playerid, true);
}
}
}
return 1;
}
#define PRESSED(%0) (newkeys&(%0))&&!(oldkeys&(%0))
#define RELEASED(%0) (oldkeys&(%0))&&!(newkeys&(%0))
Up down left right buttons doesn't actually call OnPlayerKeyStateChange.
You have to check it with GetPlayerKeys in OnPlayerUpdate. Btw your PRESSED and RELEASED makros does check it bitwise and recheck if it is really this key. Mine does only check it faster anyhow.. pawn Код:
|