-- 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!")