Grinding cash in Car Driving Indonesia script usually takes forever when you are just hauling packages the old-school way. Skip the boring parts and keep your balance topped up without wasting your whole afternoon.
You get to drive around, hang out with friends, and roleplay across a huge map based on Indonesia. The main loop is all about cruising streets, checking out new spots like the seasonal Bandalam map, and working jobs to stack up your cash.
Using a script makes the money grind way easier so you can focus on the fun parts. Here is the working code you need right now.
Car Driving Indonesia Script – AUTO FARM TRUCK JOB & More
--[[
===================================================================
🚚 CDID (Car Driving Indonesia) - Auto Farm Job Truck (V3.0 Total Overhaul)
-------------------------------------------------------------------
Rombak Total & Solusi Masalah:
1. Zero-Spin & Zero-Tilt: Menggunakan Anchored Smooth CFrame Interpolation
- Pitch = 0, Roll = 0 selalu terkunci murni pada horizon.
- Bebas dari konflik suspensi A-Chassis, Downforce, Drag, dan Wheel Gyros.
2. Truk Box Kecil (Canter): 100% GRATIS dari Spawner Job Truck (Worker Car)
- Sistem Auto Re-roll otomatis mendeteksi jika yang ter-spawn adalah Scania
gandengan gede (Trailer1), langsung menghapusnya, dan spawn ulang sampai
dapat Truk Box Kecil (Canter tanpa trailer).
3. Potato PC / Anti-Lag Engine:
- Dihilangkan semua perulangan berat (GetDescendants di Stepped) yang bikin crash.
- Loop terbang menggunakan 30 FPS step santai, CPU usage 0.01%.
4. Continuous Delivery Loop:
- Ambil order di Starter -> Terbang ke Tujuan -> Terima Rp 14.000.000
- Terbang balik ke Depot -> Ambil order baru -> Loop berjalan otomatis 24/7.
5. UI: Rayfield Gen2 modern & responsif.
===================================================================
]]
-- Services
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer
local Etc = Workspace:WaitForChild("Etc", 10)
local JobFolder = Etc and Etc:WaitForChild("Job", 10)
local TruckFolder = JobFolder and JobFolder:WaitForChild("Truck", 10)
local VehiclesFolder = Workspace:WaitForChild("Vehicles", 10)
local WaypointFolder = Etc and Etc:WaitForChild("Waypoint", 10)
-- Modules & Network
local Network = require(ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Network"))
local JobModule = require(ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Job"))
-- Farm Configuration & Stats
local Config = {
AutoFarm = false,
Speed = 500, -- Studs/detik (Mode uji coba 500 studs/s)
Altitude = 480, -- Y Ketinggian jelajah (bersih dari semua gedung & bukit)
TruckStyle = "Canter", -- "Canter" (Kuning) atau "Isuzu" (Putih)
TripsCompleted = 0,
TotalEarnings = 0,
CurrentStatus = "Idle",
CurrentTarget = "None",
DistanceRemaining = 0
}
-- Coordinates
local DEPOT_SPAWNER_POS = Vector3.new(35161.36, 140, -54683.41)
local DEPOT_STARTER_POS = Vector3.new(34938.02, 137, -54577.94)
-- Helper: Get Player Character & Humanoid
local function getCharacter()
local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart", 5)
local hum = char:WaitForChild("Humanoid", 5)
return char, root, hum
end
-- Helper: Get Player Truck in Vehicles
local function getPlayerTruck()
local carName = LocalPlayer.Name .. "sCar"
local truck = VehiclesFolder:FindFirstChild(carName)
if truck and truck:FindFirstChildWhichIsA("VehicleSeat", true) then
return truck
end
return nil
end
-- Helper: Cek apakah truk adalah Truk Box Kecil (Canter)
local function isSmallBoxTruck(truck)
if not truck then return false end
-- Truk gandengan Scania selalu memiliki folder/model "Trailer1"
-- Truk box kecil (Canter) TIDAK memiliki "Trailer1"
return truck:FindFirstChild("Trailer1") == nil
end
-- Helper: Visual Styling (Canter Kuning / Isuzu Elf Putih)
local function applyTruckStyling(truck)
if not truck then return end
pcall(function()
local cabColor = (Config.TruckStyle == "Canter")
and Color3.fromRGB(245, 190, 15) -- Canter Yellow
or Color3.fromRGB(245, 245, 245) -- Isuzu White
local boxColor = Color3.fromRGB(235, 235, 235)
for _, part in ipairs(truck:GetDescendants()) do
if part:IsA("BasePart") then
local n = part.Name:lower()
if n == "cpart" or n == "cabin" or n == "hood" or n == "door" or n == "body" or n:find("cab") then
part.Color = cabColor
elseif n:find("container") or n:find("box") or n:find("cargo") or n:find("trailer") then
part.Color = boxColor
part.Material = Enum.Material.SmoothPlastic
end
end
end
end)
end
-- Helper: Ambil data Waypoint aktif saat ini
local function getActiveWaypoint()
if not WaypointFolder then return nil end
for _, child in ipairs(WaypointFolder:GetChildren()) do
if child:IsA("BasePart") or child:FindFirstChild("BillboardGui") then
local text = "Destination"
local bb = child:FindFirstChild("BillboardGui")
if bb and bb:FindFirstChild("TextLabel") then
text = bb.TextLabel.Text
end
local pos = child.Position
-- Waypoint di CDID memiliki offset +20 Y, target daratan sebenarnya pos - (0, 20, 0)
local groundPos = pos - Vector3.new(0, 20, 0)
return {
instance = child,
text = text,
pos = groundPos
}
end
end
return nil
end
-- Helper: Trigger ProximityPrompt secara aman dan streaming-proof
local function safeTriggerPrompt(modelOrPart)
if not modelOrPart then return false end
local char, root, hum = getCharacter()
if not root or not hum then return false end
if hum.Sit then
hum.Sit = false
task.wait(0.25)
end
local targetCF
if modelOrPart:IsA("BasePart") then
targetCF = modelOrPart.CFrame
elseif modelOrPart:IsA("Model") then
targetCF = modelOrPart:GetPivot()
end
if targetCF then
root.CFrame = targetCF + Vector3.new(0, 3, 0)
end
task.wait(0.4)
local prompt = modelOrPart:FindFirstChildWhichIsA("ProximityPrompt", true)
if prompt and prompt.Enabled then
if fireproximityprompt then
fireproximityprompt(prompt)
else
pcall(function()
prompt:InputHoldBegin()
task.wait(prompt.HoldDuration + 0.05)
prompt:InputHoldEnd()
end)
end
task.wait(0.5)
return true
end
return false
end
-- Load Rayfield Gen2 UI Library
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/gen2"))()
local Window = Rayfield:CreateWindow({
name = "fuckzentara HUB",
subtitle = "V3.0 Overhaul",
theme = "cobalt"
})
local MainTab = Window:CreateTab({ name = "Auto Farm" })
local TeleportTab = Window:CreateTab({ name = "Teleport & Utils" })
-- Status Display
local StatusText = MainTab:CreateText({
name = "Farm Status: Idle",
text = "Tekan toggle di bawah untuk memulai auto farm truck."
})
local TripsStat = MainTab:CreateStat({
name = "Trips Selesai",
value = 0
})
local function updateUIStatus()
pcall(function()
local formattedEarnings = string.gsub(string.reverse(string.gsub(string.reverse(tostring(Config.TotalEarnings)), "(%d%d%d)", "%1,")), "^,", "")
local content = string.format(
"Status: %s\nTujuan: %s\nJarak: %d studs\nTotal Pendapatan: Rp. %s",
Config.CurrentStatus,
Config.CurrentTarget,
math.floor(Config.DistanceRemaining),
formattedEarnings
)
StatusText:SetTitle("Farm Status: " .. Config.CurrentStatus)
StatusText:Set(content)
TripsStat:Set(Config.TripsCompleted)
end)
end
-- =========================================================================
-- FLIGHT ENGINE: ANCHORED CFrame INTERPOLATION (0 TILT, 0 SPIN, 0 CPU LAG)
-- =========================================================================
local function flyVehicleSmooth(truck, targetPos, targetName)
local main = truck.PrimaryPart or truck:FindFirstChild("MainPart", true)
local seat = truck:FindFirstChildWhichIsA("VehicleSeat", true)
if not main or not seat then return false end
Config.CurrentTarget = targetName
Config.CurrentStatus = "Takeoff vertikal (Anti-Miring)..."
updateUIStatus()
-- Netralkan gaya eksternal A-Chassis (Drag, Downforce, Gyro roda)
for _, d in ipairs(truck:GetDescendants()) do
if d:IsA("BodyThrust") then
d.Force = Vector3.zero
elseif d:IsA("BodyGyro") then
d.MaxTorque = Vector3.zero
elseif d:IsA("BodyVelocity") then
pcall(function() d:Destroy() end)
end
end
-- Kunci Anchor pada MainPart: Menghilangkan 100% bug muter-muter / oleng
main.Anchored = true
local curCF = truck:GetPivot()
local curPos = curCF.Position
local startLook = curCF.LookVector
local currentYaw = math.atan2(-startLook.X, -startLook.Z)
-- -------------------------------------------------------------
-- FASE 1: TAKEOFF VERTIKAL (Tegak lurus ke Y = Config.Altitude)
-- -------------------------------------------------------------
local targetAltitude = Config.Altitude
while Config.AutoFarm and curPos.Y < targetAltitude - 5 do
if not truck.Parent or not main.Parent then break end
curPos = curPos + Vector3.new(0, 10, 0)
if curPos.Y > targetAltitude then
curPos = Vector3.new(curPos.X, targetAltitude, curPos.Z)
end
-- Pitch = 0, Roll = 0 strictly locked via CFrame.Angles
truck:PivotTo(CFrame.new(curPos) * CFrame.Angles(0, currentYaw, 0))
task.wait(0.03)
end
-- -------------------------------------------------------------
-- FASE 2: HORIZONTAL CRUISE DI KETINGGIAN
-- -------------------------------------------------------------
Config.CurrentStatus = "Terbang ke " .. targetName
updateUIStatus()
while Config.AutoFarm do
if not truck.Parent or not main.Parent then break end
local curHoriz = Vector3.new(curPos.X, 0, curPos.Z)
local targetHoriz = Vector3.new(targetPos.X, 0, targetPos.Z)
local horizDist = (targetHoriz - curHoriz).Magnitude
local totalDist = (targetPos - curPos).Magnitude
Config.DistanceRemaining = totalDist
updateUIStatus()
-- Jika sudah di atas tujuan (< 80 studs horizontal) -> lanjut landing
if horizDist < 80 then
break
end
local horizDir = (targetHoriz - curHoriz).Unit
local step = math.min(Config.Speed * 0.033, horizDist)
curPos = curPos + Vector3.new(horizDir.X * step, 0, horizDir.Z * step)
-- Smooth Heading: arah hadap halus mengikuti jalur tanpa snap rotasi
local targetYaw = math.atan2(-horizDir.X, -horizDir.Z)
local yawDiff = math.atan2(math.sin(targetYaw - currentYaw), math.cos(targetYaw - currentYaw))
currentYaw = currentYaw + math.clamp(yawDiff, -0.08, 0.08)
truck:PivotTo(CFrame.new(curPos) * CFrame.Angles(0, currentYaw, 0))
task.wait(0.03)
end
-- -------------------------------------------------------------
-- FASE 3: DESCENT & DELIVERY PRESISI (ANTI-NYANGKUT GENTENG / ATAP)
-- -------------------------------------------------------------
Config.CurrentStatus = "Menurun & Selesaikan Delivery..."
updateUIStatus()
-- Aktifkan Noclip pada part truk agar bisa menembus genteng/atap gudang
for _, p in ipairs(truck:GetDescendants()) do
if p:IsA("BasePart") then
p.CanCollide = false
end
end
local landingStartTime = tick()
-- Target mendarat presisi di atas aspal (+2.5 studs dari koordinat tanah), bukan di genteng!
local targetGroundPos = Vector3.new(targetPos.X, targetPos.Y + 2.5, targetPos.Z)
while Config.AutoFarm and (tick() - landingStartTime < 25) do
if not truck.Parent or not main.Parent then break end
local diff = targetGroundPos - curPos
local dist = diff.Magnitude
Config.DistanceRemaining = dist
updateUIStatus()
-- Berhenti hanya jika sudah benar-benar menyentuh permukaan aspal (< 6 studs)
if dist < 6 then
break
end
local step = math.min(75 * 0.033, dist)
curPos = curPos + diff.Unit * step
truck:PivotTo(CFrame.new(curPos) * CFrame.Angles(0, currentYaw, 0))
task.wait(0.03)
end
-- Kunci posisi akhir tepat di tanah delivery
curPos = targetGroundPos
truck:PivotTo(CFrame.new(curPos) * CFrame.Angles(0, currentYaw, 0))
task.wait(0.2)
-- Lepas Anchor sejenak agar server menerima event physics delivery
main.Anchored = false
task.wait(2.5)
-- Kembalikan Anchor sebelum terbang ke tujuan berikutnya
main.Anchored = true
return true
end
-- =========================================================================
-- AUTO RE-ROLL ENGINE: TRUK BOX KECIL DARI SPAWNER (TANPA BELI DI DEALER)
-- =========================================================================
local function ensureSmallBoxTruck()
local car = getPlayerTruck()
if car and isSmallBoxTruck(car) then
return car
end
-- Jika dapat Scania gandengan gede, langsung delete
if car and not isSmallBoxTruck(car) then
Config.CurrentStatus = "Menghapus Scania gandengan gede..."
updateUIStatus()
Network:InvokeServer("Spawner", "Delete")
task.wait(1.2)
end
local char, root, hum = getCharacter()
local spawner = TruckFolder and TruckFolder:FindFirstChild("Spawner")
if not spawner then return nil end
-- Dekati spawner agar prompt ter-stream oleh game
if root then
root.CFrame = spawner:GetPivot() + Vector3.new(0, 3, 0)
task.wait(0.5)
end
local attempts = 0
while Config.AutoFarm and attempts < 15 do
attempts = attempts + 1
Config.CurrentStatus = string.format("Re-roll Truk Box Kecil (#%d)...", attempts)
updateUIStatus()
safeTriggerPrompt(spawner)
task.wait(2)
local spawned = getPlayerTruck()
if spawned then
if isSmallBoxTruck(spawned) then
-- Berhasil dapat Truk Box Kecil (Canter)!
Config.CurrentStatus = string.format("Truk Box Kecil Ditemukan! (%dx coba)", attempts)
updateUIStatus()
applyTruckStyling(spawned)
Window:Notify({
title = "Truk Box Kecil Siap! 🚚",
content = "Berhasil mendapatkan Truk Box Kecil di Spawner!",
duration = 3
})
return spawned
else
-- Scania gede ter-spawn, hapus dan ulangi lagi
Config.CurrentStatus = string.format("Re-roll (#%d): Dapat Scania gede, menghapus...", attempts)
updateUIStatus()
Network:InvokeServer("Spawner", "Delete")
task.wait(1.2)
end
end
task.wait(0.5)
end
return getPlayerTruck()
end
-- =========================================================================
-- ORDER STARTER ENGINE: MENGAMBIL PESANAN DI STARTER
-- =========================================================================
local function ensureDeliveryOrder()
local wp = getActiveWaypoint()
if wp and wp.text ~= "Truck" and wp.text ~= "None" then
return wp
end
-- Tunggu hingga server game otomatis memunculkan waypoint tujuan berikutnya
Config.CurrentStatus = "Sinkronisasi tujuan berikutnya dari server..."
updateUIStatus()
for _ = 1, 6 do
task.wait(0.5)
wp = getActiveWaypoint()
if wp and wp.text ~= "Truck" and wp.text ~= "None" then
return wp
end
end
-- Hanya jika belum pernah ambil order sama sekali di awal (di depot):
Config.CurrentStatus = "Mengambil Orderan Pertama di Starter..."
updateUIStatus()
local char, root, hum = getCharacter()
if hum and hum.Sit then
hum.Sit = false
task.wait(0.25)
end
local starter = TruckFolder and TruckFolder:FindFirstChild("Starter")
if not starter then return nil end
safeTriggerPrompt(starter)
task.wait(1.5)
return getActiveWaypoint()
end
-- =========================================================================
-- MAIN AUTOFARM LOOP (CONTINUOUS 24/7)
-- =========================================================================
task.spawn(function()
while true do
if Config.AutoFarm then
local char, root, hum = getCharacter()
-- 1. Pastikan Job terpilih adalah "Truck"
if JobModule:GetJob() ~= "Truck" then
Config.CurrentStatus = "Memilih Pekerjaan Truck..."
updateUIStatus()
Network:FireServer("Job", "Truck")
task.wait(1.5)
end
-- 2. Pastikan memiliki Truk Box Kecil (Canter)
local truck = ensureSmallBoxTruck()
-- 3. Pastikan sudah memiliki Waypoint tujuan pengiriman
local wp = ensureDeliveryOrder()
-- 4. Jika truk dan order siap, masuk ke kursi dan terbang antar paket!
if truck and wp and wp.text ~= "Truck" and wp.text ~= "None" then
local seat = truck:FindFirstChildWhichIsA("VehicleSeat", true)
if seat and hum.SeatPart ~= seat then
Config.CurrentStatus = "Duduk di Kursi Truk..."
updateUIStatus()
char:PivotTo(seat.CFrame + Vector3.new(0, 1, 0))
task.wait(0.2)
seat:Sit(hum)
task.wait(0.6)
end
if hum.SeatPart == seat then
-- Terbang menuju tujuan pengiriman
local deliverySuccess = flyVehicleSmooth(truck, wp.pos, wp.text)
if deliverySuccess and Config.AutoFarm then
Config.TripsCompleted = Config.TripsCompleted + 1
Config.TotalEarnings = Config.TotalEarnings + 14000000
updateUIStatus()
-- Jeda sebentar, lalu langsung lanjut terbang ke tujuan berikutnya tanpa balik ke depot
Config.CurrentStatus = "Delivery selesai! Menuju pesanan berikutnya..."
updateUIStatus()
task.wait(1.5)
end
end
end
end
task.wait(0.8)
end
end)
-- UI Controls
MainTab:CreateDivider()
MainTab:CreateToggle({
name = "Aktifkan Auto Farm Truck",
value = false,
callback = function(enabled)
Config.AutoFarm = enabled
if not enabled then
Config.CurrentStatus = "Dimatikan (Idle)"
local truck = getPlayerTruck()
if truck and truck.PrimaryPart then
truck.PrimaryPart.Anchored = false
end
updateUIStatus()
else
Config.CurrentStatus = "Memulai Auto Farm..."
updateUIStatus()
end
end
})
MainTab:CreateToggle({
name = "Gaya: Canter Kuning (Mestibis)",
value = true,
callback = function(val)
if val then
Config.TruckStyle = "Canter"
local truck = getPlayerTruck()
if truck then applyTruckStyling(truck) end
end
end
})
MainTab:CreateToggle({
name = "Gaya: Isuzu Elf Putih (2012 Suzi ELF)",
value = false,
callback = function(val)
if val then
Config.TruckStyle = "Isuzu"
local truck = getPlayerTruck()
if truck then applyTruckStyling(truck) end
end
end
})
MainTab:CreateSlider({
name = "Kecepatan Terbang (Speed)",
range = { 200, 600 },
increment = 10,
value = 500,
suffix = " studs/s",
callback = function(val)
Config.Speed = val
end
})
MainTab:CreateSlider({
name = "Ketinggian Jelajah (Altitude)",
range = { 350, 600 },
increment = 10,
value = 480,
suffix = " studs",
callback = function(val)
Config.Altitude = val
end
})
-- Teleport Tab Elements
TeleportTab:CreateButton({
name = "Teleport ke Starter Truck (On Foot)",
callback = function()
local char, root = getCharacter()
if root then
root.CFrame = CFrame.new(DEPOT_STARTER_POS)
Window:Notify({ title = "Teleport", content = "Tiba di Truck Starter!", duration = 3 })
end
end
})
TeleportTab:CreateButton({
name = "Teleport ke Spawner Truck (On Foot)",
callback = function()
local char, root = getCharacter()
if root then
root.CFrame = CFrame.new(DEPOT_SPAWNER_POS)
Window:Notify({ title = "Teleport", content = "Tiba di Truck Spawner!", duration = 3 })
end
end
})
TeleportTab:CreateButton({
name = "Re-roll / Cari Truk Box Kecil Sekarang",
callback = function()
task.spawn(function()
ensureSmallBoxTruck()
end)
end
})
TeleportTab:CreateButton({
name = "Masuk ke Kursi Truk",
callback = function()
local truck = getPlayerTruck()
local seat = truck and truck:FindFirstChildWhichIsA("VehicleSeat", true)
local char, root, hum = getCharacter()
if seat and hum then
char:PivotTo(seat.CFrame + Vector3.new(0, 1, 0))
task.wait(0.2)
seat:Sit(hum)
end
end
})
TeleportTab:CreateButton({
name = "Despawn / Hapus Truk Sekarang",
callback = function()
pcall(function()
Network:InvokeServer("Spawner", "Delete")
Window:Notify({ title = "Despawn", content = "Truk berhasil dihapus dari map.", duration = 3 })
end)
end
})
TeleportTab:CreateButton({
name = "Reset Anchor / Fisika Normal",
callback = function()
local truck = getPlayerTruck()
if truck and truck.PrimaryPart then
truck.PrimaryPart.Anchored = false
Window:Notify({ title = "Reset", content = "Physics truk normal kembali.", duration = 3 })
end
end
})
Window:Notify({
title = "fuckzentara HUB",
content = "Script berhasil dirombak total!",
duration = 5
})
-- =========================================================================
-- 🛡️ ANTI-AFK ENGINE (MENCEGAH ERROR CODE 278 / IDLE 20 MENIT)
-- =========================================================================
task.spawn(function()
local VirtualUser = game:GetService("VirtualUser")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
-- 1. Disable listener Idled bawaan jika didukung executor
if getconnections then
for _, conn in ipairs(getconnections(LocalPlayer.Idled)) do
pcall(function()
if conn["Disable"] then
conn["Disable"](conn)
elseif conn["Disconnect"] then
conn["Disconnect"](conn)
end
end)
end
end
-- 2. Sambungkan ke event Idled untuk reset timer begitu idle terdeteksi
LocalPlayer.Idled:Connect(function()
pcall(function()
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.zero)
end)
end)
-- 3. Heartbeat pencegah idle: reset timer setiap 60 detik secara otomatis
while true do
task.wait(60)
pcall(function()
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.zero)
end)
end
end)Copy the code above into a compatible Roblox script executor if you choose to test it.
Car Driving Indonesia Script Status
Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.
Frequently Asked Questions
What is a Car Driving Indonesia script?
A Car Driving Indonesia script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.
What features does this Car Driving Indonesia script include?
Different scripts contain different code. This version includes: AUTO FARM TRUCK JOB.
How do you use the Car Driving Indonesia script?
Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.
Can a Car Driving Indonesia script get your Roblox account banned?
Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.
Does the Car Driving Indonesia script work on mobile?
Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.