local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local pGui = player:WaitForChild("PlayerGui") -- --- CONFIGURATION --- local paintToolName = "PaintBucket" local REQUIRED_SPEED, REQUIRED_JUMP = 180, 90 local partsPerFrame = 670 -- Adjusted for high-speed map coverage local sounds = {"12222200", "12222242", "130767759", "142376088", "5168097232"} -- --- LOCALIZATION --- local random = math.random local v3Color = Color3.new local insert = table.insert local clear = table.clear -- --- STATE --- local mapParts = {} local currentIndex = 1 -- --- 1. ROBUST MOVEMENT ENFORCEMENT --- -- Forces speed every frame to override game scripts RunService.Stepped:Connect(function() local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = REQUIRED_SPEED hum.JumpPower = REQUIRED_JUMP hum.UseJumpPower = true end end) -- --- 2. MAP SCANNER --- local function cacheMap() clear(mapParts) local desc = workspace:GetDescendants() for i = 1, #desc do local v = desc[i] if v:IsA("BasePart") and v.Transparency < 1 and not v:IsA("Terrain") and not v:FindFirstAncestorOfClass("Character") then insert(mapParts, v) end end currentIndex = 1 end cacheMap() -- --- 3. MAIN EXECUTION LOOP --- RunService.Heartbeat:Connect(function() local char = player.Character if not char then return end -- A. ANTI-DROP / AUTO-EQUIP local tool = player.Backpack:FindFirstChild(paintToolName) or char:FindFirstChild(paintToolName) if tool then if tool.Parent ~= char then tool.Parent = char end else return -- Exit if tool is missing from inventory entirely end local remote = tool:FindFirstChild("Remotes") and tool.Remotes:FindFirstChild("ServerControls") if not remote then return end -- B. INSTANT GUI CLEANUP local palette = pGui:FindFirstChild("PaletteGui", true) if palette then palette:Destroy() end -- C. BATCHED MAP PAINTING for _ = 1, partsPerFrame do if currentIndex > #mapParts then currentIndex = 1 break end local part = mapParts[currentIndex] if part and part.Parent then pcall(function() remote:InvokeServer("PaintPart", { Part = part, Color = v3Color(random(), random(), random()) }) end) end currentIndex = currentIndex + 1 end end) -- --- 4. SOUND & CACHE REFRESH --- task.spawn(function() while true do -- Sound logic pcall(function() local radio = player:FindFirstChild("Radio", true) or pGui:FindFirstChild("Radio", true) if radio then local sRemote = radio:FindFirstChild("Remote") if sRemote then sRemote:FireServer("Play", sounds[random(#sounds)], "", "") end end end) task.wait(2) -- Refresh delay if currentIndex == 1 then cacheMap() end -- Only re-scan map when a sweep finishes end end)