--[[ =================================================================== 🚚 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)