-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ac475d4226d41277e9edd7b"))() end) end) --[[rscripts:analytics:end]] --[[ ================================================================ SIMPLEMENU - MULTI-FUNCTIONAL SCRIPT UI Framework: Obsidian UI (LinoriaLib Fork) Target Game: Housebound ================================================================ ]] -- Services and Variables local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera -- UI Library Setup local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/" local Library = loadstring(game:HttpGet(repo .. "Library.lua"))() local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))() local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))() local Options = Library.Options local Toggles = Library.Toggles -- Cache initial lighting state for clean resetting local OriginalLighting = { Ambient = Lighting.Ambient, OutdoorAmbient = Lighting.OutdoorAmbient, Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, FogEnd = Lighting.FogEnd, GlobalShadows = Lighting.GlobalShadows } -- Known monster target list local KnownMonsters = { ["Billy"] = true, ["HouseBilly"] = true, ["CellGuy"] = true, ["FleshGuy"] = true } local RenderConnections = {} local ESPStorage = {} -- Create Window local Window = Library:CreateWindow({ Title = "SimpleMenu", Footer = "Version 1.0.0", Icon = 95816097006870, NotifySide = "Right", ShowCustomCursor = true, }) -- Create Tabs local Tabs = { Main = Window:AddTab("Player & Movement", "user"), Visuals = Window:AddTab("Visuals & Lighting", "eye"), ESP = Window:AddTab("Entities & ESP", "crosshair"), ["UI Settings"] = Window:AddTab("UI Settings", "settings"), } -------------------------------------------------------------------------------- -- TAB 1: PLAYER & MOVEMENT -------------------------------------------------------------------------------- local MovementGroup = Tabs.Main:AddGroupbox({ Side = "Left", Name = "Movement Modifier", IconName = "zap" }) -- WalkSpeed Toggle & Slider MovementGroup:AddToggle("EnableWalkSpeed", { Text = "Custom WalkSpeed", Default = false, Tooltip = "Overrides your default movement speed", }):AddKeyPicker("WalkSpeedBind", { Default = "None", SyncToggleState = true, Mode = "Toggle", Text = "WalkSpeed Keybind" }) MovementGroup:AddSlider("WalkSpeedValue", { Text = "Speed Multiplier", Default = 16, Min = 6, Max = 60, Rounding = 0, Suffix = " studs/s" }) -- Noclip Toggle MovementGroup:AddToggle("EnableNoclip", { Text = "Noclip", Default = false, Tooltip = "Allows walking through walls and doors", }):AddKeyPicker("NoclipBind", { Default = "N", SyncToggleState = true, Mode = "Toggle", Text = "Noclip Keybind" }) -- Fly Hack Toggle MovementGroup:AddToggle("EnableFly", { Text = "Fly Hack", Default = false, Tooltip = "Allows flying around the map", }):AddKeyPicker("FlyBind", { Default = "F", SyncToggleState = true, Mode = "Toggle", Text = "Fly Keybind" }) MovementGroup:AddSlider("FlySpeed", { Text = "Fly Speed", Default = 20, Min = 5, Max = 100, Rounding = 0, }) local PlayerMechanicsGroup = Tabs.Main:AddGroupbox({ Side = "Right", Name = "Player Settings", IconName = "shield" }) -- Camera Zoom Unlock PlayerMechanicsGroup:AddToggle("UnlockCameraZoom", { Text = "Unlock Third Person Camera", Default = false, Tooltip = "Unlocks first-person camera distance restrictions", }) -------------------------------------------------------------------------------- -- TAB 2: VISUALS & LIGHTING -------------------------------------------------------------------------------- local LightingGroup = Tabs.Visuals:AddGroupbox({ Side = "Left", Name = "Lighting Enhancements", IconName = "sun" }) -- Fullbright Toggle LightingGroup:AddToggle("EnableFullbright", { Text = "Fullbright", Default = false, Tooltip = "Removes map darkness, shadows, and fog", }) LightingGroup:AddSlider("FullbrightBrightness", { Text = "Brightness Level", Default = 2, Min = 1, Max = 5, Rounding = 1, }) -- Anti Visual Effects local AntiFXGroup = Tabs.Visuals:AddGroupbox({ Side = "Right", Name = "Anti Visual Effects", IconName = "eye-off" }) AntiFXGroup:AddToggle("AntiBlur", { Text = "Remove Screen Blurs", Default = true, Tooltip = "Disables active blur effects", }) AntiFXGroup:AddToggle("AntiColorCorrection", { Text = "Disable Color Correction", Default = true, Tooltip = "Removes dark horror filters (Saturation / Contrast)", }) AntiFXGroup:AddToggle("AntiVignette", { Text = "Remove Vignette / Blood FX", Default = true, Tooltip = "Hides vignette overlays, static effects, and blood noise", }) -- Field of View AntiFXGroup:AddSlider("FieldOfView", { Text = "Camera FOV", Default = 70, Min = 60, Max = 120, Rounding = 0, }) -------------------------------------------------------------------------------- -- TAB 3: ENTITIES & ESP -------------------------------------------------------------------------------- local ESPGroup = Tabs.ESP:AddGroupbox({ Side = "Left", Name = "Monster ESP Settings", IconName = "user-x" }) ESPGroup:AddToggle("EnableMonsterESP", { Text = "Enable Monster ESP", Default = false, Tooltip = "Renders highlights and labels on entities", }):AddColorPicker("ESPColor", { Default = Color3.fromRGB(255, 30, 30), Title = "Monster ESP Color", }) ESPGroup:AddToggle("ESPShowName", { Text = "Show Entity Name", Default = true, }) ESPGroup:AddToggle("ESPShowDistance", { Text = "Show Distance", Default = true, }) ESPGroup:AddSlider("ESPFillTransparency", { Text = "Chams Fill Transparency", Default = 0.5, Min = 0, Max = 1, Rounding = 2, }) ESPGroup:AddSlider("ESPOutlineTransparency", { Text = "Chams Outline Transparency", Default = 0, Min = 0, Max = 1, Rounding = 2, }) -------------------------------------------------------------------------------- -- CORE LOGIC -------------------------------------------------------------------------------- -- Utility Functions local function GetCharacter() return LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() end local function GetHumanoid() local Char = GetCharacter() return Char and Char:FindFirstChildOfClass("Humanoid") end local function GetRootPart() local Char = GetCharacter() return Char and (Char:FindFirstChild("HumanoidRootPart") or Char.PrimaryPart) end -- WalkSpeed Loop RenderConnections.WalkSpeedLoop = RunService.PreRender:Connect(function() local Humanoid = GetHumanoid() if not Humanoid then return end if Toggles.EnableWalkSpeed.Value then Humanoid.WalkSpeed = Options.WalkSpeedValue.Value end end) -- Noclip Loop RenderConnections.NoclipLoop = RunService.Stepped:Connect(function() if not Toggles.EnableNoclip.Value then return end local Char = LocalPlayer.Character if not Char then return end for _, part in ipairs(Char:GetDescendants()) do if part:IsA("BasePart") and part.CanCollide then part.CanCollide = false end end end) -- Fly Hack Loop local FlyFlying = false local FlyBodyVel, FlyBodyGyro RenderConnections.FlyLoop = RunService.RenderStepped:Connect(function(delta) local Char = LocalPlayer.Character local Root = GetRootPart() if Toggles.EnableFly.Value and Char and Root then if not FlyFlying then FlyFlying = true FlyBodyVel = Instance.new("BodyVelocity") FlyBodyVel.MaxForce = Vector3.new(1e9, 1e9, 1e9) FlyBodyVel.Parent = Root FlyBodyGyro = Instance.new("BodyGyro") FlyBodyGyro.MaxTorque = Vector3.new(1e9, 1e9, 1e9) FlyBodyGyro.P = 9000 FlyBodyGyro.Parent = Root end FlyBodyGyro.CFrame = Camera.CFrame local MoveDir = Vector3.new() if UserInputService:IsKeyDown(Enum.KeyCode.W) then MoveDir = MoveDir + Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then MoveDir = MoveDir - Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then MoveDir = MoveDir - Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then MoveDir = MoveDir + Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then MoveDir = MoveDir + Vector3.new(0, 1, 0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then MoveDir = MoveDir - Vector3.new(0, 1, 0) end FlyBodyVel.Velocity = MoveDir.Unit * Options.FlySpeed.Value if MoveDir.Magnitude == 0 then FlyBodyVel.Velocity = Vector3.new(0, 0, 0) end else if FlyFlying then FlyFlying = false if FlyBodyVel then FlyBodyVel:Destroy() end if FlyBodyGyro then FlyBodyGyro:Destroy() end end end end) -- Lighting & FX Loop RenderConnections.LightingLoop = RunService.RenderStepped:Connect(function() if Toggles.EnableFullbright.Value then Lighting.Ambient = Color3.new(1, 1, 1) Lighting.OutdoorAmbient = Color3.new(1, 1, 1) Lighting.Brightness = Options.FullbrightBrightness.Value Lighting.FogEnd = 1000000 Lighting.GlobalShadows = false end if Toggles.AntiBlur.Value then for _, blurName in ipairs({"Blur", "PickupBlur", "BackgroundBlur", "ChoreBlur"}) do local blur = Lighting:FindFirstChild(blurName) if blur and blur:IsA("BlurEffect") then blur.Enabled = false end end end if Toggles.AntiColorCorrection.Value then local cc = Lighting:FindFirstChild("ColorCorrection") if cc and cc:IsA("ColorCorrectionEffect") then cc.Enabled = false end end if Toggles.AntiVignette.Value then pcall(function() local Retro = LocalPlayer.PlayerGui:FindFirstChild("RetroEffects") if Retro and Retro:FindFirstChild("Visual") and Retro.Visual:FindFirstChild("Vignette") then Retro.Visual.Vignette.Visible = false end local HealthGUI = LocalPlayer.PlayerGui:FindFirstChild("HealthGUI") if HealthGUI and HealthGUI:FindFirstChild("BloodImage") then HealthGUI.BloodImage.Visible = false end local TitleScreen = LocalPlayer.PlayerGui:FindFirstChild("TitleScreen") if TitleScreen and TitleScreen:FindFirstChild("Static") then TitleScreen.Static.Visible = false end end) end end) -- Restore lighting on Fullbright toggle off Toggles.EnableFullbright:OnChanged(function(State) if not State then Lighting.Ambient = OriginalLighting.Ambient Lighting.OutdoorAmbient = OriginalLighting.OutdoorAmbient Lighting.Brightness = OriginalLighting.Brightness Lighting.ClockTime = OriginalLighting.ClockTime Lighting.FogEnd = OriginalLighting.FogEnd Lighting.GlobalShadows = OriginalLighting.GlobalShadows end end) -- Camera Adjustments Options.FieldOfView:OnChanged(function(Value) Camera.FieldOfView = Value end) Toggles.UnlockCameraZoom:OnChanged(function(State) if State then LocalPlayer.CameraMaxZoomDistance = 128 LocalPlayer.CameraMinZoomDistance = 0.5 else LocalPlayer.CameraMaxZoomDistance = 0.5 LocalPlayer.CameraMinZoomDistance = 0.5 end end) -- Entity ESP Functions local function CreateESPForEntity(model) if ESPStorage[model] then return end local highlight = Instance.new("Highlight") highlight.Name = "ESP_Highlight" highlight.Adornee = model highlight.FillColor = Options.ESPColor.Value highlight.OutlineColor = Color3.fromRGB(255, 255, 255) highlight.FillTransparency = Options.ESPFillTransparency.Value highlight.OutlineTransparency = Options.ESPOutlineTransparency.Value highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Parent = model local billboard = Instance.new("BillboardGui") billboard.Name = "ESP_Tag" billboard.Adornee = model:FindFirstChild("HumanoidRootPart") or model.PrimaryPart or model:FindFirstChildWhichIsA("BasePart") billboard.Size = UDim2.new(0, 200, 0, 50) billboard.StudsOffset = Vector3.new(0, 3, 0) billboard.AlwaysOnTop = true local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.BackgroundTransparency = 1 textLabel.TextColor3 = Options.ESPColor.Value textLabel.TextStrokeTransparency = 0 textLabel.TextSize = 14 textLabel.Font = Enum.Font.SourceSansBold textLabel.Parent = billboard billboard.Parent = model ESPStorage[model] = { Highlight = highlight, Billboard = billboard, TextLabel = textLabel } end local function RemoveESPForEntity(model) if ESPStorage[model] then if ESPStorage[model].Highlight then ESPStorage[model].Highlight:Destroy() end if ESPStorage[model].Billboard then ESPStorage[model].Billboard:Destroy() end ESPStorage[model] = nil end end -- ESP Update Loop RenderConnections.ESPLoop = RunService.RenderStepped:Connect(function() if not Toggles.EnableMonsterESP.Value then for model, _ in pairs(ESPStorage) do RemoveESPForEntity(model) end return end for _, obj in ipairs(Workspace:GetChildren()) do if KnownMonsters[obj.Name] or (obj:IsA("Model") and obj:FindFirstChildOfClass("Humanoid") and not Players:GetPlayerFromCharacter(obj)) then if not ESPStorage[obj] then CreateESPForEntity(obj) else local espData = ESPStorage[obj] espData.Highlight.FillColor = Options.ESPColor.Value espData.Highlight.FillTransparency = Options.ESPFillTransparency.Value espData.Highlight.OutlineTransparency = Options.ESPOutlineTransparency.Value local root = obj:FindFirstChild("HumanoidRootPart") or obj.PrimaryPart or obj:FindFirstChildWhichIsA("BasePart") local localRoot = GetRootPart() if root and localRoot then local dist = math.floor((root.Position - localRoot.Position).Magnitude) local displayText = "" if Toggles.ESPShowName.Value then displayText = obj.Name end if Toggles.ESPShowDistance.Value then displayText = displayText .. (displayText ~= "" and " [" or "[") .. tostring(dist) .. "m]" end espData.TextLabel.Text = displayText espData.TextLabel.TextColor3 = Options.ESPColor.Value end end end end end) -- Listen for new entities spawning Workspace.ChildAdded:Connect(function(child) if Toggles.EnableMonsterESP.Value and KnownMonsters[child.Name] then task.wait(0.2) CreateESPForEntity(child) end end) -------------------------------------------------------------------------------- -- TAB 4: UI SETTINGS & CONFIGURATION -------------------------------------------------------------------------------- local MenuGroup = Tabs["UI Settings"]:AddGroupbox({ Side = "Left", Name = "Menu Customization", IconName = "wrench" }) MenuGroup:AddToggle("KeybindMenuOpen", { Default = Library.KeybindFrame.Visible, Text = "Open Keybind Menu", Callback = function(value) Library.KeybindFrame.Visible = value end, }) MenuGroup:AddDropdown("DPIDropdown", { Values = { "50%", "75%", "100%", "125%", "150%" }, Default = "100%", Text = "DPI Scale", Callback = function(Value) Value = Value:gsub("%%", "") Library:SetDPIScale(tonumber(Value)) end, }) MenuGroup:AddDivider() MenuGroup:AddLabel("Menu Toggle Bind"):AddKeyPicker("MenuKeybind", { Default = "RightControl", NoUI = true, Text = "Menu keybind" }) MenuGroup:AddButton("Unload Script", function() Library:Unload() end) Library.ToggleKeybind = Options.MenuKeybind -- Save & Theme Manager Setup ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() SaveManager:SetIgnoreIndexes({ "MenuKeybind" }) ThemeManager:SetFolder("SimpleMenu") SaveManager:SetFolder("SimpleMenu/config") SaveManager:BuildConfigSection(Tabs["UI Settings"]) ThemeManager:ApplyToTab(Tabs["UI Settings"]) -- Cleanup on Script Unload Library:OnUnload(function() for _, conn in pairs(RenderConnections) do if conn and conn.Connected then conn:Disconnect() end end for model, _ in pairs(ESPStorage) do RemoveESPForEntity(model) end Lighting.Ambient = OriginalLighting.Ambient Lighting.OutdoorAmbient = OriginalLighting.OutdoorAmbient Lighting.Brightness = OriginalLighting.Brightness Lighting.ClockTime = OriginalLighting.ClockTime Lighting.FogEnd = OriginalLighting.FogEnd Lighting.GlobalShadows = OriginalLighting.GlobalShadows print("[SimpleMenu] Unloaded successfully!") end) -- Load Configurations SaveManager:LoadAutoloadConfig() Library:Notify({ Title = "SimpleMenu", Description = "Loaded successfully!", Time = 5, })