tc = false Citizen.CreateThread(function() if Config.TCon == true then while true do Wait(20) playerped = GetPlayerPed(-1) if IsPedSittingInAnyVehicle(playerped) then local veh = GetVehiclePedIsIn(playerped,false) if playerped == GetPedInVehicleSeat(veh,-1) then if IsControlPressed(0,Config.TCkey) then tc = true TC() end end end end end end) cruse = false Citizen.CreateThread(function() if Config.CCon == true then while true do Wait(20) local playerped = GetPlayerPed(-1) if IsPedSittingInAnyVehicle(playerped) then local veh = GetVehiclePedIsIn(playerped,false) if playerped == GetPedInVehicleSeat(veh,-1) then if IsControlPressed(0,Config.CCkey) then cruse = true Cruse() end end else Wait(2500) end end end end) function TC() if not HasStreamedTextureDictLoaded('cctcimages') then RequestStreamedTextureDict('cctcimages', true) while not HasStreamedTextureDictLoaded('cctcimages') do Wait(0) end end playerped = GetPlayerPed(-1) local veh = GetVehiclePedIsIn(playerped,false) local drivebias = GetVehicleHandlingFloat(veh,"CHandlingData", "fDriveBiasFront") oldvalue = GetVehicleHandlingFloat(vehicle,'CHandlingData','fLowSpeedTractionLossMult') repeat Wait(0) if IsPedGettingIntoAVehicle(playerped) then Wait(2000) veh = GetVehiclePedIsIn(playerped,false) drivebias = GetVehicleHandlingFloat(veh,"CHandlingData", "fDriveBiasFront") oldvalue = GetVehicleHandlingFloat(vehicle,'CHandlingData','fLowSpeedTractionLossMult') end if IsPedInAnyVehicle(playerped) then if tcacting == true then -- SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',newvalue5) --SetVehicleEngineTorqueMultiplier(veh, var1) else SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',oldvalue) SetVehicleEngineTorqueMultiplier(veh, 1.0) end var1 = 1.0 mod1 = 0.0 newvalue5 = oldvalue tcacting = false wh1 = GetVehicleWheelSpeed(veh,0) wh1 = (GetVehicleWheelSpeed(veh,1) + wh1) / 2 wh2 = (GetVehicleWheelSpeed(veh,1) + wh1) / 2 wh3 = GetVehicleWheelSpeed(veh,2) wh4 = GetVehicleWheelSpeed(veh,3) throttle = 0.0 wheelave = (GetVehicleWheelSpeed(veh,0) + GetVehicleWheelSpeed(veh,1) + GetVehicleWheelSpeed(veh,2) + GetVehicleWheelSpeed(veh,3)) / 4 if Config.OnScreendisplayTC == true then DrawRect(UITC.x + 0.01 ,UITC.y + 0.04 ,0.05,0.01,0,0,0,255) end steerang = GetVehicleSteeringAngle(veh) if steerang > 1 then mod1 = steerang / 20 elseif steerang < -1.0 then steerang = steerang - steerang*2 mod1 = steerang / 20 end if wh1 > (wheelave + 0.05 + mod1) then var1 = 1.0 / ((wh1 - (wheelave + 0.00 + mod1) )- 0.04) *Config.action newvalue5 = oldvalue * var1 tcacting = true elseif wh2 > (wheelave + 0.05 + mod1) then var1 = 1.0 / ((wh2 - (wheelave + 0.00 + mod1) )- 0.04) *Config.action newvalue5 = oldvalue * var1 tcacting = true elseif wh3 > (wheelave + 0.05 + mod1) then var1 = 1.0 / ((wh3 - (wheelave + 0.00 + mod1) )- 0.04) *Config.action newvalue5 = oldvalue * var1 tcacting = true elseif wh4 > (wheelave + 0.05 + mod1) then var1 = 1.0 / ((wh4 - (wheelave + 0.00 + mod1) )- 0.04) *Config.action newvalue5 = oldvalue * var1 tcacting = true end if tcacting == true then if newvalue5 > 0.0 and newvalue5 < oldvalue then SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',newvalue5) newvalue5 = oldvalue * var1 elseif newvalue5 > oldvalue then newvalue5 = oldvalue * var1 SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',newvalue5) elseif newvalue5 < 0.0 then newvalue5 = 0.01 SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',newvalue5) end if var1 < 1.0 then SetVehicleEngineTorqueMultiplier(veh, var1) if var1 < 0.98 then drawbox(UITC.x - 0.01 ,UITC.y + 0.04,0,255) end if var1 < 0.7 then drawbox(UITC.x - 0.00 ,UITC.y + 0.04 ,100,200) end if var1 < 0.5 then drawbox(UITC.x + 0.01 ,UITC.y + 0.04 ,150,200) end if var1 < 0.3 then drawbox(UITC.x + 0.02 ,UITC.y + 0.04 ,150,100) end if var1 < 0.2 then drawbox(UITC.x + 0.03 ,UITC.y + 0.04,233,0) end else var1 = 1.0 SetVehicleEngineTorqueMultiplier(veh, var1) end end if Config.OnScreenTextTC then drawTxta(UITC.x - 0.0 ,UITC.y + 0.0 ,0.55,"~w~TC ~g~ON", 255,50,0,255) end if Config.SimpleTCimmage then if tcacting == true then DrawSprite('cctcimages','SRTC1',UITC.x + 0.04 ,UITC.y + 0.02,0.014,0.024,0.0,255,255,255,200) else DrawSprite('cctcimages','SRTC2',UITC.x + 0.04 ,UITC.y + 0.02,0.014,0.024,0.0,255,255,255,200) end end if Config.Watermark then drawTxtb(UITC.x - 0.01 ,UITC.y + 0.041 ,0.27,"By DOJSRC", 255,255,255,255) end if IsControlJustPressed(0,Config.TCkey) or IsControlJustPressed(0,Config.TCkey) then SetVehicleMaxSpeed(veh,300.0) tc = false elseif IsPedInAnyVehicle(playerped,true) == false and Config.enableTCtoggle == false then tc = false end end until tc == false SetVehicleHandlingField(vehicle,'CHandlingData','fLowSpeedTractionLossMult',oldvalue) Wait(500) end function drawbox(x,y,r,g) if Config.OnScreendisplayTC == true then DrawRect(x,y,0.01,0.01,r,g,0,255) end end function Cruse() if not HasStreamedTextureDictLoaded('cctcimages') then RequestStreamedTextureDict('cctcimages', true) while not HasStreamedTextureDictLoaded('cctcimages') do Wait(0) end end print"starting CC" local playerped = PlayerPedId() local veh = GetVehiclePedIsIn(playerped, false) local vel = GetVehicleWheelSpeed(veh, 1) if vel > Config.Minspeed and vel < Config.Maxspeed then local speed = vel * 2.237 repeat Wait(0) local vel2 = GetVehicleWheelSpeed(veh, 1) if vel2 < 0.001 then vel2 = 0.01 end local diff = vel + 0.2 - vel2 local throttle = 0.2 if diff > 1.0 then throttle = 1.0 else throttle = diff end if not IsControlPressed(0, 76) and throttle > 0.01 then SetControlNormal(0, 71, throttle) end if throttle < 0.001 then throttle = 0.0 end local curspeed = GetVehicleWheelSpeed(veh, 1) * 2.237 speed = vel * 2.237 if Config.OnScreenTextCC then drawTxta(UI.x, UI.y - 0.12, 0.45, "~r~Target Speed: ~w~" ..(round(speed,1)).. " MPH", 255, 50, 0, 255) drawTxta(UI.x, UI.y - 0.095, 0.45, "~r~Current speed: ~w~" ..round(curspeed,1).. " MPH", 255, 50, 0, 255) drawTxta(UI.x, UI.y - 0.07, 0.45, "~r~Throttle %: ~w~" ..round((throttle*100)), 255, 50, 0, 255) end if Config.OnScreendisplayCC then local sr = toint((throttle*255)) - 10 local sg = 255 - sr + 10 sg = toint(sg) DrawRect(UI.x + 0.06, UI.y - 0.03, throttle/12, 0.01, sr, sg, 0, 255) end if Config.Watermark2 then drawTxtb(UI.x + 0.01 ,UI.y - 0.03 ,0.27,"By DOJSRC", 255,255,255,255) end if Config.SimpleCCimmage then DrawSprite('cctcimages','SRCC1',UI.x - 0.0 ,UI.y - 0.01,0.023,0.04,0.0,255,255,255,200) end if IsControlPressed(0, Config.CCkey) and GetVehicleWheelSpeed(veh,1) < Config.Maxspeed then vel = GetVehicleWheelSpeed(veh,1) end if IsControlJustPressed(0, 8) or IsControlJustPressed(0, Config.CCkey) then SetVehicleMaxSpeed(veh, 300.0) cruse = false elseif IsPedInAnyVehicle(playerped,true) == false then cruse = false end until cruse == false Wait(500) end end function round(num, numDecimalPlaces) local mult = 10^(numDecimalPlaces or 0) if num >= 0 then return math.floor(num * mult + 0.5) / mult else return math.ceil(num * mult - 0.5) / mult end end function toint(n) local s = tostring(n) local i, j = s:find('%.') if i then return tonumber(s:sub(1, i-1)) else return n end end function drawTxta(x, y, scale, text, r, g, b, a) SetTextFont(4) SetTextProportional(0) SetTextScale(scale, scale) SetTextColour(r, g, b, a) SetTextDropShadow(0, 0, 0, 0,255) SetTextEdge(1, 0, 0, 0, 255) SetTextDropShadow() SetTextOutline() SetTextEntry("STRING") AddTextComponentString(text) DrawText(x, y) end function drawTxtb(x, y, scale, text, r, g, b, a) SetTextFont(4) SetTextProportional(0) SetTextScale(scale, scale) SetTextColour(r, g, b, a) SetTextEntry("STRING") AddTextComponentString(text) DrawText(x, y) end