
KeylessUniversal

-- Hydroxide v9 | Obby Creator
-- Solara Safe GUI (no UIListLayout/AutomaticSize/ScrollingFrame in main menu)
-- Uses PaintObject remote directly = PERMANENT server-side changes (no spy needed)
-- v9: ESP speed overhaul, Typing ESP override, Reveal All button
if game.CoreGui:FindFirstChild("Hydroxide") then
game.CoreGui:FindFirstChild("Hydroxide"):Destroy()
end
local p = game.Players.LocalPlayer
local RS = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local ms = p:GetMouse()
local cam = workspace.CurrentCamera
local gui = Instance.new("ScreenGui")
gui.Name = "Hydroxide"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = game.CoreGui
-- STATE
local T = {}
local flyBV = nil
local flyBG = nil
local fk = {w=false,a=false,s=false,d=false,sp=false,sh=false}
local trollParts = {}
local hlStorage = {}
local custSpd = nil
local custJmp = nil
local origLit = {}
local dragging = false
local dragStart = Vector3.new(0,0)
local startPos = UDim2.new(0,0,0,0)
local minimized = false
local selectedPart = nil
local selectMode = false
local propOpen = false
local propDragging = false
local propDragStart = Vector3.new(0,0)
local propStartPos = UDim2.new(0,0,0,0)
local customHlStorage = {}
local cespActive = false
-- v9: tracks which parts Custom/Typing ESP owns (for override)
local customEspParts = {}
-- ═══════════════════════════════════════════════════════════════
-- FIND GAME REMOTES — PaintObject, MoveObject, DeleteObject
-- These are the game's actual remotes that save permanently
-- ═══════════════════════════════════════════════════════════════
local PaintObject = nil
local MoveObject = nil
local DeleteObject = nil
pcall(function()
PaintObject = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("PaintObject", 5)
end)
if not PaintObject then
pcall(function()
for _, c in ipairs(game:GetService("ReplicatedStorage"):FindFirstChild("Events"):GetChildren()) do
if c.Name == "PaintObject" then PaintObject = c; break end
end
end)
end
if not PaintObject then
pcall(function()
local function scan(obj, d)
if d > 6 then return end
for _, c in ipairs(obj:GetChildren()) do
if c.Name == "PaintObject" and (c:IsA("RemoteEvent") or c:IsA("RemoteFunction")) then
PaintObject = c; return
end
scan(c, d + 1)
end
end
scan(game:GetService("ReplicatedStorage"), 0)
end)
end
pcall(function()
MoveObject = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("MoveObject", 3)
end)
pcall(function()
DeleteObject = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("DeleteObject", 3)
end)
-- ═══════════════════════════════════════════════════════════════
-- PAINT PART — calls PaintObject remote = PERMANENT server save
-- Format: PaintObject:InvokeServer({[1] = part}, propName, value)
-- ═══════════════════════════════════════════════════════════════
local function paintPart(part, prop, val)
if not PaintObject or not part or not part.Parent then return false end
local ok = pcall(function()
PaintObject:InvokeServer({[1] = part}, prop, val)
end)
return ok
end
local function movePart(part, cf, sz)
if not MoveObject or not part or not part.Parent then return end
pcall(function()
MoveObject:InvokeServer({{part, cf or part.CFrame, sz or part.Size}})
end)
end
-- ═══════════════════════════════════════════════════════════════
-- APPLY PROPERTY — set locally + paint to server = PERMANENT
-- ═══════════════════════════════════════════════════════════════
local function applyProperty(part, propName, value)
if not part or not part.Parent then return false end
-- Step 1: Apply locally (instant visual feedback)
pcall(function()
if propName == "Transparency" then
part.Transparency = tonumber(value) or 0
elseif propName == "Reflectance" then
part.Reflectance = tonumber(value) or 0
elseif propName == "Material" then
local m = Enum.Material[tostring(value)]
if m then part.Material = m end
elseif propName == "Color" then
if typeof(value) == "Color3" then
part.Color = value
elseif type(value) == "table" then
part.Color = Color3.new(value[1], value[2], value[3])
end
elseif propName == "CanCollide" then
part.CanCollide = value
elseif propName == "Anchored" then
part.Anchored = value
elseif propName == "SizeX" then
local sz = part.Size
part.Size = Vector3.new(tonumber(value) or sz.X, sz.Y, sz.Z)
elseif propName == "SizeY" then
local sz = part.Size
part.Size = Vector3.new(sz.X, tonumber(value) or sz.Y, sz.Z)
elseif propName == "SizeZ" then
local sz = part.Size
part.Size = Vector3.new(sz.X, sz.Y, tonumber(value) or sz.Z)
end
end)
-- Step 2: PAINT TO SERVER via PaintObject remote = PERMANENT!
if PaintObject then
return paintPart(part, propName, value)
end
return false
end
-- ═══════════════════════════════════════════════════════════════
-- HELPERS
-- ═══════════════════════════════════════════════════════════════
local function clamp(v,mn,mx) return math.max(mn, math.min(mx, v)) end
local function gH()
local c = p.Character
return c and c:FindFirstChild("Humanoid")
end
local function gR()
local c = p.Character
return c and c:FindFirstChild("HumanoidRootPart")
end
local function isBtn(prt)
if not prt:FindFirstChild("TouchTransmitter") then return false end
local n = prt.Name:lower()
return n:find("button") or n:find("btn") or n:find("press")
end
local function isKill(prt)
local n = prt.Name:lower()
return n:find("kill") or n:find("lava")
or n:find("acid") or n:find("danger")
or n:find("spike")
end
local function isWall(prt)
if prt.Transparency < 0.9 or not prt.CanCollide then return false end
if prt:FindFirstChild("TouchTransmitter") then return false end
if isBtn(prt) or isKill(prt) then return false end
return true
end
-- NOTIFICATION (bottom-right)
local notifFrame = Instance.new("Frame")
notifFrame.Size = UDim2.new(0, 200, 0, 44)
notifFrame.Position = UDim2.new(1, -210, 1, -54)
notifFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
notifFrame.BorderSizePixel = 1
notifFrame.BorderColor3 = Color3.fromRGB(0, 120, 200)
notifFrame.Visible = false
notifFrame.Parent = gui
local ntTitle = Instance.new("TextLabel")
ntTitle.Size = UDim2.new(1, -10, 0, 16)
ntTitle.Position = UDim2.new(0, 5, 0, 2)
ntTitle.BackgroundTransparency = 1
ntTitle.TextColor3 = Color3.fromRGB(0, 200, 255)
ntTitle.Font = Enum.Font.GothamBold
ntTitle.TextSize = 10
ntTitle.TextXAlignment = Enum.TextXAlignment.Left
ntTitle.Parent = notifFrame
local ntBody = Instance.new("TextLabel")
ntBody.Size = UDim2.new(1, -10, 0, 18)
ntBody.Position = UDim2.new(0, 5, 0, 20)
ntBody.BackgroundTransparency = 1
ntBody.TextColor3 = Color3.fromRGB(170, 170, 180)
ntBody.Font = Enum.Font.Gotham
ntBody.TextSize = 9
ntBody.TextXAlignment = Enum.TextXAlignment.Left
ntBody.Parent = notifFrame
function notify(title, text)
ntTitle.Text = title
ntBody.Text = text
notifFrame.Visible = true
spawn(function()
wait(2.5)
if notifFrame.Parent then
notifFrame.Visible = false
end
end)
end
-- MAIN FRAME
local main = Instance.new("Frame")
main.Size = UDim2.new(0, 400, 0, 520)
main.Position = UDim2.new(0.5, -200, 0.5, -260)
main.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
main.BorderSizePixel = 0
main.Active = true
main.Parent = gui
-- DRAG
main.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = inp.Position
startPos = main.Position
end
end)
main.InputEnded:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
UIS.InputChanged:Connect(function(inp)
if dragging and inp.UserInputType
== Enum.UserInputType.MouseMovement then
local d = inp.Position - dragStart
main.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + d.X,
startPos.Y.Scale,
startPos.Y.Offset + d.Y
)
end
-- prop panel drag
if propDragging and inp.UserInputType
== Enum.UserInputType.MouseMovement then
local d = inp.Position - propDragStart
propPanel.Position = UDim2.new(
propStartPos.X.Scale,
propStartPos.X.Offset + d.X,
propStartPos.Y.Scale,
propStartPos.Y.Offset + d.Y
)
end
end)
-- TITLE BAR
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.BackgroundColor3 = Color3.fromRGB(0, 130, 220)
titleBar.BorderSizePixel = 0
titleBar.Parent = main
local titleTxt = Instance.new("TextLabel")
titleTxt.Size = UDim2.new(1, -70, 1, 0)
titleTxt.Position = UDim2.new(0, 10, 0, 0)
titleTxt.BackgroundTransparency = 1
titleTxt.TextColor3 = Color3.new(1, 1, 1)
titleTxt.Text = "HYDROXIDE v9 | Obby Creator"
titleTxt.Font = Enum.Font.GothamBold
titleTxt.TextSize = 13
titleTxt.TextXAlignment = Enum.TextXAlignment.Left
titleTxt.Parent = titleBar
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -30, 0, 0)
closeBtn.BackgroundColor3 = Color3.fromRGB(220, 40, 40)
closeBtn.BorderSizePixel = 0
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 14
closeBtn.Parent = titleBar
closeBtn.MouseButton1Click:Connect(function()
gui:Destroy()
end)
local miniBtn = Instance.new("TextButton")
miniBtn.Size = UDim2.new(0, 30, 0, 30)
miniBtn.Position = UDim2.new(1, -60, 0, 0)
miniBtn.BackgroundColor3 = Color3.fromRGB(220, 180, 30)
miniBtn.BorderSizePixel = 0
miniBtn.Text = "_"
miniBtn.TextColor3 = Color3.new(0, 0, 0)
miniBtn.Font = Enum.Font.GothamBold
miniBtn.TextSize = 16
miniBtn.Parent = titleBar
miniBtn.MouseButton1Click:Connect(function()
minimized = not minimized
if minimized then
main.Size = UDim2.new(0, 400, 0, 30)
else
main.Size = UDim2.new(0, 400, 0, 520)
end
end)
-- TAB BAR
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.new(1, 0, 0, 26)
tabBar.Position = UDim2.new(0, 0, 0, 30)
tabBar.BackgroundColor3 = Color3.fromRGB(12, 12, 16)
tabBar.BorderSizePixel = 0
tabBar.Parent = main
local tabNames = {"ESP", "Tools", "Edit", "Misc"}
local tabBtns = {}
for i = 1, 4 do
local b = Instance.new("TextButton")
b.Size = UDim2.new(0.25, 0, 1, 0)
b.Position = UDim2.new((i-1)*0.25, 0, 0, 0)
b.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
b.BorderSizePixel = 0
b.Text = tabNames[i]
b.TextColor3 = Color3.fromRGB(140, 140, 150)
b.Font = Enum.Font.GothamBold
b.TextSize = 11
b.Parent = tabBar
tabBtns[i] = b
end
-- TAB FRAMES
local tabFrames = {}
for i = 1, 4 do
local f = Instance.new("Frame")
f.Size = UDim2.new(1, 0, 1, -56)
f.Position = UDim2.new(0, 0, 0, 56)
f.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
f.BorderSizePixel = 0
f.Visible = (i == 1)
f.Parent = main
tabFrames[i] = f
end
for i = 1, 4 do
tabBtns[i].MouseButton1Click:Connect(function()
for j = 1, 4 do
tabFrames[j].Visible = (j == i)
if j == i then
tabBtns[j].BackgroundColor3 =
Color3.fromRGB(0, 110, 200)
tabBtns[j].TextColor3 = Color3.new(1, 1, 1)
else
tabBtns[j].BackgroundColor3 =
Color3.fromRGB(25, 25, 30)
tabBtns[j].TextColor3 =
Color3.fromRGB(140, 140, 150)
end
end
end)
end
-- UI HELPERS
local function mkSection(parent, text, y)
local l = Instance.new("TextLabel")
l.Size = UDim2.new(1, -16, 0, 18)
l.Position = UDim2.new(0, 8, 0, y)
l.BackgroundColor3 = Color3.fromRGB(0, 110, 200)
l.BorderSizePixel = 0
l.Text = " " .. text
l.TextColor3 = Color3.new(1, 1, 1)
l.Font = Enum.Font.GothamBold
l.TextSize = 10
l.TextXAlignment = Enum.TextXAlignment.Left
l.Parent = parent
end
local function mkLabel(parent, text, y)
local l = Instance.new("TextLabel")
l.Size = UDim2.new(1, -16, 0, 16)
l.Position = UDim2.new(0, 8, 0, y)
l.BackgroundTransparency = 1
l.Text = text
l.TextColor3 = Color3.fromRGB(120, 120, 130)
l.Font = Enum.Font.Gotham
l.TextSize = 9
l.TextXAlignment = Enum.TextXAlignment.Left
l.Parent = parent
end
local function mkToggle(parent, text, y, key, cb)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, -16, 0, 26)
f.Position = UDim2.new(0, 8, 0, y)
f.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
f.BorderSizePixel = 0
f.Parent = parent
local l = Instance.new("TextLabel")
l.Size = UDim2.new(1, -50, 1, 0)
l.Position = UDim2.new(0, 8, 0, 0)
l.BackgroundTransparency = 1
l.Text = text
l.TextColor3 = Color3.fromRGB(210, 210, 220)
l.Font = Enum.Font.Gotham
l.TextSize = 11
l.TextXAlignment = Enum.TextXAlignment.Left
l.Parent = f
local b = Instance.new("TextButton")
b.Size = UDim2.new(0, 36, 0, 18)
b.Position = UDim2.new(1, -42, 0, 4)
b.BackgroundColor3 = Color3.fromRGB(60, 60, 70)
b.BorderSizePixel = 0
b.Text = "OFF"
b.TextColor3 = Color3.new(1, 1, 1)
b.Font = Enum.Font.GothamBold
b.TextSize = 9
b.Parent = f
T[key] = false
b.MouseButton1Click:Connect(function()
T[key] = not T[key]
b.Text = T[key] and "ON" or "OFF"
b.BackgroundColor3 = T[key]
and Color3.fromRGB(0, 170, 255)
or Color3.fromRGB(60, 60, 70)
if cb then cb(T[key]) end
end)
return b
end
local function mkBtn(parent, text, y, color, cb)
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, -16, 0, 24)
b.Position = UDim2.new(0, 8, 0, y)
b.BackgroundColor3 = color
or Color3.fromRGB(35, 35, 45)
b.BorderSizePixel = 0
b.Text = text
b.TextColor3 = Color3.fromRGB(220, 220, 230)
b.Font = Enum.Font.GothamBold
b.TextSize = 11
b.Parent = parent
b.MouseButton1Click:Connect(function()
if cb then cb() end
end)
return b
end
-- ═══════════════════════════════════════════════════════════════
-- WORLD ESP — Per-type storage, no conflicts
-- (defined before ESP tab UI so callbacks can reference them)
-- ═══════════════════════════════════════════════════════════════
local killHL = {}
local btnHL = {}
local wallHL = {}
local function clearTypeHL(storage)
for _, o in pairs(storage) do
pcall(function()
if o.Parent then o:Destroy() end
end)
end
for k in pairs(storage) do storage[k] = nil end
end
-- v9: remove highlights from other ESP types for a specific part
local function removeOtherHLForPart(part)
-- remove from killHL
for i = #killHL, 1, -1 do
local o = killHL[i]
pcall(function()
if o and o.Parent then
if o:IsA("Highlight") and o.Adornee == part then
o:Destroy()
table.remove(killHL, i)
elseif o:IsA("BillboardGui") and o.Adornee == part then
o:Destroy()
table.remove(killHL, i)
end
end
end)
end
-- remove from btnHL
for i = #btnHL, 1, -1 do
local o = btnHL[i]
pcall(function()
if o and o.Parent then
if o:IsA("Highlight") and o.Adornee == part then
o:Destroy()
table.remove(btnHL, i)
elseif o:IsA("BillboardGui") and o.Adornee == part then
o:Destroy()
table.remove(btnHL, i)
end
end
end)
end
-- remove from wallHL
for i = #wallHL, 1, -1 do
local o = wallHL[i]
pcall(function()
if o and o.Parent then
if o:IsA("Highlight") and o.Adornee == part then
o:Destroy()
table.remove(wallHL, i)
elseif o:IsA("BillboardGui") and o.Adornee == part then
o:Destroy()
table.remove(wallHL, i)
end
end
end)
end
-- remove from trollParts (restore original)
if trollParts[part] then
local d = trollParts[part]
pcall(function()
if part.Parent then
part.Color = d.c
part.Transparency = d.t
part.CastShadow = d.cs
local tt = part:FindFirstChild("TouchTransmitter")
if tt then tt.Enabled = d.tt end
end
end)
trollParts[part] = nil
end
end
local function applyTypeHL(storage, fn, fill, out, ft, lbl)
clearTypeHL(storage)
pcall(function()
for _, v in pairs(
workspace:GetDescendants()) do
if v:IsA("BasePart") and fn(v) then
-- v9: skip if Custom/Typing ESP owns this part
if not customEspParts[v] then
local c = p.Character
if not (c and v:IsDescendantOf(c)) then
local h = Instance.new("Highlight")
h.FillColor = fill
h.OutlineColor = out
h.FillTransparency = ft
h.OutlineTransparency = 0
h.Parent = v
table.insert(storage, h)
if lbl then
local bg2 = Instance.new(
"BillboardGui")
bg2.Size = UDim2.new(0, 80, 0, 18)
bg2.StudsOffset =
Vector3.new(0, 2.5, 0)
bg2.AlwaysOnTop = true
bg2.Adornee = v
bg2.Parent = v
local l2 = Instance.new(
"TextLabel")
l2.Size = UDim2.new(1,0,1,0)
l2.BackgroundTransparency = 1
l2.TextColor3 =
Color3.new(1,1,1)
l2.Text = lbl
l2.TextSize = 12
l2.Font = Enum.Font.GothamBold
l2.Parent = bg2
table.insert(storage, bg2)
end
end
end
end
end
end)
end
local function clearKillHL()
clearTypeHL(killHL)
end
local function applyKillHL()
applyTypeHL(killHL, isKill,
Color3.fromRGB(255,0,0),
Color3.fromRGB(255,100,100),
0.65, "KILL")
end
local function clearBtnHL()
clearTypeHL(btnHL)
end
local function applyBtnHL()
applyTypeHL(btnHL, isBtn,
Color3.fromRGB(0,200,80),
Color3.fromRGB(0,255,100),
0.6, "BUTTON")
end
local function clearWallHL()
clearTypeHL(wallHL)
end
local function applyWallHL()
applyTypeHL(wallHL, isWall,
Color3.fromRGB(255,200,0),
Color3.fromRGB(255,255,0),
0.5, "WALL")
end
-- Backward compat for reset buttons
function clearHL()
clearTypeHL(killHL)
clearTypeHL(btnHL)
clearTypeHL(wallHL)
hlStorage = {}
end
-- Troll ESP — reveals invisible/troll parts
local function doTroll(on)
if on then
local c = p.Character
local cnt = 0
pcall(function()
for _, v in pairs(
workspace:GetDescendants()) do
if v:IsA("BasePart")
and v ~= workspace.Terrain then
if not (c and v:IsDescendantOf(c)) then
-- v9: skip if Custom ESP owns this part
if not customEspParts[v] then
local isTroll = false
if v.Transparency >= 0.5 then
isTroll = true
end
if v.CanCollide and v.Transparency >= 0.3
and not isBtn(v) and not isKill(v) then
isTroll = true
end
if isTroll and not trollParts[v] then
trollParts[v] = {
c=v.Color,
t=v.Transparency,
cs=v.CastShadow,
tt=v:FindFirstChild(
"TouchTransmitter")
and v.TouchTransmitter.Enabled
}
if isKill(v) then
v.Color = Color3.fromRGB(255, 0, 0)
elseif isBtn(v) then
v.Color = Color3.fromRGB(0, 255, 0)
elseif v.CanCollide then
v.Color = Color3.fromRGB(255, 255, 0)
else
v.Color = Color3.fromRGB(255, 50, 255)
end
v.Transparency = 0.4
v.CastShadow = false
local tt = v:FindFirstChild(
"TouchTransmitter")
if tt then
tt.Enabled = false
end
cnt = cnt + 1
end
end
end
end
end
end)
return cnt
else
for pp, d in pairs(trollParts) do
-- v9: skip if Custom ESP owns this part now
if not customEspParts[pp] then
pcall(function()
if pp.Parent then
pp.Color = d.c
pp.Transparency = d.t
pp.CastShadow = d.cs
local tt = pp:FindFirstChild(
"TouchTransmitter")
if tt then tt.Enabled = d.tt end
end
end)
end
end
trollParts = {}
end
end
-- ========== ESP TAB ==========
local espT = tabFrames[1]
mkSection(espT, "Hover ESP", 5)
mkToggle(espT, "Client Part ESP", 26, "partESP")
mkLabel(espT, "Outline + name + info on hover", 55)
mkSection(espT, "World ESP", 74)
mkToggle(espT, "Troll ESP (invisible parts)", 95, "trollESP", function(v)
if v then
local c = doTroll(true)
notify("Troll", "Revealed " .. tostring(c) .. " parts")
else
doTroll(false)
notify("Troll", "Cleared")
end
end)
-- v9: REVEAL ALL button — force refreshes ALL active ESP types
mkBtn(espT, "REVEAL ALL (force refresh)", 120,
Color3.fromRGB(220, 120, 0), function()
local total = 0
if T.trollESP then
total = total + doTroll(true)
end
if T.killESP then
applyKillHL()
end
if T.btnESP then
applyBtnHL()
end
if T.wallESP then
applyWallHL()
end
if cespActive and customEspTb.Text and customEspTb.Text ~= "" then
total = total + applyCustomESP()
end
notify("Reveal", "All ESPs refreshed!")
end)
mkToggle(espT, "Killbrick ESP", 149, "killESP", function(v)
if v then
applyKillHL()
notify("Killbrick", "ESP on")
else
clearKillHL()
notify("Killbrick", "ESP off")
end
end)
mkToggle(espT, "Button ESP", 178, "btnESP", function(v)
if v then
applyBtnHL()
notify("Button", "ESP on")
else
clearBtnHL()
notify("Button", "ESP off")
end
end)
mkToggle(espT, "Invisible Wall ESP", 207, "wallESP", function(v)
if v then
applyWallHL()
notify("Wall", "ESP on")
else
clearWallHL()
notify("Wall", "ESP off")
end
end)
mkSection(espT, "Lighting", 231)
mkToggle(espT, "Fullbright", 252, "fullbright")
-- Custom ESP (Typing ESP) — v9: works on invisible parts, overrides other ESPs
mkSection(espT, "Typing ESP (overrides all)", 278)
mkLabel(espT, "Type name → overrides other ESPs!", 299)
local customEspTb = Instance.new("TextBox")
customEspTb.Size = UDim2.new(1, -16, 0, 24)
customEspTb.Position = UDim2.new(0, 8, 0, 318)
customEspTb.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
customEspTb.BorderSizePixel = 0
customEspTb.PlaceholderText = "e.g. KillBrick, lava, Button..."
customEspTb.PlaceholderColor3 = Color3.fromRGB(80, 80, 90)
customEspTb.Text = ""
customEspTb.TextColor3 = Color3.fromRGB(230, 230, 240)
customEspTb.Font = Enum.Font.Code
customEspTb.TextSize = 11
customEspTb.ClearTextOnFocus = false
customEspTb.Parent = espT
local customEspOn = Instance.new("TextButton")
customEspOn.Size = UDim2.new(0, 90, 0, 24)
customEspOn.Position = UDim2.new(0, 8, 0, 348)
customEspOn.BackgroundColor3 = Color3.fromRGB(0, 170, 80)
customEspOn.BorderSizePixel = 0
customEspOn.Text = "Highlight On"
customEspOn.TextColor3 = Color3.new(1, 1, 1)
customEspOn.Font = Enum.Font.GothamBold
customEspOn.TextSize = 10
customEspOn.Parent = espT
local customEspOff = Instance.new("TextButton")
customEspOff.Size = UDim2.new(0, 90, 0, 24)
customEspOff.Position = UDim2.new(0, 106, 0, 348)
customEspOff.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
customEspOff.BorderSizePixel = 0
customEspOff.Text = "Highlight Off"
customEspOff.TextColor3 = Color3.new(1, 1, 1)
customEspOff.Font = Enum.Font.GothamBold
customEspOff.TextSize = 10
customEspOff.Parent = espT
local function clearCustomESP()
for _, o in pairs(customHlStorage) do
if type(o) == "table" then
pcall(function()
if o.hl and o.hl.Parent then
o.hl:Destroy()
end
-- v9: only restore transparency if the part is still alive
-- and wasn't re-claimed by another ESP
if o.wasInvis and o.part and o.part.Parent then
if not trollParts[o.part] then
o.part.Transparency = o.origT
end
end
end)
else
pcall(function()
if o.Parent then o:Destroy() end
end)
end
end
customHlStorage = {}
-- v9: clear ownership tracking
for part in pairs(customEspParts) do
customEspParts[part] = nil
end
end
-- v9: returns count of highlighted parts
local function applyCustomESP()
clearCustomESP()
local search = customEspTb.Text
if not search or search == "" then return 0 end
search = search:lower()
local col = Color3.fromRGB(255, 0, 255)
local cnt = 0
pcall(function()
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and v ~= workspace.Terrain then
local c = p.Character
if not (c and v:IsDescendantOf(c)) then
if v.Name:lower():find(search) then
-- v9: REMOVE other ESP highlights on this part (override!)
removeOtherHLForPart(v)
local wasInvis = v.Transparency >= 0.95
local origT = v.Transparency
-- v9: make invisible parts MUCH more visible
if wasInvis then
v.Transparency = 0.25
end
local h = Instance.new("Highlight")
h.FillColor = col
h.OutlineColor = col
h.FillTransparency = 0.25
h.OutlineTransparency = 0
h.Parent = v
table.insert(customHlStorage, {
hl = h, part = v,
wasInvis = wasInvis,
origT = origT
})
-- v9: mark this part as owned by Typing ESP
customEspParts[v] = true
cnt = cnt + 1
end
end
end
end
end)
notify("Typing ESP",
"Found " .. cnt .. " parts (overrides others)")
return cnt
end
customEspOn.MouseButton1Click:Connect(function()
cespActive = true
applyCustomESP()
end)
customEspOff.MouseButton1Click:Connect(function()
cespActive = false
clearCustomESP()
notify("Typing ESP", "Cleared + restored other ESPs")
end)
-- v9: slow refresh loop for typing ESP (60s, use REVEAL ALL for instant)
spawn(function()
while gui and gui.Parent do
wait(60)
if cespActive and customEspTb.Text
and customEspTb.Text ~= "" then
applyCustomESP()
end
end
end)
-- ========== TOOLS TAB ==========
local toolsT = tabFrames[2]
mkSection(toolsT, "Movement", 5)
mkBtn(toolsT, "Speed Boost (50)", 26,
Color3.fromRGB(0, 130, 50), function()
local h = gH()
if h then h.WalkSpeed = 50; custSpd = 50 end
notify("Speed", "50")
end)
mkBtn(toolsT, "Super Speed (100)", 53,
Color3.fromRGB(0, 130, 50), function()
local h = gH()
if h then h.WalkSpeed = 100; custSpd = 100 end
notify("Speed", "100")
end)
mkBtn(toolsT, "Jump Boost (100)", 80,
Color3.fromRGB(0, 80, 180), function()
local h = gH()
if h then h.JumpPower = 100; custJmp = 100 end
notify("Jump", "100")
end)
mkBtn(toolsT, "Reset Speed/Jump", 107,
Color3.fromRGB(120, 50, 50), function()
local h = gH()
if h then
h.WalkSpeed = 16; h.JumpPower = 50
end
custSpd = nil; custJmp = nil
notify("Reset", "Normal")
end)
mkSection(toolsT, "Abilities", 136)
mkToggle(toolsT, "Noclip (walk thru walls)", 157, "noclip")
mkToggle(toolsT, "Fly (WASD+Space/Shift)", 184, "flying",
function(v)
if v then
local hrp = gR()
local hm = gH()
if not hrp or not hm then return end
hm.PlatformStand = true
flyBV = Instance.new("BodyVelocity")
flyBV.MaxForce = Vector3.new(
math.huge, math.huge, math.huge)
flyBV.Velocity = Vector3.new(0, 0, 0)
flyBV.Parent = hrp
flyBG = Instance.new("BodyGyro")
flyBG.MaxTorque = Vector3.new(
math.huge, math.huge, math.huge)
flyBG.P = 9e4
flyBG.Parent = hrp
else
local hm = gH()
if hm then
pcall(function()
hm.PlatformStand = false
end)
end
if flyBV then
flyBV:Destroy(); flyBV = nil
end
if flyBG then
flyBG:Destroy(); flyBG = nil
end
fk = {w=false,a=false,s=false,
d=false,sp=false,sh=false}
end
end)
mkToggle(toolsT, "Infinite Jump", 211, "infJump")
mkToggle(toolsT, "Click Teleport", 238, "clickTP")
mkSection(toolsT, "Hacking", 268)
mkBtn(toolsT, "Activate Nearest Button", 289,
Color3.fromRGB(180, 100, 0), function()
local r = gR()
if not r then
notify("Button", "No char"); return
end
local near = nil
local nd = math.huge
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and isBtn(v) then
local d = (r.Position - v.Position).Magnitude
if d < nd then nd = d; near = v end
end
end
if near then
r.CFrame = near.CFrame + Vector3.new(0, 5, 0)
wait(0.3)
r.CFrame = near.CFrame
notify("Button", "Activated: " .. near.Name)
else
notify("Button", "None nearby")
end
end)
mkBtn(toolsT, "Activate ALL Buttons", 316,
Color3.fromRGB(180, 100, 0), function()
local r = gR()
if not r then
notify("Button", "No char"); return
end
local cnt = 0
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and isBtn(v) then
r.CFrame = v.CFrame
wait(0.15)
cnt = cnt + 1
end
end
notify("Buttons", "Activated " .. cnt)
end)
mkBtn(toolsT, "TP to Hovered Part", 343,
Color3.fromRGB(80, 0, 150), function()
local t = ms.Target
if t and t:IsA("BasePart") then
local r = gR()
if r then
r.CFrame = t.CFrame + Vector3.new(0, 5, 0)
end
notify("TP", "Teleported to " .. t.Name)
else
notify("TP", "Nothing under cursor")
end
end)
mkBtn(toolsT, "God Mode (HP Boost)", 370,
Color3.fromRGB(150, 0, 150), function()
local h = gH()
if h then
h.MaxHealth = 999999; h.Health = 999999
end
notify("God", "999999 HP")
end)
mkSection(toolsT, "Gravity", 399)
mkBtn(toolsT, "Low Gravity (50)", 420,
Color3.fromRGB(60, 60, 100), function()
workspace.Gravity = 50; notify("Gravity", "50")
end)
mkBtn(toolsT, "Moon Gravity (20)", 447,
Color3.fromRGB(60, 60, 100), function()
workspace.Gravity = 20; notify("Gravity", "20")
end)
mkBtn(toolsT, "Normal Gravity (196)", 474,
Color3.fromRGB(60, 60, 100), function()
workspace.Gravity = 196; notify("Gravity", "196")
end)
-- ═══════════════════════════════════════════════════════════════
-- EDIT TAB — Select part → floating property panel opens
-- Uses PaintObject remote = PERMANENT server saves
-- No spy needed, no built-in editor needed
-- ═══════════════════════════════════════════════════════════════
local editT = tabFrames[3]
-- Selection highlight
local selHL = Instance.new("SelectionBox")
selHL.Color3 = Color3.fromRGB(0, 255, 100)
selHL.LineThickness = 0.06
selHL.Transparency = 0
selHL.Visible = false
selHL.Adornee = nil
selHL.Parent = gui
mkSection(editT, "Select a Part to Edit", 5)
local selBtn = Instance.new("TextButton")
selBtn.Size = UDim2.new(0, 180, 0, 26)
selBtn.Position = UDim2.new(0, 8, 0, 26)
selBtn.BackgroundColor3 = Color3.fromRGB(0, 160, 80)
selBtn.BorderSizePixel = 0
selBtn.Text = "Click to Select Part"
selBtn.TextColor3 = Color3.new(1, 1, 1)
selBtn.Font = Enum.Font.GothamBold
selBtn.TextSize = 11
selBtn.Parent = editT
local deselBtn = Instance.new("TextButton")
deselBtn.Size = UDim2.new(0, 100, 0, 26)
deselBtn.Position = UDim2.new(0, 196, 0, 26)
deselBtn.BackgroundColor3 = Color3.fromRGB(160, 50, 50)
deselBtn.BorderSizePixel = 0
deselBtn.Text = "Deselect"
deselBtn.TextColor3 = Color3.new(1, 1, 1)
deselBtn.Font = Enum.Font.GothamBold
deselBtn.TextSize = 11
deselBtn.Parent = editT
selBtn.MouseButton1Click:Connect(function()
selectMode = not selectMode
if selectMode then
selBtn.Text = ">> Click a part now <<"
selBtn.BackgroundColor3 =
Color3.fromRGB(200, 180, 0)
notify("Select", "Click any part in game")
else
selBtn.Text = "Click to Select Part"
selBtn.BackgroundColor3 =
Color3.fromRGB(0, 160, 80)
end
end)
-- PaintObject status label in edit tab
local paintLbl = Instance.new("TextLabel")
paintLbl.Size = UDim2.new(1, -16, 0, 28)
paintLbl.Position = UDim2.new(0, 8, 0, 56)
paintLbl.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
paintLbl.BorderSizePixel = 0
paintLbl.TextColor3 = Color3.fromRGB(0, 255, 100)
paintLbl.Font = Enum.Font.GothamBold
paintLbl.TextSize = 9
paintLbl.TextXAlignment = Enum.TextXAlignment.Left
paintLbl.Text = PaintObject and "PaintObject: CONNECTED - PERMANENT" or "PaintObject: MISSING - local only!"
paintLbl.Parent = editT
if PaintObject then
paintLbl.TextColor3 = Color3.fromRGB(0, 255, 100)
paintLbl.BackgroundColor3 = Color3.fromRGB(0, 35, 25)
else
paintLbl.TextColor3 = Color3.fromRGB(255, 80, 80)
paintLbl.BackgroundColor3 = Color3.fromRGB(45, 25, 15)
end
mkLabel(editT, "Step 1: Click Select, then click any part", 88)
mkLabel(editT, "Step 2: Type value in panel, press Enter", 104)
mkLabel(editT, "Changes save to server = PERMANENT!", 120)
mkLabel(editT, "Stays even after leaving + unloading", 136)
-- ═══════════════════════════════════════════════════════════════
-- FLOATING PROPERTY PANEL — opens when you select a part
-- ═══════════════════════════════════════════════════════════════
local propPanel = Instance.new("Frame")
propPanel.Name = "PropPanel"
propPanel.Size = UDim2.new(0, 260, 0, 380)
propPanel.Position = UDim2.new(0.5, 120, 0.5, -190)
propPanel.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
propPanel.BorderSizePixel = 0
propPanel.Visible = false
propPanel.Active = true
propPanel.ZIndex = 50
propPanel.Parent = gui
-- prop panel drag
propPanel.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then
propDragging = true
propDragStart = inp.Position
propStartPos = propPanel.Position
end
end)
propPanel.InputEnded:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then
propDragging = false
end
end)
-- title bar
local ppTitleBar = Instance.new("Frame")
ppTitleBar.Size = UDim2.new(1, 0, 0, 28)
ppTitleBar.BackgroundColor3 = Color3.fromRGB(0, 200, 255)
ppTitleBar.BorderSizePixel = 0
ppTitleBar.ZIndex = 51
ppTitleBar.Parent = propPanel
local ppTitle = Instance.new("TextLabel")
ppTitle.Size = UDim2.new(1, -36, 1, 0)
ppTitle.Position = UDim2.new(0, 8, 0, 0)
ppTitle.BackgroundTransparency = 1
ppTitle.Text = "PROPERTIES"
ppTitle.TextColor3 = Color3.new(0, 0, 0)
ppTitle.Font = Enum.Font.GothamBold
ppTitle.TextSize = 12
ppTitle.TextXAlignment = Enum.TextXAlignment.Left
ppTitle.ZIndex = 52
ppTitle.Parent = ppTitleBar
local ppClose = Instance.new("TextButton")
ppClose.Size = UDim2.new(0, 28, 0, 28)
ppClose.Position = UDim2.new(1, -28, 0, 0)
ppClose.BackgroundColor3 = Color3.fromRGB(220, 40, 40)
ppClose.BorderSizePixel = 0
ppClose.Text = "X"
ppClose.TextColor3 = Color3.new(1, 1, 1)
ppClose.Font = Enum.Font.GothamBold
ppClose.TextSize = 12
ppClose.ZIndex = 52
ppClose.Parent = ppTitleBar
-- info row (part type + name)
local ppInfo = Instance.new("TextLabel")
ppInfo.Size = UDim2.new(1, -8, 0, 28)
ppInfo.Position = UDim2.new(0, 4, 0, 30)
ppInfo.BackgroundColor3 = Color3.fromRGB(25, 35, 40)
ppInfo.BorderSizePixel = 0
ppInfo.TextColor3 = Color3.fromRGB(0, 255, 170)
ppInfo.Font = Enum.Font.Code
ppInfo.TextSize = 9
ppInfo.TextXAlignment = Enum.TextXAlignment.Left
ppInfo.Text = "No part selected"
ppInfo.ZIndex = 51
ppInfo.Parent = propPanel
-- PaintObject status row in property panel
local ppSync = Instance.new("TextLabel")
ppSync.Size = UDim2.new(1, -8, 0, 18)
ppSync.Position = UDim2.new(0, 4, 0, 60)
ppSync.BorderSizePixel = 0
ppSync.Font = Enum.Font.Code
ppSync.TextSize = 8
ppSync.TextXAlignment = Enum.TextXAlignment.Left
ppSync.ZIndex = 51
ppSync.Parent = propPanel
if PaintObject then
ppSync.Text = "PaintObject: CONNECTED - All changes are PERMANENT!"
ppSync.TextColor3 = Color3.fromRGB(0, 255, 100)
ppSync.BackgroundColor3 = Color3.fromRGB(0, 35, 25)
else
ppSync.Text = "PaintObject: MISSING - Changes will be local only!"
ppSync.TextColor3 = Color3.fromRGB(255, 80, 80)
ppSync.BackgroundColor3 = Color3.fromRGB(45, 25, 15)
end
-- Property input rows — pre-created at fixed Y positions
-- Each row: label (80w) + textbox (168w)
-- Solara safe: no UIListLayout, all fixed positions
local propY = 82
local propH = 26
local propGap = 3
-- Transparency
local ppTransLbl = Instance.new("TextLabel")
ppTransLbl.Size = UDim2.new(0, 80, 0, propH)
ppTransLbl.Position = UDim2.new(0, 4, 0, propY)
ppTransLbl.BackgroundTransparency = 1
ppTransLbl.Text = "Transparency"
ppTransLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppTransLbl.Font = Enum.Font.GothamBold
ppTransLbl.TextSize = 9
ppTransLbl.TextXAlignment = Enum.TextXAlignment.Left
ppTransLbl.ZIndex = 51
ppTransLbl.Parent = propPanel
local ppTransTb = Instance.new("TextBox")
ppTransTb.Size = UDim2.new(0, 168, 0, propH)
ppTransTb.Position = UDim2.new(0, 88, 0, propY)
ppTransTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppTransTb.BorderSizePixel = 0
ppTransTb.Text = "0"
ppTransTb.PlaceholderText = "0"
ppTransTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppTransTb.TextColor3 = Color3.fromRGB(0, 255, 170)
ppTransTb.Font = Enum.Font.Code
ppTransTb.TextSize = 11
ppTransTb.ClearTextOnFocus = false
ppTransTb.ZIndex = 52
ppTransTb.Parent = propPanel
propY = propY + propH + propGap
-- Reflectance
local ppReflLbl = Instance.new("TextLabel")
ppReflLbl.Size = UDim2.new(0, 80, 0, propH)
ppReflLbl.Position = UDim2.new(0, 4, 0, propY)
ppReflLbl.BackgroundTransparency = 1
ppReflLbl.Text = "Reflectance"
ppReflLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppReflLbl.Font = Enum.Font.GothamBold
ppReflLbl.TextSize = 9
ppReflLbl.TextXAlignment = Enum.TextXAlignment.Left
ppReflLbl.ZIndex = 51
ppReflLbl.Parent = propPanel
local ppReflTb = Instance.new("TextBox")
ppReflTb.Size = UDim2.new(0, 168, 0, propH)
ppReflTb.Position = UDim2.new(0, 88, 0, propY)
ppReflTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppReflTb.BorderSizePixel = 0
ppReflTb.Text = "0"
ppReflTb.PlaceholderText = "0"
ppReflTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppReflTb.TextColor3 = Color3.fromRGB(0, 255, 170)
ppReflTb.Font = Enum.Font.Code
ppReflTb.TextSize = 11
ppReflTb.ClearTextOnFocus = false
ppReflTb.ZIndex = 52
ppReflTb.Parent = propPanel
propY = propY + propH + propGap
-- Material
local ppMatLbl = Instance.new("TextLabel")
ppMatLbl.Size = UDim2.new(0, 80, 0, propH)
ppMatLbl.Position = UDim2.new(0, 4, 0, propY)
ppMatLbl.BackgroundTransparency = 1
ppMatLbl.Text = "Material"
ppMatLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppMatLbl.Font = Enum.Font.GothamBold
ppMatLbl.TextSize = 9
ppMatLbl.TextXAlignment = Enum.TextXAlignment.Left
ppMatLbl.ZIndex = 51
ppMatLbl.Parent = propPanel
local ppMatTb = Instance.new("TextBox")
ppMatTb.Size = UDim2.new(0, 168, 0, propH)
ppMatTb.Position = UDim2.new(0, 88, 0, propY)
ppMatTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppMatTb.BorderSizePixel = 0
ppMatTb.Text = "Plastic"
ppMatTb.PlaceholderText = "Neon, Glass, Metal..."
ppMatTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppMatTb.TextColor3 = Color3.fromRGB(0, 200, 255)
ppMatTb.Font = Enum.Font.Code
ppMatTb.TextSize = 11
ppMatTb.ClearTextOnFocus = false
ppMatTb.ZIndex = 52
ppMatTb.Parent = propPanel
propY = propY + propH + propGap
-- Color (hex)
local ppColLbl = Instance.new("TextLabel")
ppColLbl.Size = UDim2.new(0, 80, 0, propH)
ppColLbl.Position = UDim2.new(0, 4, 0, propY)
ppColLbl.BackgroundTransparency = 1
ppColLbl.Text = "Color"
ppColLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppColLbl.Font = Enum.Font.GothamBold
ppColLbl.TextSize = 9
ppColLbl.TextXAlignment = Enum.TextXAlignment.Left
ppColLbl.ZIndex = 51
ppColLbl.Parent = propPanel
local ppColTb = Instance.new("TextBox")
ppColTb.Size = UDim2.new(0, 148, 0, propH)
ppColTb.Position = UDim2.new(0, 88, 0, propY)
ppColTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppColTb.BorderSizePixel = 0
ppColTb.Text = "FFFFFF"
ppColTb.PlaceholderText = "RRGGBB"
ppColTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppColTb.TextColor3 = Color3.new(1, 1, 1)
ppColTb.Font = Enum.Font.Code
ppColTb.TextSize = 11
ppColTb.ClearTextOnFocus = false
ppColTb.ZIndex = 52
ppColTb.Parent = propPanel
-- color swatch
local ppSwatch = Instance.new("Frame")
ppSwatch.Size = UDim2.new(0, 16, 0, propH)
ppSwatch.Position = UDim2.new(1, -20, 0, propY)
ppSwatch.BackgroundColor3 = Color3.new(1, 1, 1)
ppSwatch.BorderSizePixel = 0
ppSwatch.ZIndex = 52
ppSwatch.Parent = propPanel
propY = propY + propH + propGap
-- CanCollide toggle
local ppCCFrame = Instance.new("Frame")
ppCCFrame.Size = UDim2.new(1, -8, 0, propH)
ppCCFrame.Position = UDim2.new(0, 4, 0, propY)
ppCCFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
ppCCFrame.BorderSizePixel = 0
ppCCFrame.ZIndex = 51
ppCCFrame.Parent = propPanel
local ppCCLbl = Instance.new("TextLabel")
ppCCLbl.Size = UDim2.new(0, 80, 1, 0)
ppCCLbl.Position = UDim2.new(0, 4, 0, 0)
ppCCLbl.BackgroundTransparency = 1
ppCCLbl.Text = "CanCollide"
ppCCLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppCCLbl.Font = Enum.Font.GothamBold
ppCCLbl.TextSize = 9
ppCCLbl.TextXAlignment = Enum.TextXAlignment.Left
ppCCLbl.ZIndex = 52
ppCCLbl.Parent = ppCCFrame
local ppCCBtn = Instance.new("TextButton")
ppCCBtn.Size = UDim2.new(0, 40, 0, 18)
ppCCBtn.Position = UDim2.new(0, 88, 0, 4)
ppCCBtn.BackgroundColor3 = Color3.fromRGB(0, 70, 45)
ppCCBtn.BorderSizePixel = 0
ppCCBtn.Text = "ON"
ppCCBtn.TextColor3 = Color3.fromRGB(0, 255, 100)
ppCCBtn.Font = Enum.Font.GothamBold
ppCCBtn.TextSize = 9
ppCCBtn.ZIndex = 52
ppCCBtn.Parent = ppCCFrame
propY = propY + propH + propGap
-- Anchored toggle
local ppAnFrame = Instance.new("Frame")
ppAnFrame.Size = UDim2.new(1, -8, 0, propH)
ppAnFrame.Position = UDim2.new(0, 4, 0, propY)
ppAnFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
ppAnFrame.BorderSizePixel = 0
ppAnFrame.ZIndex = 51
ppAnFrame.Parent = propPanel
local ppAnLbl = Instance.new("TextLabel")
ppAnLbl.Size = UDim2.new(0, 80, 1, 0)
ppAnLbl.Position = UDim2.new(0, 4, 0, 0)
ppAnLbl.BackgroundTransparency = 1
ppAnLbl.Text = "Anchored"
ppAnLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppAnLbl.Font = Enum.Font.GothamBold
ppAnLbl.TextSize = 9
ppAnLbl.TextXAlignment = Enum.TextXAlignment.Left
ppAnLbl.ZIndex = 52
ppAnLbl.Parent = ppAnFrame
local ppAnBtn = Instance.new("TextButton")
ppAnBtn.Size = UDim2.new(0, 40, 0, 18)
ppAnBtn.Position = UDim2.new(0, 88, 0, 4)
ppAnBtn.BackgroundColor3 = Color3.fromRGB(0, 70, 45)
ppAnBtn.BorderSizePixel = 0
ppAnBtn.Text = "ON"
ppAnBtn.TextColor3 = Color3.fromRGB(0, 255, 100)
ppAnBtn.Font = Enum.Font.GothamBold
ppAnBtn.TextSize = 9
ppAnBtn.ZIndex = 52
ppAnBtn.Parent = ppAnFrame
propY = propY + propH + propGap
-- Size X
local ppSzXLbl = Instance.new("TextLabel")
ppSzXLbl.Size = UDim2.new(0, 80, 0, propH)
ppSzXLbl.Position = UDim2.new(0, 4, 0, propY)
ppSzXLbl.BackgroundTransparency = 1
ppSzXLbl.Text = "SizeX"
ppSzXLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppSzXLbl.Font = Enum.Font.GothamBold
ppSzXLbl.TextSize = 9
ppSzXLbl.TextXAlignment = Enum.TextXAlignment.Left
ppSzXLbl.ZIndex = 51
ppSzXLbl.Parent = propPanel
local ppSzXTb = Instance.new("TextBox")
ppSzXTb.Size = UDim2.new(0, 168, 0, propH)
ppSzXTb.Position = UDim2.new(0, 88, 0, propY)
ppSzXTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppSzXTb.BorderSizePixel = 0
ppSzXTb.Text = "4"
ppSzXTb.PlaceholderText = "0"
ppSzXTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppSzXTb.TextColor3 = Color3.fromRGB(255, 200, 50)
ppSzXTb.Font = Enum.Font.Code
ppSzXTb.TextSize = 11
ppSzXTb.ClearTextOnFocus = false
ppSzXTb.ZIndex = 52
ppSzXTb.Parent = propPanel
propY = propY + propH + propGap
-- Size Y
local ppSzYLbl = Instance.new("TextLabel")
ppSzYLbl.Size = UDim2.new(0, 80, 0, propH)
ppSzYLbl.Position = UDim2.new(0, 4, 0, propY)
ppSzYLbl.BackgroundTransparency = 1
ppSzYLbl.Text = "SizeY"
ppSzYLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppSzYLbl.Font = Enum.Font.GothamBold
ppSzYLbl.TextSize = 9
ppSzYLbl.TextXAlignment = Enum.TextXAlignment.Left
ppSzYLbl.ZIndex = 51
ppSzYLbl.Parent = propPanel
local ppSzYTb = Instance.new("TextBox")
ppSzYTb.Size = UDim2.new(0, 168, 0, propH)
ppSzYTb.Position = UDim2.new(0, 88, 0, propY)
ppSzYTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppSzYTb.BorderSizePixel = 0
ppSzYTb.Text = "4"
ppSzYTb.PlaceholderText = "0"
ppSzYTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppSzYTb.TextColor3 = Color3.fromRGB(255, 200, 50)
ppSzYTb.Font = Enum.Font.Code
ppSzYTb.TextSize = 11
ppSzYTb.ClearTextOnFocus = false
ppSzYTb.ZIndex = 52
ppSzYTb.Parent = propPanel
propY = propY + propH + propGap
-- Size Z
local ppSzZLbl = Instance.new("TextLabel")
ppSzZLbl.Size = UDim2.new(0, 80, 0, propH)
ppSzZLbl.Position = UDim2.new(0, 4, 0, propY)
ppSzZLbl.BackgroundTransparency = 1
ppSzZLbl.Text = "SizeZ"
ppSzZLbl.TextColor3 = Color3.fromRGB(180, 180, 190)
ppSzZLbl.Font = Enum.Font.GothamBold
ppSzZLbl.TextSize = 9
ppSzZLbl.TextXAlignment = Enum.TextXAlignment.Left
ppSzZLbl.ZIndex = 51
ppSzZLbl.Parent = propPanel
local ppSzZTb = Instance.new("TextBox")
ppSzZTb.Size = UDim2.new(0, 168, 0, propH)
ppSzZTb.Position = UDim2.new(0, 88, 0, propY)
ppSzZTb.BackgroundColor3 = Color3.fromRGB(28, 28, 42)
ppSzZTb.BorderSizePixel = 0
ppSzZTb.Text = "4"
ppSzZTb.PlaceholderText = "0"
ppSzZTb.PlaceholderColor3 = Color3.fromRGB(60, 60, 80)
ppSzZTb.TextColor3 = Color3.fromRGB(255, 200, 50)
ppSzZTb.Font = Enum.Font.Code
ppSzZTb.TextSize = 11
ppSzZTb.ClearTextOnFocus = false
ppSzZTb.ZIndex = 52
ppSzZTb.Parent = propPanel
-- ═══════════════════════════════════════════════════════════════
-- PROPERTY PANEL — open/close + populate
-- ═══════════════════════════════════════════════════════════════
local function closePropPanel()
selectedPart = nil
selectMode = false
propOpen = false
selHL.Adornee = nil
selHL.Visible = false
propPanel.Visible = false
selBtn.Text = "Click to Select Part"
selBtn.BackgroundColor3 = Color3.fromRGB(0, 160, 80)
notify("Edit", "Panel closed")
end
local function openPropPanel(part)
if not part or not part.Parent then return end
selectedPart = part
propOpen = true
-- populate info
ppTitle.Text = "PROPERTIES - " .. part.ClassName
ppInfo.Text = part.Name .. " | " .. part.ClassName
-- populate current values
pcall(function()
ppTransTb.Text = string.format("%.2f", part.Transparency)
end)
pcall(function()
ppReflTb.Text = string.format("%.2f", part.Reflectance)
end)
pcall(function()
ppMatTb.Text = part.Material.Name
end)
pcall(function()
local hex = string.format("%02X%02X%02X",
math.floor(part.Color.R * 255),
math.floor(part.Color.G * 255),
math.floor(part.Color.B * 255))
ppColTb.Text = hex
ppColTb.TextColor3 = part.Color
ppSwatch.BackgroundColor3 = part.Color
end)
-- CanCollide
local cc = part.CanCollide
ppCCBtn.Text = cc and "ON" or "OFF"
ppCCBtn.BackgroundColor3 = cc
and Color3.fromRGB(0, 70, 45)
or Color3.fromRGB(70, 18, 18)
ppCCBtn.TextColor3 = cc
and Color3.fromRGB(0, 255, 100)
or Color3.fromRGB(255, 80, 80)
-- Anchored
local an = part.Anchored
ppAnBtn.Text = an and "ON" or "OFF"
ppAnBtn.BackgroundColor3 = an
and Color3.fromRGB(0, 70, 45)
or Color3.fromRGB(70, 18, 18)
ppAnBtn.TextColor3 = an
and Color3.fromRGB(0, 255, 100)
or Color3.fromRGB(255, 80, 80)
pcall(function()
ppSzXTb.Text = string.format("%.1f", part.Size.X)
end)
pcall(function()
ppSzYTb.Text = string.format("%.1f", part.Size.Y)
end)
pcall(function()
ppSzZTb.Text = string.format("%.1f", part.Size.Z)
end)
-- show panel + highlight
propPanel.Visible = true
selHL.Adornee = part
selHL.Visible = true
notify("Selected", part.Name)
end
-- ═══════════════════════════════════════════════════════════════
-- PROPERTY INPUT HANDLERS — FocusLost → applyProperty
-- Each applies locally + paints to server via PaintObject = PERMANENT
-- ═══════════════════════════════════════════════════════════════
-- Transparency
ppTransTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local num = tonumber(ppTransTb.Text)
if num ~= nil then
ppTransTb.Text = tostring(num)
local synced = applyProperty(selectedPart, "Transparency", num)
if synced then
notify("SET", "Transparency = " .. tostring(num) .. " (SAVED!)")
else
notify("SET", "Transparency = " .. tostring(num) .. " (local)")
end
else
pcall(function()
ppTransTb.Text = string.format("%.2f", selectedPart.Transparency)
end)
end
end)
-- Reflectance
ppReflTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local num = tonumber(ppReflTb.Text)
if num ~= nil then
ppReflTb.Text = tostring(num)
local synced = applyProperty(selectedPart, "Reflectance", num)
if synced then
notify("SET", "Reflectance = " .. tostring(num) .. " (SAVED!)")
else
notify("SET", "Reflectance = " .. tostring(num) .. " (local)")
end
else
pcall(function()
ppReflTb.Text = string.format("%.2f", selectedPart.Reflectance)
end)
end
end)
-- Material
ppMatTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local val = ppMatTb.Text
if val and val ~= "" then
local m = Enum.Material[val]
if m then
local synced = applyProperty(selectedPart, "Material", val)
if synced then
notify("SET", "Material = " .. val .. " (SAVED!)")
else
notify("SET", "Material = " .. val .. " (local)")
end
else
notify("ERROR", "Unknown material: " .. val)
pcall(function()
ppMatTb.Text = selectedPart.Material.Name
end)
end
end
end)
-- Color (hex)
ppColTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local hex = ppColTb.Text:gsub("#", "")
if #hex == 6 then
local r = tonumber(hex:sub(1, 2), 16) or 255
local g = tonumber(hex:sub(3, 4), 16) or 255
local b = tonumber(hex:sub(5, 6), 16) or 255
local col = Color3.fromRGB(r, g, b)
ppColTb.TextColor3 = col
ppSwatch.BackgroundColor3 = col
local synced = applyProperty(selectedPart, "Color", col)
if synced then
notify("SET", "Color = #" .. hex .. " (SAVED!)")
else
notify("SET", "Color = #" .. hex .. " (local)")
end
else
notify("ERROR", "Use RRGGBB format")
pcall(function()
local h = string.format("%02X%02X%02X",
math.floor(selectedPart.Color.R * 255),
math.floor(selectedPart.Color.G * 255),
math.floor(selectedPart.Color.B * 255))
ppColTb.Text = h
ppColTb.TextColor3 = selectedPart.Color
ppSwatch.BackgroundColor3 = selectedPart.Color
end)
end
end)
-- CanCollide toggle
ppCCBtn.MouseButton1Click:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local newVal = selectedPart.CanCollide == false
ppCCBtn.Text = newVal and "ON" or "OFF"
ppCCBtn.BackgroundColor3 = newVal
and Color3.fromRGB(0, 70, 45)
or Color3.fromRGB(70, 18, 18)
ppCCBtn.TextColor3 = newVal
and Color3.fromRGB(0, 255, 100)
or Color3.fromRGB(255, 80, 80)
applyProperty(selectedPart, "CanCollide", newVal)
notify("SET", "CanCollide = " .. tostring(newVal))
end)
-- Anchored toggle
ppAnBtn.MouseButton1Click:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local newVal = selectedPart.Anchored == false
ppAnBtn.Text = newVal and "ON" or "OFF"
ppAnBtn.BackgroundColor3 = newVal
and Color3.fromRGB(0, 70, 45)
or Color3.fromRGB(70, 18, 18)
ppAnBtn.TextColor3 = newVal
and Color3.fromRGB(0, 255, 100)
or Color3.fromRGB(255, 80, 80)
applyProperty(selectedPart, "Anchored", newVal)
notify("SET", "Anchored = " .. tostring(newVal))
end)
-- SizeX
ppSzXTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local num = tonumber(ppSzXTb.Text)
if num ~= nil then
ppSzXTb.Text = tostring(num)
applyProperty(selectedPart, "SizeX", num)
notify("SET", "SizeX = " .. tostring(num))
end
end)
-- SizeY
ppSzYTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local num = tonumber(ppSzYTb.Text)
if num ~= nil then
ppSzYTb.Text = tostring(num)
applyProperty(selectedPart, "SizeY", num)
notify("SET", "SizeY = " .. tostring(num))
end
end)
-- SizeZ
ppSzZTb.FocusLost:Connect(function()
if not selectedPart or not selectedPart.Parent then return end
local num = tonumber(ppSzZTb.Text)
if num ~= nil then
ppSzZTb.Text = tostring(num)
applyProperty(selectedPart, "SizeZ", num)
notify("SET", "SizeZ = " .. tostring(num))
end
end)
-- Close panel
ppClose.MouseButton1Click:Connect(closePropPanel)
-- Deselect button
deselBtn.MouseButton1Click:Connect(function()
closePropPanel()
end)
-- Click to select parts
ms.Button1Down:Connect(function()
if not selectMode then return end
local t = ms.Target
if t and t:IsA("BasePart")
and t ~= workspace.Terrain then
local c = p.Character
if not (c and t:IsDescendantOf(c)) then
selectMode = false
selBtn.Text = "Click to Select Part"
selBtn.BackgroundColor3 =
Color3.fromRGB(0, 160, 80)
openPropPanel(t)
end
end
end)
-- Keep highlight on selected part
spawn(function()
while gui and gui.Parent do
wait(1)
if selectedPart and selectedPart.Parent then
selHL.Adornee = selectedPart
selHL.Visible = true
else
selHL.Visible = false
selHL.Adornee = nil
if selectedPart
and not selectedPart.Parent then
selectedPart = nil
propOpen = false
propPanel.Visible = false
end
end
end
end)
-- ========== MISC TAB ==========
local miscT = tabFrames[4]
mkSection(miscT, "Protection", 5)
mkToggle(miscT, "Anti AFK", 26, "antiAFK")
mkSection(miscT, "Camera", 55)
mkBtn(miscT, "FOV 70 (Normal)", 76,
Color3.fromRGB(50, 50, 80), function()
cam.FieldOfView = 70; notify("FOV", "70")
end)
mkBtn(miscT, "FOV 120 (Wide)", 103,
Color3.fromRGB(50, 50, 80), function()
cam.FieldOfView = 120; notify("FOV", "120")
end)
mkSection(miscT, "Character", 132)
mkBtn(miscT, "Reset Character", 153,
Color3.fromRGB(150, 30, 30), function()
local h = gH()
if h then h.Health = 0 end
end)
mkBtn(miscT, "Suicide", 180,
Color3.fromRGB(150, 30, 30), function()
local h = gH()
if h then h.Health = 0 end
end)
mkSection(miscT, "Reset All", 209)
mkBtn(miscT, "Reset ALL ESP", 230,
Color3.fromRGB(120, 50, 50), function()
T.partESP = false
T.trollESP = false
T.killESP = false
T.btnESP = false
T.wallESP = false
T.fullbright = false
cespActive = false
clearCustomESP()
for _, o in pairs(hlStorage) do
pcall(function()
if o.Parent then o:Destroy() end
end)
end
hlStorage = {}
for pp, d in pairs(trollParts) do
pcall(function()
if pp.Parent then
pp.Color = d.c
pp.Transparency = d.t
pp.CastShadow = d.cs
local t2 = pp:FindFirstChild(
"TouchTransmitter")
if t2 then t2.Enabled = d.tt end
end
end)
end
trollParts = {}
customEspParts = {}
local l = game:GetService("Lighting")
l.Brightness = origLit.B or 1
l.ClockTime = origLit.C or 14.5
l.FogEnd = origLit.FE or 100000
l.FogStart = origLit.FS or 0
l.GlobalShadows = origLit.GS
notify("Reset", "All ESP cleared")
end)
mkBtn(miscT, "Reset ALL Mods", 257,
Color3.fromRGB(120, 50, 50), function()
for k in pairs(T) do T[k] = false end
if flyBV then
flyBV:Destroy(); flyBV = nil
end
if flyBG then
flyBG:Destroy(); flyBG = nil
end
local h = gH()
if h then
h.WalkSpeed = 16
h.JumpPower = 50
pcall(function()
h.PlatformStand = false
end)
end
workspace.Gravity = 196
cam.FieldOfView = 70
custSpd = nil; custJmp = nil
fk = {w=false,a=false,s=false,
d=false,sp=false,sh=false}
for _, o in pairs(hlStorage) do
pcall(function()
if o.Parent then o:Destroy() end
end)
end
hlStorage = {}
cespActive = false
clearCustomESP()
for pp, d in pairs(trollParts) do
pcall(function()
if pp.Parent then
pp.Color = d.c
pp.Transparency = d.t
pp.CastShadow = d.cs
local t2 = pp:FindFirstChild(
"TouchTransmitter")
if t2 then t2.Enabled = d.tt end
end
end)
end
trollParts = {}
customEspParts = {}
local l = game:GetService("Lighting")
l.Brightness = origLit.B or 1
l.ClockTime = origLit.C or 14.5
l.FogEnd = origLit.FE or 100000
l.FogStart = origLit.FS or 0
l.GlobalShadows = origLit.GS
notify("Reset", "Everything reset")
end)
mkSection(miscT, "Info", 286)
mkLabel(miscT, "Fly: WASD + Space/Shift", 307)
mkLabel(miscT, "Click TP: Toggle then click part", 325)
mkLabel(miscT, "Edit: Select part, type value, Enter", 343)
mkLabel(miscT, "Drag title bar to move menu", 361)
mkLabel(miscT, "PaintObject remote = permanent saves", 379)
-- ========== HOVER ESP ==========
local esb = Instance.new("SelectionBox")
esb.Color3 = Color3.fromRGB(0, 170, 255)
esb.LineThickness = 0.04
esb.Transparency = 0
esb.Visible = false
esb.Parent = gui
local ebg = Instance.new("BillboardGui")
ebg.Size = UDim2.new(0, 250, 0, 50)
ebg.StudsOffset = Vector3.new(0, 3, 0)
ebg.AlwaysOnTop = true
ebg.Enabled = false
ebg.Parent = gui
local ebf = Instance.new("Frame")
ebf.Size = UDim2.new(1, 0, 1, 0)
ebf.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
ebf.BackgroundTransparency = 0.3
ebf.BorderSizePixel = 0
ebf.Parent = ebg
local en = Instance.new("TextLabel")
en.Size = UDim2.new(1, -8, 0, 16)
en.Position = UDim2.new(0, 4, 0, 2)
en.BackgroundTransparency = 1
en.TextColor3 = Color3.new(1, 1, 1)
en.Font = Enum.Font.GothamBold
en.TextSize = 11
en.TextXAlignment = Enum.TextXAlignment.Left
en.Parent = ebf
local ei = Instance.new("TextLabel")
ei.Size = UDim2.new(1, -8, 0, 14)
ei.Position = UDim2.new(0, 4, 0, 20)
ei.BackgroundTransparency = 1
ei.TextColor3 = Color3.fromRGB(0, 170, 255)
ei.Font = Enum.Font.Gotham
ei.TextSize = 10
ei.TextXAlignment = Enum.TextXAlignment.Left
ei.Parent = ebf
local ee = Instance.new("TextLabel")
ee.Size = UDim2.new(1, -8, 0, 12)
ee.Position = UDim2.new(0, 4, 0, 35)
ee.BackgroundTransparency = 1
ee.TextColor3 = Color3.fromRGB(130, 130, 140)
ee.Font = Enum.Font.Code
ee.TextSize = 9
ee.TextXAlignment = Enum.TextXAlignment.Left
ee.Parent = ebf
local lastHov = nil
RS.RenderStepped:Connect(function()
local t = ms.Target
local hp = nil
if t and t:IsA("BasePart")
and t ~= workspace.Terrain then
local c = p.Character
if not c or not t:IsDescendantOf(c) then
hp = t
end
end
if hp and T.partESP then
esb.Adornee = hp
esb.Visible = true
ebg.Adornee = hp
ebg.Enabled = true
if hp ~= lastHov then
lastHov = hp
en.Text = hp.Name
-- v9: show if Typing ESP owns this part
if customEspParts[hp] then
en.TextColor3 =
Color3.fromRGB(255, 100, 255)
ei.TextColor3 =
Color3.fromRGB(255, 100, 255)
ei.Text = "[TYPING ESP]"
elseif isBtn(hp) then
en.TextColor3 =
Color3.fromRGB(80, 255, 80)
ei.TextColor3 =
Color3.fromRGB(80, 255, 80)
ei.Text = "[BUTTON]"
elseif isKill(hp) then
en.TextColor3 =
Color3.fromRGB(255, 80, 80)
ei.TextColor3 =
Color3.fromRGB(255, 80, 80)
ei.Text = "[KILLBRICK]"
else
en.TextColor3 = Color3.new(1, 1, 1)
ei.TextColor3 =
Color3.fromRGB(0, 170, 255)
ei.Text = "[PART]"
end
ee.Text = tostring(hp.Material)
.. " T:" .. string.format("%.1f",
hp.Transparency)
.. " R:" .. string.format("%.1f",
hp.Reflectance)
end
else
esb.Adornee = nil
esb.Visible = false
ebg.Enabled = false
lastHov = nil
end
end)
-- ========== v9: FAST ESP LOOPS — all at 0.5s, new parts detected via DescendantAdded ==========
-- v9: instant new-part detection — when a new part is added to workspace,
-- immediately apply any active ESP to it (no need to wait for refresh loop)
spawn(function()
workspace.DescendantAdded:Connect(function(desc)
if not gui or not gui.Parent then return end
if not desc:IsA("BasePart") or desc == workspace.Terrain then return end
local c = p.Character
if c and desc:IsDescendantOf(c) then return end
-- small delay to let the part fully initialize
wait(0.1)
if not desc or not desc.Parent then return end
-- check typing ESP first (it overrides)
if cespActive and customEspTb.Text and customEspTb.Text ~= "" then
if desc.Name:lower():find(customEspTb.Text:lower()) then
removeOtherHLForPart(desc)
local wasInvis = desc.Transparency >= 0.95
local origT = desc.Transparency
if wasInvis then desc.Transparency = 0.25 end
local h = Instance.new("Highlight")
h.FillColor = Color3.fromRGB(255, 0, 255)
h.OutlineColor = Color3.fromRGB(255, 0, 255)
h.FillTransparency = 0.25
h.OutlineTransparency = 0
h.Parent = desc
table.insert(customHlStorage, {
hl = h, part = desc,
wasInvis = wasInvis, origT = origT
})
customEspParts[desc] = true
return
end
end
-- then check other ESPs
if T.killESP and isKill(desc) then
local h = Instance.new("Highlight")
h.FillColor = Color3.fromRGB(255,0,0)
h.OutlineColor = Color3.fromRGB(255,100,100)
h.FillTransparency = 0.65
h.OutlineTransparency = 0
h.Parent = desc
table.insert(killHL, h)
local bg2 = Instance.new("BillboardGui")
bg2.Size = UDim2.new(0, 80, 0, 18)
bg2.StudsOffset = Vector3.new(0, 2.5, 0)
bg2.AlwaysOnTop = true
bg2.Adornee = desc
bg2.Parent = desc
local l2 = Instance.new("TextLabel")
l2.Size = UDim2.new(1,0,1,0)
l2.BackgroundTransparency = 1
l2.TextColor3 = Color3.new(1,1,1)
l2.Text = "KILL"
l2.TextSize = 12
l2.Font = Enum.Font.GothamBold
l2.Parent = bg2
table.insert(killHL, bg2)
elseif T.btnESP and isBtn(desc) then
local h = Instance.new("Highlight")
h.FillColor = Color3.fromRGB(0,200,80)
h.OutlineColor = Color3.fromRGB(0,255,100)
h.FillTransparency = 0.6
h.OutlineTransparency = 0
h.Parent = desc
table.insert(btnHL, h)
local bg2 = Instance.new("BillboardGui")
bg2.Size = UDim2.new(0, 80, 0, 18)
bg2.StudsOffset = Vector3.new(0, 2.5, 0)
bg2.AlwaysOnTop = true
bg2.Adornee = desc
bg2.Parent = desc
local l2 = Instance.new("TextLabel")
l2.Size = UDim2.new(1,0,1,0)
l2.BackgroundTransparency = 1
l2.TextColor3 = Color3.new(1,1,1)
l2.Text = "BUTTON"
l2.TextSize = 12
l2.Font = Enum.Font.GothamBold
l2.Parent = bg2
table.insert(btnHL, bg2)
elseif T.wallESP and isWall(desc) then
local h = Instance.new("Highlight")
h.FillColor = Color3.fromRGB(255,200,0)
h.OutlineColor = Color3.fromRGB(255,255,0)
h.FillTransparency = 0.5
h.OutlineTransparency = 0
h.Parent = desc
table.insert(wallHL, h)
local bg2 = Instance.new("BillboardGui")
bg2.Size = UDim2.new(0, 80, 0, 18)
bg2.StudsOffset = Vector3.new(0, 2.5, 0)
bg2.AlwaysOnTop = true
bg2.Adornee = desc
bg2.Parent = desc
local l2 = Instance.new("TextLabel")
l2.Size = UDim2.new(1,0,1,0)
l2.BackgroundTransparency = 1
l2.TextColor3 = Color3.new(1,1,1)
l2.Text = "WALL"
l2.TextSize = 12
l2.Font = Enum.Font.GothamBold
l2.Parent = bg2
table.insert(wallHL, bg2)
elseif T.trollESP then
if desc.Transparency >= 0.5 then
if not customEspParts[desc] then
trollParts[desc] = {
c=desc.Color, t=desc.Transparency,
cs=desc.CastShadow,
tt=desc:FindFirstChild("TouchTransmitter")
and desc.TouchTransmitter.Enabled
}
if isKill(desc) then
desc.Color = Color3.fromRGB(255, 0, 0)
elseif isBtn(desc) then
desc.Color = Color3.fromRGB(0, 255, 0)
elseif desc.CanCollide then
desc.Color = Color3.fromRGB(255, 255, 0)
else
desc.Color = Color3.fromRGB(255, 50, 255)
end
desc.Transparency = 0.4
desc.CastShadow = false
local tt = desc:FindFirstChild("TouchTransmitter")
if tt then tt.Enabled = false end
end
end
end
end)
end)
-- v9: slow refresh loops — 60s (use REVEAL ALL button for instant)
spawn(function()
while gui and gui.Parent do
wait(60)
if T.trollESP then doTroll(true) end
end
end)
spawn(function()
while gui and gui.Parent do
wait(60)
if T.killESP then applyKillHL() end
end
end)
spawn(function()
while gui and gui.Parent do
wait(60)
if T.btnESP then applyBtnHL() end
end
end)
spawn(function()
while gui and gui.Parent do
wait(60)
if T.wallESP then applyWallHL() end
end
end)
-- ========== FULLBRIGHT ==========
local function saveLit()
local l = game:GetService("Lighting")
origLit = {
B = l.Brightness,
C = l.ClockTime,
FE = l.FogEnd,
FS = l.FogStart,
GS = l.GlobalShadows
}
end
saveLit()
local function setFB(on)
local l = game:GetService("Lighting")
if on then
saveLit()
l.Brightness = 2
l.ClockTime = 14
l.FogEnd = 100000
l.FogStart = 0
l.GlobalShadows = false
else
l.Brightness = origLit.B or 1
l.ClockTime = origLit.C or 14.5
l.FogEnd = origLit.FE or 100000
l.FogStart = origLit.FS or 0
l.GlobalShadows = origLit.GS
end
end
spawn(function()
local wasOn = false
while gui and gui.Parent do
wait(1)
if T.fullbright and not wasOn then
setFB(true); wasOn = true
elseif not T.fullbright and wasOn then
setFB(false); wasOn = false
end
end
end)
-- ========== NOCLIP ==========
RS.Stepped:Connect(function()
if not T.noclip then return end
local c = p.Character
if c then
for _, v in pairs(c:GetDescendants()) do
if v:IsA("BasePart") then
v.CanCollide = false
end
end
end
end)
-- ========== FLY ==========
RS.RenderStepped:Connect(function()
if not T.flying then return end
if flyBV and flyBV.Parent then
local d = Vector3.new(0, 0, 0)
local cf = cam.CFrame
if fk.w then d = d + cf.LookVector end
if fk.s then d = d - cf.LookVector end
if fk.a then d = d - cf.RightVector end
if fk.d then d = d + cf.RightVector end
if fk.sp then
d = d + Vector3.new(0, 1, 0)
end
if fk.sh then
d = d - Vector3.new(0, 1, 0)
end
if d.Magnitude > 0 then d = d.Unit end
flyBV.Velocity = d * 60
end
if flyBG and flyBG.Parent then
flyBG.CFrame = cam.CFrame
end
end)
-- ========== INPUT ==========
UIS.InputBegan:Connect(function(input, processed)
if processed then return end
-- Fly keys
if input.KeyCode == Enum.KeyCode.W then fk.w = true end
if input.KeyCode == Enum.KeyCode.A then fk.a = true end
if input.KeyCode == Enum.KeyCode.S then fk.s = true end
if input.KeyCode == Enum.KeyCode.D then fk.d = true end
if input.KeyCode == Enum.KeyCode.Space then fk.sp = true end
if input.KeyCode == Enum.KeyCode.LeftShift then fk.sh = true end
-- Infinite jump
if T.infJump and input.KeyCode == Enum.KeyCode.Space then
local h = gH()
if h then h.JumpPower = 100 end
local r = gR()
if r then r.Velocity = Vector3.new(0, 50, 0) end
end
-- Click teleport
if T.clickTP
and input.UserInputType
== Enum.UserInputType.MouseButton1 then
local t = ms.Target
if t and t:IsA("BasePart") then
local r = gR()
if r then
r.CFrame = t.CFrame + Vector3.new(0, 3, 0)
end
end
end
-- Right click deselect
if input.UserInputType == Enum.UserInputType.MouseButton2 then
if selectMode then
selectMode = false
selBtn.Text = "Click to Select Part"
selBtn.BackgroundColor3 =
Color3.fromRGB(0, 160, 80)
elseif propOpen then
closePropPanel()
end
end
-- ESC deselect
if input.KeyCode == Enum.KeyCode.Escape then
if selectMode then
selectMode = false
selBtn.Text = "Click to Select Part"
selBtn.BackgroundColor3 =
Color3.fromRGB(0, 160, 80)
elseif propOpen then
closePropPanel()
end
end
end)
UIS.InputEnded:Connect(function(input, processed)
if input.KeyCode == Enum.KeyCode.W then fk.w = false end
if input.KeyCode == Enum.KeyCode.A then fk.a = false end
if input.KeyCode == Enum.KeyCode.S then fk.s = false end
if input.KeyCode == Enum.KeyCode.D then fk.d = false end
if input.KeyCode == Enum.KeyCode.Space then fk.sp = false end
if input.KeyCode == Enum.KeyCode.LeftShift then fk.sh = false end
end)
-- ========== ANTI AFK ==========
spawn(function()
while gui and gui.Parent do
wait(60)
if T.antiAFK then
pcall(function()
game:GetService("VirtualUser")
:CaptureController()
game:GetService("VirtualUser")
:ClickButton2(Vector2.new())
end)
end
end
end)
-- ========== RESPAWN SPEED/JUMP FIX ==========
p.CharacterAdded:Connect(function(char)
spawn(function()
wait(2)
if custSpd then
local h = char:FindFirstChild("Humanoid")
if h then h.WalkSpeed = custSpd end
end
if custJmp then
local h = char:FindFirstChild("Humanoid")
if h then h.JumpPower = custJmp end
end
end)
end)
-- Print status
if PaintObject then
print("[Hydroxide v9] PaintObject FOUND - permanent saves enabled")
else
print("[Hydroxide v9] WARNING: PaintObject NOT FOUND - edit will be local only")
end
print("[Hydroxide v9] MoveObject: " .. tostring(MoveObject))
print("[Hydroxide v9] DeleteObject: " .. tostring(DeleteObject))
print("[Hydroxide v9] ESP: Fast refresh (0.5s) + DescendantAdded instant detection + Typing ESP override")
print("[Hydroxide v9] Ready!")



ignore the tags please
which obby creator, the one by mario?
@scrippterr yeah
@bobjsco w
add the option to delete or clone the part selected
Idk I'm new I'm on mobile can u help