
KeylessUniversal

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)No comments yet for this script.



