PDA

Просмотр полной версии : [Вопрос] Топливо авто на спидометре!



Den_Gurino
16.12.2018, 14:08
Здравствуйте все!
Сразу к делу, мод в котором я ковыряюсь, был обнаружен баг, на спидометре авто, ТД бензина не убавляется, и я не могу понять, толи бензин бесконечный, толи он очень медленно расходуется, толи ТД не работает по мере потребления топлива.
На том же спидометре есть шкала состояния машины, так вот она работает нормально, а горючка нет, вот код шкалы топлива!

switch(VehInfo[vehicleid][vFuel])
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1]," ");
case 1..3: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"II");
case 4..5: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"III");
case 6..7: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIII");
case 8..9: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIII");
case 10..11: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIII");
case 12..13: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIII");
case 14..15: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIII");
case 16..17: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIII");
case 18..19: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIII");
case 20..21: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIII");
case 22..23: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIII");
case 24..25: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIII");
case 26..27: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIII");
case 28..29: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIII");
case 30..31: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIII");
case 32..35: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIII");
case 36..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIII");
default: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIIII");
}

А вот полностью паблик спидометра, с этим кодом, который выше!

publics: UpdateSpeedometr(playerid)
{
if(!GetPVarInt(playerid,"ShowSpeed") || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!pTemp[playerid][pAFK])
{
new vehicleid = GetPVarInt(playerid,"VehicleEnters");
if(vehicleid <= 0) return 0;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 538) return 1;
if(VehInfo[vehicleid][vFuel] <= 1.0)
{
SendClientMessage(playerid,-1,""#net"В машине нет бензина");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);
return 0;
}

new Float:X2, Float:Y2, Float:Z2,Float:X,Float:Y,Float:Z;

X2 = VehInfo[vehicleid-1][vehicleX];
Y2 = VehInfo[vehicleid-1][vehicleY];
Z2 = VehInfo[vehicleid-1][vehicleZ];

GetVehicleVelocity(vehicleid,X,Y,Z);

new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))) * 126.31;

new PlayerSpeed = floatround(speed);

if (PlayerSpeed>=350)
{
OnPlayerCheat(playerid,AC_SPEED_HACKCAR_code, AC_KICK);
return 0;
}

if(PlayerSpeed <= 165 && VehInfo[vehicleid-1][vEngineRestyle] && GetPVarInt(playerid, "SPRINT_KEY") && VehInfo[vehicleid-1][vEngine] && GetPVarInt(playerid,"VehicleEnters") != 462)
{
new Float:vAngles, Float:dis = 0.05;
GetVehicleZAngle(vehicleid, vAngles);
SetVehicleVelocity(vehicleid,floatadd(X,floatmul(dis,floatsin(-vAngles,degrees))), floatadd(Y,floatmul(dis,floatcos(-vAngles,degrees))), Z);
}

if(GetPVarInt(playerid, "slimit") && PlayerSpeed >= GetPVarInt(playerid,"slimit"))
{
new Float:dif = GetPVarInt(playerid,"slimit") / speed;
SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
}

GetVehiclePos(vehicleid, X, Y, Z);
if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
{
SetVehicleToRespawn(vehicleid);
OnPlayerCheat(playerid, AC_PlayerSpeedHack_code, AC_KICK);
return 0;
}

//
VehInfo[vehicleid-1][vehicleX] = X;
VehInfo[vehicleid-1][vehicleY] = Y;
VehInfo[vehicleid-1][vehicleZ] = Z;
//
new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;

VehInfo[vehicleid-1][vDrived] += veloc;

if(VehInfo[vehicleid][vFuel] > 1.0 && !IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= (veloc*2);
else if(IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= 0.001;

new Float: CarH;
GetVehicleHealth(vehicleid, CarH);

switch(VehInfo[vehicleid][vFuel])
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1]," ");
case 1..3: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"II");
case 4..5: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"III");
case 6..7: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIII");
case 8..9: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIII");
case 10..11: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIII");
case 12..13: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIII");
case 14..15: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIII");
case 16..17: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIII");
case 18..19: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIII");
case 20..21: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIII");
case 22..23: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIII");
case 24..25: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIII");
case 26..27: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIII");
case 28..29: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIII");
case 30..31: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIII");
case 32..35: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIII");
case 36..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIII");
default: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIIII");
}

switch(floatround(CarH / 10.0, floatround_ceil))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2],"I");
case 1..10: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "II");
case 11..20: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIII");
case 21..30: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIII");
case 31..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIII");
case 51..60: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIII");
case 61..70: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIII");
case 71..80: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIIIII");
case 81..100: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2] ,"IIIIIIIIIIIIIIIIIIII");
}

format(string, 64, "%i", PlayerSpeed);
PlayerTextDrawSetString(playerid, TD_SPEED[playerid][0], string);

if(IsVehicleDrivingBackwards(vehicleid)) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N ~r~R ~w~1 2 3 4 5");
else
{
if(!PlayerSpeed) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~r~N ~w~R 1 2 3 4 5");
if(PlayerSpeed > 1 && PlayerSpeed < 40) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R ~r~1 ~w~2 3 4 5");
if(PlayerSpeed > 40 && PlayerSpeed < 79) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 ~r~2 ~w~3 4 5");
if(PlayerSpeed > 80 && PlayerSpeed < 109) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 ~r~3 ~w~4 5");
if(PlayerSpeed > 110 && PlayerSpeed < 129) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 ~r~4 ~w~5");
if(PlayerSpeed > 130 && PlayerSpeed < 220) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 4 ~r~5");
}
}
SetTimerEx("UpdateSpeedometr",200,0,"i",playerid);
return 1;
}
Помогите пожалуйста разобраться в этом! За помощь, с меня как полагается!

NewGreen
16.12.2018, 15:44
Попробуйте так:


publics: UpdateSpeedometr(playerid)
{
if(!GetPVarInt(playerid,"ShowSpeed") || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!pTemp[playerid][pAFK])
{
new vehicleid = GetPVarInt(playerid,"VehicleEnters");
if(vehicleid <= 0) return 0;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 538) return 1;
if(VehInfo[vehicleid][vFuel] <= 1.0)
{
SendClientMessage(playerid,-1,""#net"В машине нет бензина");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);
return 0;
}

new Float:X2, Float:Y2, Float:Z2,Float:X,Float:Y,Float:Z;

X2 = VehInfo[vehicleid-1][vehicleX];
Y2 = VehInfo[vehicleid-1][vehicleY];
Z2 = VehInfo[vehicleid-1][vehicleZ];

GetVehicleVelocity(vehicleid,X,Y,Z);

new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))) * 126.31;

new PlayerSpeed = floatround(speed);

if (PlayerSpeed>=350)
{
OnPlayerCheat(playerid,AC_SPEED_HACKCAR_code, AC_KICK);
return 0;
}

if(PlayerSpeed <= 165 && VehInfo[vehicleid-1][vEngineRestyle] && GetPVarInt(playerid, "SPRINT_KEY") && VehInfo[vehicleid-1][vEngine] && GetPVarInt(playerid,"VehicleEnters") != 462)
{
new Float:vAngles, Float:dis = 0.05;
GetVehicleZAngle(vehicleid, vAngles);
SetVehicleVelocity(vehicleid,floatadd(X,floatmul(dis,floatsin(-vAngles,degrees))), floatadd(Y,floatmul(dis,floatcos(-vAngles,degrees))), Z);
}

if(GetPVarInt(playerid, "slimit") && PlayerSpeed >= GetPVarInt(playerid,"slimit"))
{
new Float:dif = GetPVarInt(playerid,"slimit") / speed;
SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
}

GetVehiclePos(vehicleid, X, Y, Z);
if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
{
SetVehicleToRespawn(vehicleid);
OnPlayerCheat(playerid, AC_PlayerSpeedHack_code, AC_KICK);
return 0;
}

//
VehInfo[vehicleid-1][vehicleX] = X;
VehInfo[vehicleid-1][vehicleY] = Y;
VehInfo[vehicleid-1][vehicleZ] = Z;
//
new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;

VehInfo[vehicleid-1][vDrived] += veloc;

if(VehInfo[vehicleid][vFuel] > 1.0 && !IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= (veloc*10);
else if(IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= 0.001;

new Float: CarH;
GetVehicleHealth(vehicleid, CarH);

switch(VehInfo[vehicleid][vFuel])
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1]," ");
case 1..3: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"II");
case 4..5: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"III");
case 6..7: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIII");
case 8..9: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIII");
case 10..11: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIII");
case 12..13: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIII");
case 14..15: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIII");
case 16..17: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIII");
case 18..19: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIII");
case 20..21: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIII");
case 22..23: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIII");
case 24..25: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIII");
case 26..27: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIII");
case 28..29: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIII");
case 30..31: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIII");
case 32..35: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIII");
case 36..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIII");
default: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIIII");
}

switch(floatround(CarH / 10.0, floatround_ceil))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2],"I");
case 1..10: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "II");
case 11..20: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIII");
case 21..30: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIII");
case 31..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIII");
case 51..60: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIII");
case 61..70: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIII");
case 71..80: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIIIII");
case 81..100: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2] ,"IIIIIIIIIIIIIIIIIIII");
}

format(string, 64, "%i", PlayerSpeed);
PlayerTextDrawSetString(playerid, TD_SPEED[playerid][0], string);

if(IsVehicleDrivingBackwards(vehicleid)) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N ~r~R ~w~1 2 3 4 5");
else
{
if(!PlayerSpeed) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~r~N ~w~R 1 2 3 4 5");
if(PlayerSpeed > 1 && PlayerSpeed < 40) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R ~r~1 ~w~2 3 4 5");
if(PlayerSpeed > 40 && PlayerSpeed < 79) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 ~r~2 ~w~3 4 5");
if(PlayerSpeed > 80 && PlayerSpeed < 109) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 ~r~3 ~w~4 5");
if(PlayerSpeed > 110 && PlayerSpeed < 129) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 ~r~4 ~w~5");
if(PlayerSpeed > 130 && PlayerSpeed < 220) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 4 ~r~5");
}
}
SetTimerEx("UpdateSpeedometr",200,0,"i",playerid);
return 1;
}

Den_Gurino
16.12.2018, 16:27
Теперь топливо закончилось очень быстро, с гетто не доехал до зоны 51, и на спидометре датчик топлива не показывал что идет расход, типа полный бак показывает, а бенза скончалась )

NewGreen
16.12.2018, 16:44
Уменьшил потребление топлива, и должно начать показывать расход.

publics: UpdateSpeedometr(playerid)
{
if(!GetPVarInt(playerid,"ShowSpeed") || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!pTemp[playerid][pAFK])
{
new vehicleid = GetPVarInt(playerid,"VehicleEnters");
if(vehicleid <= 0) return 0;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 538) return 1;
if(VehInfo[vehicleid][vFuel] <= 1.0)
{
SendClientMessage(playerid,-1,""#net"В машине нет бензина");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);
return 0;
}

new Float:X2, Float:Y2, Float:Z2,Float:X,Float:Y,Float:Z;

X2 = VehInfo[vehicleid-1][vehicleX];
Y2 = VehInfo[vehicleid-1][vehicleY];
Z2 = VehInfo[vehicleid-1][vehicleZ];

GetVehicleVelocity(vehicleid,X,Y,Z);

new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))) * 126.31;

new PlayerSpeed = floatround(speed);

if (PlayerSpeed>=350)
{
OnPlayerCheat(playerid,AC_SPEED_HACKCAR_code, AC_KICK);
return 0;
}

if(PlayerSpeed <= 165 && VehInfo[vehicleid-1][vEngineRestyle] && GetPVarInt(playerid, "SPRINT_KEY") && VehInfo[vehicleid-1][vEngine] && GetPVarInt(playerid,"VehicleEnters") != 462)
{
new Float:vAngles, Float:dis = 0.05;
GetVehicleZAngle(vehicleid, vAngles);
SetVehicleVelocity(vehicleid,floatadd(X,floatmul(dis,floatsin(-vAngles,degrees))), floatadd(Y,floatmul(dis,floatcos(-vAngles,degrees))), Z);
}

if(GetPVarInt(playerid, "slimit") && PlayerSpeed >= GetPVarInt(playerid,"slimit"))
{
new Float:dif = GetPVarInt(playerid,"slimit") / speed;
SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
}

GetVehiclePos(vehicleid, X, Y, Z);
if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
{
SetVehicleToRespawn(vehicleid);
OnPlayerCheat(playerid, AC_PlayerSpeedHack_code, AC_KICK);
return 0;
}

//
VehInfo[vehicleid-1][vehicleX] = X;
VehInfo[vehicleid-1][vehicleY] = Y;
VehInfo[vehicleid-1][vehicleZ] = Z;
//
new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;

VehInfo[vehicleid-1][vDrived] += veloc;

if(VehInfo[vehicleid][vFuel] > 1.0 && !IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= (veloc*5);
else if(IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= 0.001;

new Float: CarH;
GetVehicleHealth(vehicleid, CarH);

switch(floatround(VehInfo[vehicleid][vFuel]))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1]," ");
case 1..3: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"II");
case 4..5: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"III");
case 6..7: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIII");
case 8..9: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIII");
case 10..11: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIII");
case 12..13: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIII");
case 14..15: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIII");
case 16..17: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIII");
case 18..19: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIII");
case 20..21: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIII");
case 22..23: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIII");
case 24..25: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIII");
case 26..27: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIII");
case 28..29: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIII");
case 30..31: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIII");
case 32..35: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIII");
case 36..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIII");
default: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIIII");
}

switch(floatround(CarH / 10.0, floatround_ceil))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2],"I");
case 1..10: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "II");
case 11..20: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIII");
case 21..30: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIII");
case 31..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIII");
case 51..60: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIII");
case 61..70: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIII");
case 71..80: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIIIII");
case 81..100: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2] ,"IIIIIIIIIIIIIIIIIIII");
}

format(string, 64, "%i", PlayerSpeed);
PlayerTextDrawSetString(playerid, TD_SPEED[playerid][0], string);

if(IsVehicleDrivingBackwards(vehicleid)) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N ~r~R ~w~1 2 3 4 5");
else
{
if(!PlayerSpeed) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~r~N ~w~R 1 2 3 4 5");
if(PlayerSpeed > 1 && PlayerSpeed < 40) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R ~r~1 ~w~2 3 4 5");
if(PlayerSpeed > 40 && PlayerSpeed < 79) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 ~r~2 ~w~3 4 5");
if(PlayerSpeed > 80 && PlayerSpeed < 109) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 ~r~3 ~w~4 5");
if(PlayerSpeed > 110 && PlayerSpeed < 129) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 ~r~4 ~w~5");
if(PlayerSpeed > 130 && PlayerSpeed < 220) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 4 ~r~5");
}
}
SetTimerEx("UpdateSpeedometr",200,0,"i",playerid);
return 1;
}

Den_Gurino
22.12.2018, 14:19
Уменьшил потребление топлива, и должно начать показывать расход.

publics: UpdateSpeedometr(playerid)
{
if(!GetPVarInt(playerid,"ShowSpeed") || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!pTemp[playerid][pAFK])
{
new vehicleid = GetPVarInt(playerid,"VehicleEnters");
if(vehicleid <= 0) return 0;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 538) return 1;
if(VehInfo[vehicleid][vFuel] <= 1.0)
{
SendClientMessage(playerid,-1,""#net"В машине нет бензина");
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);
return 0;
}

new Float:X2, Float:Y2, Float:Z2,Float:X,Float:Y,Float:Z;

X2 = VehInfo[vehicleid-1][vehicleX];
Y2 = VehInfo[vehicleid-1][vehicleY];
Z2 = VehInfo[vehicleid-1][vehicleZ];

GetVehicleVelocity(vehicleid,X,Y,Z);

new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))) * 126.31;

new PlayerSpeed = floatround(speed);

if (PlayerSpeed>=350)
{
OnPlayerCheat(playerid,AC_SPEED_HACKCAR_code, AC_KICK);
return 0;
}

if(PlayerSpeed <= 165 && VehInfo[vehicleid-1][vEngineRestyle] && GetPVarInt(playerid, "SPRINT_KEY") && VehInfo[vehicleid-1][vEngine] && GetPVarInt(playerid,"VehicleEnters") != 462)
{
new Float:vAngles, Float:dis = 0.05;
GetVehicleZAngle(vehicleid, vAngles);
SetVehicleVelocity(vehicleid,floatadd(X,floatmul(dis,floatsin(-vAngles,degrees))), floatadd(Y,floatmul(dis,floatcos(-vAngles,degrees))), Z);
}

if(GetPVarInt(playerid, "slimit") && PlayerSpeed >= GetPVarInt(playerid,"slimit"))
{
new Float:dif = GetPVarInt(playerid,"slimit") / speed;
SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
}

GetVehiclePos(vehicleid, X, Y, Z);
if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
{
SetVehicleToRespawn(vehicleid);
OnPlayerCheat(playerid, AC_PlayerSpeedHack_code, AC_KICK);
return 0;
}

//
VehInfo[vehicleid-1][vehicleX] = X;
VehInfo[vehicleid-1][vehicleY] = Y;
VehInfo[vehicleid-1][vehicleZ] = Z;
//
new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;

VehInfo[vehicleid-1][vDrived] += veloc;

if(VehInfo[vehicleid][vFuel] > 1.0 && !IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= (veloc*5);
else if(IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= 0.001;

new Float: CarH;
GetVehicleHealth(vehicleid, CarH);

switch(floatround(VehInfo[vehicleid][vFuel]))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1]," ");
case 1..3: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"II");
case 4..5: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"III");
case 6..7: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIII");
case 8..9: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIII");
case 10..11: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIII");
case 12..13: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIII");
case 14..15: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIII");
case 16..17: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIII");
case 18..19: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIII");
case 20..21: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIII");
case 22..23: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIII");
case 24..25: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIII");
case 26..27: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIII");
case 28..29: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIII");
case 30..31: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIII");
case 32..35: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIII");
case 36..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIII");
default: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][1],"IIIIIIIIIIIIIIIIIIII");
}

switch(floatround(CarH / 10.0, floatround_ceil))
{
case 0: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2],"I");
case 1..10: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "II");
case 11..20: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIII");
case 21..30: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIII");
case 31..40: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIII");
case 41..50: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIII");
case 51..60: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIII");
case 61..70: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIII");
case 71..80: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2], "IIIIIIIIIIIIIIIIII");
case 81..100: PlayerTextDrawSetString(playerid,TD_SPEED[playerid][2] ,"IIIIIIIIIIIIIIIIIIII");
}

format(string, 64, "%i", PlayerSpeed);
PlayerTextDrawSetString(playerid, TD_SPEED[playerid][0], string);

if(IsVehicleDrivingBackwards(vehicleid)) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N ~r~R ~w~1 2 3 4 5");
else
{
if(!PlayerSpeed) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~r~N ~w~R 1 2 3 4 5");
if(PlayerSpeed > 1 && PlayerSpeed < 40) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R ~r~1 ~w~2 3 4 5");
if(PlayerSpeed > 40 && PlayerSpeed < 79) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 ~r~2 ~w~3 4 5");
if(PlayerSpeed > 80 && PlayerSpeed < 109) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 ~r~3 ~w~4 5");
if(PlayerSpeed > 110 && PlayerSpeed < 129) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 ~r~4 ~w~5");
if(PlayerSpeed > 130 && PlayerSpeed < 220) PlayerTextDrawSetString(playerid,TD_SPEED[playerid][3],"~w~N R 1 2 3 4 ~r~5");
}
}
SetTimerEx("UpdateSpeedometr",200,0,"i",playerid);
return 1;
}

Спасибо тебе, я даже разобрал весь паблик, и понял что ты там исправил, спасибо за помощь, и мини урок!
Тема закрыта!