if autoscaling then local V={}if _Tune.Config=="\070\087\068"or _Tune.Config=="\065\087\068"then if car.Wheels:FindFirstChild("\070\076")~=nil then table.insert(V,car.Wheels.FL)end if car.Wheels:FindFirstChild("\070\082")~=nil then table.insert(V,car.Wheels.FR)end if car.Wheels:FindFirstChild("\070")~=nil then table.insert(V,car.Wheels.F)end end if _Tune.Config=="\082\087\068"or _Tune.Config=="\065\087\068"then if car.Wheels:FindFirstChild("\082\076")~=nil then table.insert(V,car.Wheels.RL)end if car.Wheels:FindFirstChild("\082\082")~=nil then table.insert(V,car.Wheels.RR)end if car.Wheels:FindFirstChild("\082")~=nil then table.insert(V,car.Wheels.R)end end local S=0 for V,W in pairs(V)do if W.Size.x>S then S=W.Size.x end end V=nil for V,W in pairs(UNITS)do W.maxSpeed=math.ceil((((((W.scaling*S)*math.pi)*_lRPM)/60)/_Tune.Ratios[#_Tune.Ratios])/_Tune.FinalDrive)W.spInc=math.max(math.ceil(W.maxSpeed/200)*20,20)end end for V=0,revEnd*2,1 do local S=script.Parent.ln:clone()S.Parent=script.Parent.Tach S.Rotation=45+(V*225)/(revEnd*2)S.Num.Text=V/2 S.Num.Rotation=-S.Rotation if V*500>=math.floor(_pRPM/500)*500 then S.Frame.BackgroundColor3=Color3.new(1,0,0)if V<revEnd*2 then ln2=S:clone()ln2.Parent=script.Parent.Tach ln2.Rotation=45+((V+.5)*225)/(revEnd*2)ln2.Num:Destroy()ln2.Visible=true end end if V%2==0 then S.Frame.Size=UDim2.new(0,3,0,10)S.Frame.Position=UDim2.new(0,-1,0,100)S.Num.Visible=true else S.Num:Destroy()end S.Visible=true end local V=Instance.new("\070\114\097\109\101",script.Parent.Speedo)V.Name="\108\110\115"V.BackgroundTransparency=1 V.BorderSizePixel=0 V.Size=UDim2.new(0,0,0,0)for S=1,90,1 do local W=script.Parent.ln:clone()W.Parent=V W.Rotation=45+225*(S/90)if S%2==0 then W.Frame.Size=UDim2.new(0,2,0,10)W.Frame.Position=UDim2.new(0,-1,0,100)else W.Frame.Size=UDim2.new(0,3,0,5)end W.Num:Destroy()W.Visible=true end for V,S in pairs(UNITS)do local W=Instance.new("\070\114\097\109\101",script.Parent.Speedo)W.BackgroundTransparency=1 W.BorderSizePixel=0 W.Size=UDim2.new(0,0,0,0)W.Name=S.units if V~=1 then W.Visible=false end for V=0,S.maxSpeed,S.spInc do local A=script.Parent.ln:clone()A.Parent=W A.Rotation=45+225*(V/S.maxSpeed)A.Num.Text=V A.Num.TextSize=14 A.Num.Rotation=-A.Rotation A.Frame:Destroy()A.Num.Visible=true A.Visible=true end end if script.Parent.Parent.IsOn.Value then script.Parent:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)end script.Parent.Parent.IsOn.Changed:connect(function()if script.Parent.Parent.IsOn.Value then script.Parent:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)end end)script.Parent.Parent.Values.RPM.Changed:connect(function()script.Parent.Tach.Needle.Rotation=45+225*math.min(1,script.Parent.Parent.Values.RPM.Value/(revEnd*1000))end)script.Parent.Parent.Values.Gear.Changed:connect(function()local V=script.Parent.Parent.Values.Gear.Value if V==0 then V="\078"elseif V==-1 then V="\082"end script.Parent.Gear.Text=V end)function PBrake()script.Parent.PBrake.Visible=script.Parent.Parent.Values.PBrake.Value end script.Parent.Parent.Values.PBrake.Changed:connect(PBrake)function Gear()if script.Parent.Parent.Values.TransmissionMode.Value=="\065\117\116\111"then script.Parent.TMode.Text="\077\086"script.Parent.TMode.BackgroundColor3=Color3.new(1,.66666666666667,0)elseif script.Parent.Parent.Values.TransmissionMode.Value=="\083\101\109\105"then script.Parent.TMode.Text="\077\086"script.Parent.TMode.BackgroundColor3=Color3.new(0,.66666666666667,.49803921568627)else script.Parent.TMode.Text="\077\086"script.Parent.TMode.BackgroundColor3=Color3.new(1,.33333333333333,.5)end end script.Parent.Parent.Values.TransmissionMode.Changed:connect(Gear)script.Parent.Parent.Values.Velocity.Changed:connect(function(V)script.Parent.Speedo.Needle.Rotation=45+225*math.min(1,(UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude)/UNITS[currentUnits].maxSpeed)script.Parent.Speed.Text=math.floor(UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude)..(" "..UNITS[currentUnits].units)end)script.Parent.Speed.MouseButton1Click:connect(function()if currentUnits==#UNITS then currentUnits=1 else currentUnits=currentUnits+1 end for V,S in pairs(script.Parent.Speedo:GetChildren())do S.Visible=S.Name==UNITS[currentUnits].units or S.Name=="\078\101\101\100\108\101"or S.Name=="\108\110\115"end script.Parent.Speed.Text=math.floor(UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude)..(" "..UNITS[currentUnits].units)end)for V=1,30,1 do for S,W in pairs(script.Parent.Frame:GetChildren())do W.BackgroundTransparency=1-V/60 end script.Parent.TMode.TextTransparency=1-V/30 wait(.01)end wait(.1)Gear()PBrake()
--Automatic Gauge Scaling
if autoscaling then
	local Drive = {}
	if _Tune.Config == "FWD" or _Tune.Config == "AWD" then
		if car.Wheels:FindFirstChild("FL") ~= nil then
			table.insert(Drive, car.Wheels.FL)
		end
		if car.Wheels:FindFirstChild("FR") ~= nil then
			table.insert(Drive, car.Wheels.FR)
		end
		if car.Wheels:FindFirstChild("F") ~= nil then
			table.insert(Drive, car.Wheels.F)
		end
	end
	if _Tune.Config == "RWD" or _Tune.Config == "AWD" then
		if car.Wheels:FindFirstChild("RL") ~= nil then
			table.insert(Drive, car.Wheels.RL)
		end
		if car.Wheels:FindFirstChild("RR") ~= nil then
			table.insert(Drive, car.Wheels.RR)
		end
		if car.Wheels:FindFirstChild("R") ~= nil then
			table.insert(Drive, car.Wheels.R)
		end
	end

	local wDia = 0
	for i, v in pairs(Drive) do
		if v.Size.x > wDia then
			wDia = v.Size.x
		end
	end
	Drive = nil
	for i, v in pairs(UNITS) do
		v.maxSpeed = math.ceil(v.scaling * wDia * math.pi * _lRPM / 60 / _Tune.Ratios[#_Tune.Ratios] / _Tune.FinalDrive)
		v.spInc = math.max(math.ceil(v.maxSpeed / 200) * 20, 20)
	end
end

for i = 0, revEnd * 2 do
	local ln = script.Parent.ln:clone()
	ln.Parent = script.Parent.Tach
	ln.Rotation = 45 + i * 225 / (revEnd * 2)
	ln.Num.Text = i / 2
	ln.Num.Rotation = -ln.Rotation
	if i * 500 >= math.floor(_pRPM / 500) * 500 then
		ln.Frame.BackgroundColor3 = Color3.new(1, 0, 0)
		if i < revEnd * 2 then
			ln2 = ln:clone()
			ln2.Parent = script.Parent.Tach
			ln2.Rotation = 45 + (i + 0.5) * 225 / (revEnd * 2)
			ln2.Num:Destroy()
			ln2.Visible = true
		end
	end
	if i % 2 == 0 then
		ln.Frame.Size = UDim2.new(0, 3, 0, 10)
		ln.Frame.Position = UDim2.new(0, -1, 0, 100)
		ln.Num.Visible = true
	else
		ln.Num:Destroy()
	end
	ln.Visible = true
end

local lns = Instance.new("Frame", script.Parent.Speedo)
lns.Name = "lns"
lns.BackgroundTransparency = 1
lns.BorderSizePixel = 0
lns.Size = UDim2.new(0, 0, 0, 0)
for i = 1, 90 do
	local ln = script.Parent.ln:clone()
	ln.Parent = lns
	ln.Rotation = 45 + 225 * (i / 90)
	if i % 2 == 0 then
		ln.Frame.Size = UDim2.new(0, 2, 0, 10)
		ln.Frame.Position = UDim2.new(0, -1, 0, 100)
	else
		ln.Frame.Size = UDim2.new(0, 3, 0, 5)
	end
	ln.Num:Destroy()
	ln.Visible = true
end

for i, v in pairs(UNITS) do
	local lnn = Instance.new("Frame", script.Parent.Speedo)
	lnn.BackgroundTransparency = 1
	lnn.BorderSizePixel = 0
	lnn.Size = UDim2.new(0, 0, 0, 0)
	lnn.Name = v.units
	if i ~= 1 then
		lnn.Visible = false
	end

	for i = 0, v.maxSpeed, v.spInc do
		local ln = script.Parent.ln:clone()
		ln.Parent = lnn
		ln.Rotation = 45 + 225 * (i / v.maxSpeed)
		ln.Num.Text = i
		ln.Num.TextSize = 14
		ln.Num.Rotation = -ln.Rotation
		ln.Frame:Destroy()
		ln.Num.Visible = true
		ln.Visible = true
	end
end

if script.Parent.Parent.IsOn.Value then
	script.Parent:TweenPosition(UDim2.new(0, 0, 0, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 1, true)
end

script.Parent.Parent.IsOn.Changed:connect(function()
	if script.Parent.Parent.IsOn.Value then
		script.Parent:TweenPosition(UDim2.new(0, 0, 0, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 1, true)
	end
end)

script.Parent.Parent.Values.RPM.Changed:connect(function()
	script.Parent.Tach.Needle.Rotation = 45 + 225 * math.min(1, script.Parent.Parent.Values.RPM.Value / (revEnd * 1000))
end)

script.Parent.Parent.Values.Gear.Changed:connect(function()
	local gearText = script.Parent.Parent.Values.Gear.Value
	if gearText == 0 then
		gearText = "N"
	elseif gearText == -1 then
		gearText = "R"
	end
	script.Parent.Gear.Text = gearText
end)

function PBrake()
	script.Parent.PBrake.Visible = script.Parent.Parent.Values.PBrake.Value
end
script.Parent.Parent.Values.PBrake.Changed:connect(PBrake)

function Gear()
	if script.Parent.Parent.Values.TransmissionMode.Value == "Auto" then
		script.Parent.TMode.Text = "MV"
		script.Parent.TMode.BackgroundColor3 = Color3.new(1, 170 / 255, 0)
	elseif script.Parent.Parent.Values.TransmissionMode.Value == "Semi" then
		script.Parent.TMode.Text = "MV"
		script.Parent.TMode.BackgroundColor3 = Color3.new(0, 170 / 255, 127 / 255)
	else
		script.Parent.TMode.Text = "MV"
		script.Parent.TMode.BackgroundColor3 = Color3.new(1, 85 / 255, 0.5)
	end
end
script.Parent.Parent.Values.TransmissionMode.Changed:connect(Gear)

script.Parent.Parent.Values.Velocity.Changed:connect(function(property)
	script.Parent.Speedo.Needle.Rotation = 45
		+ 225
			* math.min(
				1,
				UNITS[currentUnits].scaling
					* script.Parent.Parent.Values.Velocity.Value.Magnitude
					/ UNITS[currentUnits].maxSpeed
			)
	script.Parent.Speed.Text = math.floor(
		UNITS[currentUnits].scaling * script.Parent.Parent.Values.Velocity.Value.Magnitude
	) .. " " .. UNITS[currentUnits].units
end)

script.Parent.Speed.MouseButton1Click:connect(function()
	if currentUnits == #UNITS then
		currentUnits = 1
	else
		currentUnits = currentUnits + 1
	end
	for i, v in pairs(script.Parent.Speedo:GetChildren()) do
		v.Visible = v.Name == UNITS[currentUnits].units or v.Name == "Needle" or v.Name == "lns"
	end
	script.Parent.Speed.Text = math.floor(
		UNITS[currentUnits].scaling * script.Parent.Parent.Values.Velocity.Value.Magnitude
	) .. " " .. UNITS[currentUnits].units
end)
for i = 1, 30 do
	for _, v in pairs(script.Parent.Frame:GetChildren()) do
		v.BackgroundTransparency = 1 - (i / 60)
	end
	script.Parent.TMode.TextTransparency = 1 - (i / 30)
	wait(0.01)
end
wait(0.1)
Gear()
PBrake()
