Ria
Как функционирует спидометор:
- Для повышения передачи нужно нажать клавишу Y, а для понижение передачи нужно нажать на клавишу N.
- Передачу нужно повышать тогда, когда цвет передачи изменится с красного на зеленый.
- Чтобы переключится на следующую передачу, нужно достичь определенную скорость.
Стандартные настройки:
Выкл. двигатель -> Передача 1 = Скорость 0
Передача 1 -> Передача 2 = Скорость 20
Передача 2 -> Передача 3 = Скорость 40
Передача 3 -> Передача 4 = Скорость 60
Передача 4 -> Передача 5 = Скорость 75
Передача 5 -> Передача 6 = Скорость 95
К всем #define
К всем forward
К всем new
В public OnPlayerConnect(playerid)
В public OnPlayerUpdate( playerid )
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
В public OnVehicleSpawn(vehicleid)
В public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
В public OnPlayerExitVehicle(playerid, vehicleid)
В конец мода
Вот и все автор V1ceC1ty
- Для повышения передачи нужно нажать клавишу Y, а для понижение передачи нужно нажать на клавишу N.
- Передачу нужно повышать тогда, когда цвет передачи изменится с красного на зеленый.
- Чтобы переключится на следующую передачу, нужно достичь определенную скорость.
Стандартные настройки:
Выкл. двигатель -> Передача 1 = Скорость 0
Передача 1 -> Передача 2 = Скорость 20
Передача 2 -> Передача 3 = Скорость 40
Передача 3 -> Передача 4 = Скорость 60
Передача 4 -> Передача 5 = Скорость 75
Передача 5 -> Передача 6 = Скорость 95
К всем #define
PHP:
#define GEAR1_SPEED 20 //Speeds player must reach in order to change up a gear
#define GEAR2_SPEED 40 //Speeds player must reach in order to change up a gear
#define GEAR3_SPEED 60 //Speeds player must reach in order to change up a gear
#define GEAR4_SPEED 75 //Speeds player must reach in order to change up a gear
#define GEAR5_SPEED 95 //Speeds player must reach in order to change up a gear
#define GEAR_UP KEY_YES
#define GEAR_DOWN KEY_NO
К всем forward
PHP:
forward SetPlayerSpeedCap( playerid, Float:value );
forward DisablePlayerSpeedCap( playerid );
PHP:
new Text:Circle[MAX_PLAYERS];
new Text:Disc1[MAX_PLAYERS];
new Text:Disc2[MAX_PLAYERS];
new Text:Disc3[MAX_PLAYERS];
new Text:Speed[MAX_PLAYERS];
new Text:Gear[MAX_PLAYERS];
new Text:Disc4[MAX_PLAYERS];
new Text:StartEnd[MAX_PLAYERS];
new Text:Rev0[MAX_PLAYERS];
new Text:Rev2[MAX_PLAYERS];
new Text:Rev4[MAX_PLAYERS];
new Text:Rev6[MAX_PLAYERS];
new Text:Rev8[MAX_PLAYERS];
new vGear[MAX_PLAYERS] = 1;
new KillSpeed;
В public OnPlayerConnect(playerid)
PHP:
Circle[playerid] = TextDrawCreate(520.000000, 360.000000, "ld_beat:cring");
TextDrawBackgroundColor(Circle[playerid], 255);
TextDrawFont(Circle[playerid], 4);
TextDrawLetterSize(Circle[playerid], 0.500000, 1.000000);
TextDrawColor(Circle[playerid], -1);
TextDrawSetOutline(Circle[playerid], 0);
TextDrawSetProportional(Circle[playerid], 1);
TextDrawSetShadow(Circle[playerid], 1);
TextDrawUseBox(Circle[playerid], 1);
TextDrawBoxColor(Circle[playerid], 255);
TextDrawTextSize(Circle[playerid], 81.000000, 80.000000);
Disc1[playerid] = TextDrawCreate(620.000000, 350.000000, "hud:radardisc");
TextDrawBackgroundColor(Disc1[playerid], 255);
TextDrawFont(Disc1[playerid], 4);
TextDrawLetterSize(Disc1[playerid], 0.500000, 1.000000);
TextDrawColor(Disc1[playerid], -1);
TextDrawSetOutline(Disc1[playerid], 0);
TextDrawSetProportional(Disc1[playerid], 1);
TextDrawSetShadow(Disc1[playerid], 1);
TextDrawUseBox(Disc1[playerid], 1);
TextDrawBoxColor(Disc1[playerid], 255);
TextDrawTextSize(Disc1[playerid], -60.000000, 60.000000);
Disc2[playerid] = TextDrawCreate(620.000000, 470.000000, "hud:radardisc");
TextDrawBackgroundColor(Disc2[playerid], 255);
TextDrawFont(Disc2[playerid], 4);
TextDrawLetterSize(Disc2[playerid], 0.500000, 1.000000);
TextDrawColor(Disc2[playerid], -1);
TextDrawSetOutline(Disc2[playerid], 0);
TextDrawSetProportional(Disc2[playerid], 1);
TextDrawSetShadow(Disc2[playerid], 1);
TextDrawUseBox(Disc2[playerid], 1);
TextDrawBoxColor(Disc2[playerid], 255);
TextDrawTextSize(Disc2[playerid], -60.000000, -60.000000);
Disc3[playerid] = TextDrawCreate(500.000000, 470.000000, "hud:radardisc");
TextDrawBackgroundColor(Disc3[playerid], 255);
TextDrawFont(Disc3[playerid], 4);
TextDrawLetterSize(Disc3[playerid], 0.500000, 1.000000);
TextDrawColor(Disc3[playerid], -1);
TextDrawSetOutline(Disc3[playerid], 0);
TextDrawSetProportional(Disc3[playerid], 1);
TextDrawSetShadow(Disc3[playerid], 1);
TextDrawUseBox(Disc3[playerid], 1);
TextDrawBoxColor(Disc3[playerid], 255);
TextDrawTextSize(Disc3[playerid], 60.000000, -60.000000);
Disc4[playerid] = TextDrawCreate(500.000000, 350.000000, "hud:radardisc");
TextDrawBackgroundColor(Disc4[playerid], 255);
TextDrawFont(Disc4[playerid], 4);
TextDrawLetterSize(Disc4[playerid], 0.500000, 1.000000);
TextDrawColor(Disc4[playerid], -1);
TextDrawSetOutline(Disc4[playerid], 0);
TextDrawSetProportional(Disc4[playerid], 1);
TextDrawSetShadow(Disc4[playerid], 1);
TextDrawUseBox(Disc4[playerid], 1);
TextDrawBoxColor(Disc4[playerid], 255);
TextDrawTextSize(Disc4[playerid], 60.000000, 60.000000);
Speed[playerid] = TextDrawCreate(560.000000, 419.000000, "---");
TextDrawAlignment(Speed[playerid], 2);
TextDrawBackgroundColor(Speed[playerid], 255);
TextDrawFont(Speed[playerid], 2);
TextDrawLetterSize(Speed[playerid], 0.600000, 2.000000);
TextDrawColor(Speed[playerid], -1);
TextDrawSetOutline(Speed[playerid], 1);
TextDrawSetProportional(Speed[playerid], 1);
TextDrawUseBox(Speed[playerid], 1);
TextDrawBoxColor(Speed[playerid], -869072784);
TextDrawTextSize(Speed[playerid], 0.000000, -56.000000);
Gear[playerid] = TextDrawCreate(560.000000, 379.000000, "0");
TextDrawAlignment(Gear[playerid], 2);
TextDrawBackgroundColor(Gear[playerid], 255);
TextDrawFont(Gear[playerid], 2);
TextDrawLetterSize(Gear[playerid], 0.699999, 4.000000);
TextDrawColor(Gear[playerid], -1);
TextDrawSetOutline(Gear[playerid], 1);
TextDrawSetProportional(Gear[playerid], 1);
StartEnd[playerid] = TextDrawCreate(559.000000, 430.000000, "~g~/ ~r~\\");
TextDrawAlignment(StartEnd[playerid], 2);
TextDrawBackgroundColor(StartEnd[playerid], 255);
TextDrawFont(StartEnd[playerid], 1);
TextDrawLetterSize(StartEnd[playerid], 0.600000, 2.000000);
TextDrawColor(StartEnd[playerid], -1);
TextDrawSetOutline(StartEnd[playerid], 0);
TextDrawSetProportional(StartEnd[playerid], 1);
TextDrawSetShadow(StartEnd[playerid], 1);
Rev0[playerid] = TextDrawCreate(505.000000, 430.000000, "0");
TextDrawAlignment(Rev0[playerid], 2);
TextDrawBackgroundColor(Rev0[playerid], 255);
TextDrawFont(Rev0[playerid], 2);
TextDrawLetterSize(Rev0[playerid], 0.500000, 1.000000);
TextDrawColor(Rev0[playerid], -1);
TextDrawSetOutline(Rev0[playerid], 1);
TextDrawSetProportional(Rev0[playerid], 1);
Rev2[playerid] = TextDrawCreate(500.000000, 385.000000, "2");
TextDrawAlignment(Rev2[playerid], 2);
TextDrawBackgroundColor(Rev2[playerid], 255);
TextDrawFont(Rev2[playerid], 2);
TextDrawLetterSize(Rev2[playerid], 0.500000, 1.000000);
TextDrawColor(Rev2[playerid], -1);
TextDrawSetOutline(Rev2[playerid], 1);
TextDrawSetProportional(Rev2[playerid], 1);
Rev4[playerid] = TextDrawCreate(531.000000, 349.000000, "~y~4");
TextDrawAlignment(Rev4[playerid], 2);
TextDrawBackgroundColor(Rev4[playerid], 255);
TextDrawFont(Rev4[playerid], 2);
TextDrawLetterSize(Rev4[playerid], 0.500000, 1.000000);
TextDrawColor(Rev4[playerid], -1);
TextDrawSetOutline(Rev4[playerid], 1);
TextDrawSetProportional(Rev4[playerid], 1);
Rev6[playerid] = TextDrawCreate(592.000000, 350.000000, "~r~~h~~h~~h~6");
TextDrawAlignment(Rev6[playerid], 2);
TextDrawBackgroundColor(Rev6[playerid], 255);
TextDrawFont(Rev6[playerid], 2);
TextDrawLetterSize(Rev6[playerid], 0.500000, 1.000000);
TextDrawColor(Rev6[playerid], -1);
TextDrawSetOutline(Rev6[playerid], 1);
TextDrawSetProportional(Rev6[playerid], 1);
Rev8[playerid] = TextDrawCreate(622.000000, 385.000000, "~r~8");
TextDrawAlignment(Rev8[playerid], 2);
TextDrawBackgroundColor(Rev8[playerid], 255);
TextDrawFont(Rev8[playerid], 2);
TextDrawLetterSize(Rev8[playerid], 0.500000, 1.000000);
TextDrawColor(Rev8[playerid], -1);
TextDrawSetOutline(Rev8[playerid], 1);
TextDrawSetProportional(Rev8[playerid], 1);
В public OnPlayerUpdate( playerid )
PHP:
static
s_iVehicle
;
if ( g_fSpeedCap[ playerid ] != 0.0 && GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
{
s_iVehicle = GetPlayerVehicleID( playerid );
if ( s_iVehicle )
{
static
Float:s_fX,
Float:s_fY,
Float:s_fZ,
Float:s_fVX,
Float:s_fVY,
Float:s_fVZ
;
GetVehiclePos( s_iVehicle, s_fX, s_fY, s_fZ );
GetVehicleVelocity( s_iVehicle, s_fVX, s_fVY, s_fVZ );
if ( !IsPlayerInRangeOfPoint( playerid, g_fSpeedCap[ playerid ] + 0.05, s_fX + s_fVX, s_fY + s_fVY, s_fZ + s_fVZ ) )
{
static
Float:s_fLength
;
s_fLength = floatsqroot( ( s_fVX * s_fVX ) + ( s_fVY * s_fVY ) + ( s_fVZ * s_fVZ ) );
s_fVX = ( s_fVX / s_fLength ) * g_fSpeedCap[ playerid ];
s_fVY = ( s_fVY / s_fLength ) * g_fSpeedCap[ playerid ];
s_fVZ = ( s_fVZ / s_fLength ) * g_fSpeedCap[ playerid ];
if ( s_iVehicle )
SetVehicleVelocity( s_iVehicle, s_fVX, s_fVY, s_fVZ );
else
SetPlayerVelocity( playerid, s_fVX, s_fVY, s_fVZ );
}
}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
new vehicle = GetPlayerVehicleID(playerid);
new engine, lights, alarm, doors, bonnet, boot, objective;
if(GetPlayerState(playerid) == 2) //Driver
{
if(PRESSED(GEAR_UP))
{
if(vGear[playerid] == 0 && GetPlayerSpeed(playerid) == 0) //Into Gear1(3)
{
GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicle, 1, lights, alarm, doors, bonnet, boot, 0);
vGear[playerid] = 1;
SetPlayerSpeedCap(playerid, 0.1);
TextDrawSetString(Gear[playerid], "~r~1");
KillSpeed = SetTimerEx("SpeedCheck", 2000, 1, "i", playerid);
}
else if(vGear[playerid] == 1 && GetPlayerSpeed(playerid) >= GEAR1_SPEED ) //Into Gear2(4)
{
vGear[playerid] = 2;
SetPlayerSpeedCap(playerid, 0.2);
TextDrawSetString(Gear[playerid], "~r~2");
}
else if(vGear[playerid] == 2 && GetPlayerSpeed(playerid) >= GEAR2_SPEED ) //Into Gear3(5)
{
vGear[playerid] = 3;
SetPlayerSpeedCap(playerid, 0.3);
TextDrawSetString(Gear[playerid], "~r~3");
}
else if(vGear[playerid] == 3 && GetPlayerSpeed(playerid) >= GEAR3_SPEED ) //Into Gear4(6)
{
vGear[playerid] = 4;
SetPlayerSpeedCap(playerid, 0.4);
TextDrawSetString(Gear[playerid], "~r~4");
}
else if(vGear[playerid] == 4 && GetPlayerSpeed(playerid) >= GEAR4_SPEED ) //Into Gear5(7)
{
vGear[playerid] = 5;
SetPlayerSpeedCap(playerid, 0.5);
TextDrawSetString(Gear[playerid], "~r~5");
}
else if(vGear[playerid] == 5 && GetPlayerSpeed(playerid) >= GEAR5_SPEED ) //Into Gear6(8)
{
vGear[playerid] = 6;
SetPlayerSpeedCap(playerid, 6.0);
TextDrawSetString(Gear[playerid], "~r~6");
}
}
else if(PRESSED(GEAR_DOWN))
{
if(vGear[playerid] == 1) //Into Off(0)
{
GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicle, 0, lights, alarm, doors, bonnet, boot, 0);
vGear[playerid] = 0;
KillTimer(KillSpeed);
TextDrawSetString(Gear[playerid], "~r~-");
}
else if(vGear[playerid] == 2)
{
vGear[playerid] = 1;
SetPlayerSpeedCap(playerid, 0.1);
TextDrawSetString(Gear[playerid], "~r~1");
}
else if(vGear[playerid] == 3)
{
vGear[playerid] = 2;
SetPlayerSpeedCap(playerid, 0.2);
TextDrawSetString(Gear[playerid], "~r~2");
}
else if(vGear[playerid] == 4)
{
vGear[playerid] = 3;
SetPlayerSpeedCap(playerid, 0.3);
TextDrawSetString(Gear[playerid], "~r~3");
}
else if(vGear[playerid] == 5)
{
vGear[playerid] = 4;
SetPlayerSpeedCap(playerid, 0.4);
TextDrawSetString(Gear[playerid], "~r~4");
}
else if(vGear[playerid] == 6)
{
vGear[playerid] = 5;
SetPlayerSpeedCap(playerid, 0.5);
TextDrawSetString(Gear[playerid], "~r~5");
}
else if(vGear[playerid] == 7)
{
vGear[playerid] = 6;
SetPlayerSpeedCap(playerid, 0.6);
TextDrawSetString(Gear[playerid], "~r~6");
}
}
}
PHP:
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, 0);
В public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
PHP:
new vehicle = GetPlayerVehicleID(playerid);
new engine, lights, alarm, doors, bonnet, boot, objective;
vGear[playerid] = 0;
SetPlayerSpeedCap(playerid, -0.0000000001);
GetVehicleParamsEx(vehicle, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicle, 0, lights, alarm, doors, bonnet, boot, 0);
ShowSpeedo(playerid);
KillSpeed = SetTimerEx("SpeedCheck", 2000, 1, "i", playerid);
В public OnPlayerExitVehicle(playerid, vehicleid)
PHP:
HideSpeedo(playerid);
KillTimer(KillSpeed);
PHP:
forward SpeedCheck(playerid);
public SpeedCheck(playerid)
{
new speedstr[32], vSpeed;
vSpeed = GetPlayerSpeed(playerid);
format(speedstr, sizeof(speedstr), "%i", vSpeed);
TextDrawSetString(Speed[playerid], speedstr);
if(vGear[playerid] == 0)
{
if(GetPlayerSpeed(playerid) == 0) TextDrawSetString(Gear[playerid], "~g~-");
else if(GetPlayerSpeed(playerid) > 0) TextDrawSetString(Gear[playerid], "~r~-");
}
else if(vGear[playerid] == 1)
{
if(GetPlayerSpeed(playerid) >= GEAR1_SPEED ) TextDrawSetString(Gear[playerid], "~g~1"); //If in gear 1, allow gear change 2
else if(GetPlayerSpeed(playerid) < GEAR1_SPEED ) TextDrawSetString(Gear[playerid], "~r~1");
}
else if(vGear[playerid] == 2)
{
if(GetPlayerSpeed(playerid) >= GEAR2_SPEED ) TextDrawSetString(Gear[playerid], "~g~2"); //If in gear 2, allow gear change 3
else if(GetPlayerSpeed(playerid) < GEAR2_SPEED ) TextDrawSetString(Gear[playerid], "~r~2");
}
else if(vGear[playerid] == 3)
{
if(GetPlayerSpeed(playerid) >= GEAR3_SPEED ) TextDrawSetString(Gear[playerid], "~g~3"); //If in gear 3, allow gear change 4
else if(GetPlayerSpeed(playerid) < GEAR3_SPEED ) TextDrawSetString(Gear[playerid], "~r~3");
}
else if(vGear[playerid] == 4)
{
if(GetPlayerSpeed(playerid) >= GEAR4_SPEED ) TextDrawSetString(Gear[playerid], "~g~4"); //If in gear 4, allow gear change 5
else if(GetPlayerSpeed(playerid) < GEAR4_SPEED ) TextDrawSetString(Gear[playerid], "~r~4");
}
else if(vGear[playerid] == 5)
{
if(GetPlayerSpeed(playerid) >= GEAR5_SPEED ) TextDrawSetString(Gear[playerid], "~g~5"); //If in gear 5, allow gear change 6
else if(GetPlayerSpeed(playerid) < GEAR5_SPEED ) TextDrawSetString(Gear[playerid], "~r~5");
}
return 1;
}
stock GetPlayerSpeed(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
return floatround(ST[3]);
}
public SetPlayerSpeedCap( playerid, Float:value )
{
if ( 0 <= playerid < sizeof( g_fSpeedCap ) )
g_fSpeedCap[ playerid ] = value;
}
public DisablePlayerSpeedCap( playerid )
{
if ( 0 <= playerid < sizeof( g_fSpeedCap ) )
g_fSpeedCap[ playerid ] = 0.0;
}
stock ShowSpeedo(playerid)
{
HideSpeedo(playerid);
TextDrawShowForPlayer(playerid, Circle[playerid]);
TextDrawShowForPlayer(playerid, Disc1[playerid]);
TextDrawShowForPlayer(playerid, Disc2[playerid]);
TextDrawShowForPlayer(playerid, Disc3[playerid]);
TextDrawShowForPlayer(playerid, Speed[playerid]);
TextDrawShowForPlayer(playerid, Gear[playerid]);
TextDrawShowForPlayer(playerid, Disc4[playerid]);
TextDrawShowForPlayer(playerid, StartEnd[playerid]);
TextDrawShowForPlayer(playerid, Rev0[playerid]);
TextDrawShowForPlayer(playerid, Rev2[playerid]);
TextDrawShowForPlayer(playerid, Rev4[playerid]);
TextDrawShowForPlayer(playerid, Rev6[playerid]);
TextDrawShowForPlayer(playerid, Rev8[playerid]);
return 1;
}
forward HideSpeedo(playerid);
public HideSpeedo(playerid)
{
TextDrawHideForPlayer(playerid, Circle[playerid]);
TextDrawHideForPlayer(playerid, Disc1[playerid]);
TextDrawHideForPlayer(playerid, Disc2[playerid]);
TextDrawHideForPlayer(playerid, Disc3[playerid]);
TextDrawHideForPlayer(playerid, Speed[playerid]);
TextDrawHideForPlayer(playerid, Gear[playerid]);
TextDrawHideForPlayer(playerid, Disc4[playerid]);
TextDrawHideForPlayer(playerid, StartEnd[playerid]);
TextDrawHideForPlayer(playerid, Rev0[playerid]);
TextDrawHideForPlayer(playerid, Rev2[playerid]);
TextDrawHideForPlayer(playerid, Rev4[playerid]);
TextDrawHideForPlayer(playerid, Rev6[playerid]);
TextDrawHideForPlayer(playerid, Rev8[playerid]);
return 1;
}
Вот и все автор V1ceC1ty
