if autoscaling then local o={}if _Tune.Config=="\070\087\068"or _Tune.Config=="\065\087\068"then if car.Wheels:FindFirstChild("\070\076")~=nil then table.insert(o,car.Wheels.FL)end if car.Wheels:FindFirstChild("\070\082")~=nil then table.insert(o,car.Wheels.FR)end if car.Wheels:FindFirstChild("\070")~=nil then table.insert(o,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(o,car.Wheels.RL)end if car.Wheels:FindFirstChild("\082\082")~=nil then table.insert(o,car.Wheels.RR)end if car.Wheels:FindFirstChild("\082")~=nil then table.insert(o,car.Wheels.R)end end local A=0 for o,P in pairs(o)do if P.Size.x>A then A=P.Size.x end end o=nil for o,P in pairs(UNITS)do P.maxSpeed=math.ceil((((((P.scaling*A)*math.pi)*_lRPM)/60)/_Tune.Ratios[#_Tune.Ratios])/_Tune.FinalDrive)P.spInc=math.max(math.ceil(P.maxSpeed/200)*20,20)end end for o=0,revEnd*2,1 do local A=script.Parent.ln:clone()A.Parent=script.Parent.Tach A.Rotation=45+(o*225)/(revEnd*2)A.Num.Text=o/2 A.Num.Rotation=-A.Rotation if o*500>=math.floor(_pRPM/500)*500 then A.Frame.BackgroundColor3=Color3.new(1,0,0)if o<revEnd*2 then ln2=A:clone()ln2.Parent=script.Parent.Tach ln2.Rotation=45+((o+.5)*225)/(revEnd*2)ln2.Num:Destroy()ln2.Visible=true end end if o%2==0 then A.Frame.Size=UDim2.new(0,3,0,10)A.Frame.Position=UDim2.new(0,-1,0,100)A.Num.Visible=true else A.Num:Destroy()end A.Visible=false end local o=Instance.new("\070\114\097\109\101",script.Parent.Speedo)o.Name="\108\110\115"o.BackgroundTransparency=1 o.BorderSizePixel=0 o.Size=UDim2.new(0,0,0,0)for A=1,90,1 do local P=script.Parent.ln:clone()P.Parent=o P.Rotation=45+225*(A/90)if A%2==0 then P.Frame.Size=UDim2.new(0,2,0,10)P.Frame.Position=UDim2.new(0,-1,0,100)else P.Frame.Size=UDim2.new(0,3,0,5)end P.Num:Destroy()P.Visible=false end for o,A in pairs(UNITS)do local P=Instance.new("\070\114\097\109\101",script.Parent.Speedo)P.BackgroundTransparency=1 P.BorderSizePixel=0 P.Size=UDim2.new(0,0,0,0)P.Name=A.units if o~=1 then P.Visible=false end for o=0,A.maxSpeed,A.spInc do local c=script.Parent.ln:clone()c.Parent=P c.Rotation=45+225*(o/A.maxSpeed)c.Num.Text=o c.Num.TextSize=0 c.Num.Rotation=-c.Rotation c.Frame:Destroy()c.Num.Visible=true c.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 o=script.Parent.Parent.Values.Gear.Value if o==0 then o="\078"elseif o==-1 then o="\082"end script.Parent.Gear.Text=o end)script.Parent.Parent.Values.TCS.Changed:connect(function()if _Tune.TCSEnabled then if script.Parent.Parent.Values.TCS.Value then script.Parent.TCS.TextColor3=Color3.new(1,.66666666666667,0)script.Parent.TCS.TextStrokeColor3=Color3.new(1,.66666666666667,0)if script.Parent.Parent.Values.TCSActive.Value then wait()script.Parent.TCS.Visible=not script.Parent.TCS.Visible else wait()script.Parent.TCS.Visible=false end else script.Parent.TCS.Visible=true script.Parent.TCS.TextColor3=Color3.new(1,0,0)script.Parent.TCS.TextStrokeColor3=Color3.new(1,0,0)end else script.Parent.TCS.Visible=false end end)script.Parent.Parent.Values.TCSActive.Changed:connect(function()if _Tune.TCSEnabled then if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then wait()script.Parent.TCS.Visible=not script.Parent.TCS.Visible elseif not script.Parent.Parent.Values.TCS.Value then wait()script.Parent.TCS.Visible=true else wait()script.Parent.TCS.Visible=false end else script.Parent.TCS.Visible=false end end)script.Parent.TCS.Changed:connect(function()if _Tune.TCSEnabled then if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then wait()script.Parent.TCS.Visible=not script.Parent.TCS.Visible elseif not script.Parent.Parent.Values.TCS.Value then wait()script.Parent.TCS.Visible=true end else if script.Parent.TCS.Visible then script.Parent.TCS.Visible=false end end end)
--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 = false
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 = false
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 = 0
		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)

script.Parent.Parent.Values.TCS.Changed:connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCS.Value then
			script.Parent.TCS.TextColor3 = Color3.new(1, 170 / 255, 0)
			script.Parent.TCS.TextStrokeColor3 = Color3.new(1, 170 / 255, 0)
			if script.Parent.Parent.Values.TCSActive.Value then
				wait()
				script.Parent.TCS.Visible = not script.Parent.TCS.Visible
			else
				wait()
				script.Parent.TCS.Visible = false
			end
		else
			script.Parent.TCS.Visible = true
			script.Parent.TCS.TextColor3 = Color3.new(1, 0, 0)
			script.Parent.TCS.TextStrokeColor3 = Color3.new(1, 0, 0)
		end
	else
		script.Parent.TCS.Visible = false
	end
end)

script.Parent.Parent.Values.TCSActive.Changed:connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = not script.Parent.TCS.Visible
		elseif not script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = true
		else
			wait()
			script.Parent.TCS.Visible = false
		end
	else
		script.Parent.TCS.Visible = false
	end
end)

script.Parent.TCS.Changed:connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = not script.Parent.TCS.Visible
		elseif not script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = true
		end
	else
		if script.Parent.TCS.Visible then
			script.Parent.TCS.Visible = false
		end
	end
end)
