local Player = game.Players.LocalPlayer local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local MarketplaceService = game:GetService("MarketplaceService") local TweenService = game:GetService("TweenService") local CollectionService = game:GetService("CollectionService") local CurrentCamera = workspace.CurrentCamera local SESSION_KEY = "_GnomesHubSession" _G[SESSION_KEY] = (_G[SESSION_KEY] or 0) + 1 local SESSION = _G[SESSION_KEY] local existing = Player:FindFirstChild("PlayerGui") and Player.PlayerGui:FindFirstChild("GnomesHub") if existing then existing:Destroy() end local MAT_COLORS = { Clonk = Color3.fromRGB(255, 180, 40), Fraggles = Color3.fromRGB(70, 200, 90), Plasto = Color3.fromRGB(50, 150, 255), Weapon = Color3.fromRGB(220, 50, 50), Trap = Color3.fromRGB(180, 100, 30) } local MAT_NAMES = { Clonk = "Clonk", Fraggles = "Fraggles", Plasto = "Plasto", Weapon = "Weapon", Trap = "Trap" } local ITEM_OVERRIDES = { Gun = { label = nil, mat = "Weapon" }, Knife1 = { label = "Knife", mat = "Weapon" }, Knife2 = { label = "Knife", mat = "Weapon" }, Knife3 = { label = "Knife", mat = "Weapon" }, Spoon1 = { label = "Spoon", mat = nil }, Spoon2 = { label = "Spoon", mat = nil }, Spoon3 = { label = "Spoon", mat = nil }, PaperPlane = { label = "Paper Plane", mat = nil }, MouseTrap = { label = "Mouse Trap", mat = "Trap" }, PlungerMODEL = { label = "Plunger", mat = "Plasto" } } local function getSprintSpeed() local base = game.StarterPlayer.CharacterWalkSpeed + 4 local mult = 1 local ok1, v = pcall(MarketplaceService.UserOwnsGamePassAsync, MarketplaceService, Player.UserId, 1862894357) if ok1 and v then mult = mult * 1.1 end local ok2, v = pcall(MarketplaceService.UserOwnsGamePassAsync, MarketplaceService, Player.UserId, 1875417216) if ok2 and v then mult = mult * 1.2 end return base * mult end local sprintSpeed = getSprintSpeed() local infiniteStamina = false local mouseUnlock = false local mouseUnlockConn = nil local postSimConn = nil local function applyMouseUnlock(enabled) if enabled then Player.CameraMode = Enum.CameraMode.Classic UserInputService.MouseIconEnabled = true UserInputService.MouseBehavior = Enum.MouseBehavior.Default else Player.CameraMode = Enum.CameraMode.LockFirstPerson UserInputService.MouseIconEnabled = false UserInputService.MouseBehavior = Enum.MouseBehavior.Default end end local function toggleMouseUnlock() mouseUnlock = not mouseUnlock applyMouseUnlock(mouseUnlock) if mouseUnlockConn then mouseUnlockConn:Disconnect() mouseUnlockConn = nil end if postSimConn then postSimConn:Disconnect() postSimConn = nil end if mouseUnlock then mouseUnlockConn = Player:GetPropertyChangedSignal("CameraMode"):Connect(function() if _G[SESSION_KEY] ~= SESSION then return end if mouseUnlock and Player.CameraMode ~= Enum.CameraMode.Classic then Player.CameraMode = Enum.CameraMode.Classic end end) postSimConn = RunService.PostSimulation:Connect(function() if _G[SESSION_KEY] ~= SESSION then return end if mouseUnlock and Player.CameraMode ~= Enum.CameraMode.Classic then Player.CameraMode = Enum.CameraMode.Classic end end) end end local preRenderConn = nil local clonedSound = nil local animTrack = nil local function cleanupStamina() if preRenderConn then preRenderConn:Disconnect() preRenderConn = nil end if clonedSound then clonedSound:Stop() clonedSound:Destroy() clonedSound = nil end if animTrack then animTrack:Stop() animTrack = nil end end local function toggleInfiniteStamina(value) infiniteStamina = value if not value then cleanupStamina() return end local handlerScript = Player:FindFirstChild("PlayerGui") and Player.PlayerGui:FindFirstChild("HUD") and Player.PlayerGui.HUD:FindFirstChild("Handler") local runAnim = handlerScript and handlerScript:FindFirstChild("RunAnimation") local originalSound = game:GetService("SoundService"):FindFirstChild("Sprinting") if originalSound then clonedSound = originalSound:Clone() clonedSound.Parent = game:GetService("SoundService") clonedSound.Name = "GnomesSprintSound" end preRenderConn = RunService.PreRender:Connect(function() if _G[SESSION_KEY] ~= SESSION then return end local char = Player.Character if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if not hum then return end local isCrouched = Player:FindFirstChild("IsCrouched") and Player.IsCrouched.Value local isAnchored = hum.RootPart and (hum.RootPart.Anchored or hum.RootPart:FindFirstChildWhichIsA("WeldConstraint")) local shiftHeld = UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) local moving = hum.MoveDirection.Magnitude > 0 local shouldSprint = shiftHeld and moving and not isCrouched and not isAnchored if shouldSprint then hum.WalkSpeed = sprintSpeed if clonedSound and not clonedSound.IsPlaying then clonedSound:Play() end if runAnim then local animator = hum:FindFirstChildOfClass("Animator") if animator then if not animTrack or not animTrack.IsPlaying then if animTrack then animTrack:Stop() end animTrack = animator:LoadAnimation(runAnim) animTrack.Priority = Enum.AnimationPriority.Movement animTrack:Play() end end end if CurrentCamera.CameraType ~= Enum.CameraType.Scriptable then local beatStage = Player:GetAttribute("BeatStage") or 0 local targetFov = beatStage > 0 and 90 or 87 if CurrentCamera.FieldOfView ~= targetFov then TweenService:Create(CurrentCamera, TweenInfo.new(0.25, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { FieldOfView = targetFov }):Play() end end else if clonedSound and clonedSound.IsPlaying then clonedSound:Stop() end if animTrack and animTrack.IsPlaying then animTrack:Stop() animTrack = nil end if CurrentCamera.CameraType ~= Enum.CameraType.Scriptable then local beatStage = Player:GetAttribute("BeatStage") or 0 local targetFov = beatStage > 0 and 85 or 82 if CurrentCamera.FieldOfView ~= targetFov then TweenService:Create(CurrentCamera, TweenInfo.new(0.35, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), { FieldOfView = targetFov }):Play() end end end local pg = Player:FindFirstChild("PlayerGui") if pg then local hud = pg:FindFirstChild("HUD") if hud then local stats = hud:FindFirstChild("Stats") if stats then local stamina = stats:FindFirstChild("Stamina") if stamina then local level = stamina:FindFirstChild("level") if level then for _, tween in level:GetTweens() do tween:Cancel() end level.Size = UDim2.new(1, 0, 1, 0) end end end end end end) end local itemFilters = { Clonk = true, Fraggles = true, Plasto = true, Weapon = true, Trap = true } local ENEMY_FILTER_KEYS = { Grandpa_Model = "Grandpa", Rat = "Rat", Roach = "Roach" } local enemyFilters = { Grandpa = true, Rat = true, Roach = true } local espEnabled = false local espItems = {} local espConnections = {} local espAddConn = nil local function applyItemFilters() for _, data in next, espItems do local visible = espEnabled and (itemFilters[data.material] ~= false) if data.highlight then data.highlight.Enabled = visible end if data.billboard then data.billboard.Enabled = visible end end end local function lookupMaterial(name) local mat = nil for _, cat in game.ReplicatedStorage.Assets.Items:GetChildren() do local found = cat:FindFirstChild(name) if found then mat = found:GetAttribute("Material") if mat then return mat end end end return nil end local function getItemDefinition(itemModel) local name = itemModel.Name local override = ITEM_OVERRIDES[name] if override then local label = override.label or name local mat = override.mat or itemModel:GetAttribute("Material") or lookupMaterial(name) or "Fraggles" return mat, label end local mat = itemModel:GetAttribute("Material") if mat then return mat, name end mat = lookupMaterial(name) if mat then return mat, name end return "Fraggles", name end local function createItemEsp(itemModel) if not itemModel.PrimaryPart then return end if espItems[itemModel] then return end local oldHl = itemModel:FindFirstChild("GnomesItemHl") if oldHl then oldHl:Destroy() end local oldBg = itemModel:FindFirstChild("GnomesItemBg") if oldBg then oldBg:Destroy() end local mat, displayName = getItemDefinition(itemModel) local color = MAT_COLORS[mat] or Color3.fromRGB(200, 200, 200) local highlight = Instance.new("Highlight") highlight.Name = "GnomesItemHl" highlight.Adornee = itemModel highlight.FillColor = color highlight.FillTransparency = 0.7 highlight.OutlineColor = color highlight.OutlineTransparency = 0.3 highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Parent = itemModel local pp = itemModel.PrimaryPart local labelYOff = pp.Size.Y / 2 + 2 local bg = Instance.new("BillboardGui") bg.Name = "GnomesItemBg" bg.Adornee = pp bg.Size = UDim2.new(0, 120, 0, 26) bg.StudsOffset = Vector3.new(0, labelYOff, 0) bg.AlwaysOnTop = true bg.Parent = itemModel local bgFrame = Instance.new("Frame") bgFrame.Size = UDim2.new(1, 0, 1, 0) bgFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 15) bgFrame.BackgroundTransparency = 0.25 bgFrame.BorderSizePixel = 0 bgFrame.Parent = bg local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(0, 6) bgCorner.Parent = bgFrame local dot = Instance.new("Frame") dot.Size = UDim2.new(0, 8, 0, 8) dot.Position = UDim2.new(0, 8, 0.5, -4) dot.BackgroundColor3 = color dot.BorderSizePixel = 0 dot.Parent = bgFrame local dotCorner = Instance.new("UICorner") dotCorner.CornerRadius = UDim.new(1, 0) dotCorner.Parent = dot local nameLabel = Instance.new("TextLabel") nameLabel.Size = UDim2.new(1, -24, 0, 14) nameLabel.Position = UDim2.new(0, 22, 0, 1) nameLabel.BackgroundTransparency = 1 nameLabel.Text = displayName nameLabel.TextColor3 = Color3.fromRGB(230, 230, 240) nameLabel.Font = Enum.Font.GothamBold nameLabel.TextSize = 12 nameLabel.TextXAlignment = Enum.TextXAlignment.Left nameLabel.TextTransparency = 0.1 nameLabel.Parent = bgFrame local matLabel = Instance.new("TextLabel") matLabel.Size = UDim2.new(1, -24, 0, 11) matLabel.Position = UDim2.new(0, 22, 0, 15) matLabel.BackgroundTransparency = 1 matLabel.Text = mat matLabel.TextColor3 = color matLabel.Font = Enum.Font.Gotham matLabel.TextSize = 9 matLabel.TextXAlignment = Enum.TextXAlignment.Left matLabel.TextTransparency = 0.3 matLabel.Parent = bgFrame local visible = itemFilters[mat] ~= false highlight.Enabled = visible bg.Enabled = visible espItems[itemModel] = { highlight = highlight, billboard = bg, item = itemModel, material = mat } local conn = itemModel.AncestryChanged:Connect(function() if _G[SESSION_KEY] ~= SESSION then conn:Disconnect() return end if not itemModel.Parent then conn:Disconnect() removeItemEsp(itemModel) end end) table.insert(espConnections, conn) end local function removeItemEsp(itemModel) local data = espItems[itemModel] if data then if data.highlight then data.highlight:Destroy() end if data.billboard then data.billboard:Destroy() end espItems[itemModel] = nil end end local function cleanupEsp() for item, data in next, espItems do if data.highlight then data.highlight:Destroy() end if data.billboard then data.billboard:Destroy() end end for k in next, espItems do espItems[k] = nil end if espAddConn then espAddConn:Disconnect() espAddConn = nil end for _, conn in espConnections do conn:Disconnect() end for i = #espConnections, 1, -1 do table.remove(espConnections) end end local enemyEsp = {} local enemyEspConns = {} local enemyAddConn = nil local enemyEspEnabled = false local function applyEnemyFilters() for _, data in next, enemyEsp do local visible = enemyEspEnabled and (enemyFilters[data.filterKey] ~= false) if data.highlight then data.highlight.Enabled = visible end if data.billboard then data.billboard.Enabled = visible end end end local function createEnemyEsp(model) if enemyEsp[model] then return end local hum = model:FindFirstChildWhichIsA("Humanoid") local root = hum and hum.RootPart or model.PrimaryPart if not root then return end local oldHl = model:FindFirstChild("GnomesEnemyHl") if oldHl then oldHl:Destroy() end local oldBg = model:FindFirstChild("GnomesEnemyBg") if oldBg then oldBg:Destroy() end local highlight = Instance.new("Highlight") highlight.Name = "GnomesEnemyHl" highlight.Adornee = model highlight.FillColor = Color3.fromRGB(255, 60, 60) highlight.FillTransparency = 0.6 highlight.OutlineColor = Color3.fromRGB(255, 30, 30) highlight.OutlineTransparency = 0.2 highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Parent = model local bg = Instance.new("BillboardGui") bg.Name = "GnomesEnemyBg" bg.Adornee = root bg.Size = UDim2.new(0, 140, 0, 34) bg.StudsOffset = Vector3.new(0, root.Size.Y / 2 + 2, 0) bg.AlwaysOnTop = true bg.Parent = model local bgFrame = Instance.new("Frame") bgFrame.Size = UDim2.new(1, 0, 1, 0) bgFrame.BackgroundColor3 = Color3.fromRGB(15, 10, 10) bgFrame.BackgroundTransparency = 0.2 bgFrame.BorderSizePixel = 0 bgFrame.Parent = bg local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(0, 6) bgCorner.Parent = bgFrame local nameLabel = Instance.new("TextLabel") nameLabel.Size = UDim2.new(1, -10, 0, 16) nameLabel.Position = UDim2.new(0, 5, 0, 2) nameLabel.BackgroundTransparency = 1 nameLabel.Text = model.Name:gsub("_Model", ""):gsub("_", " ") nameLabel.TextColor3 = Color3.fromRGB(255, 220, 220) nameLabel.Font = Enum.Font.GothamBold nameLabel.TextSize = 12 nameLabel.TextXAlignment = Enum.TextXAlignment.Left nameLabel.Parent = bgFrame local barBg = Instance.new("Frame") barBg.Size = UDim2.new(1, -10, 0, 4) barBg.Position = UDim2.new(0, 5, 0, 20) barBg.BackgroundColor3 = Color3.fromRGB(40, 20, 20) barBg.BorderSizePixel = 0 barBg.Parent = bgFrame local barCorner = Instance.new("UICorner") barCorner.CornerRadius = UDim.new(1, 0) barCorner.Parent = barBg local barFill = Instance.new("Frame") barFill.Size = UDim2.new(1, 0, 1, 0) barFill.BackgroundColor3 = Color3.fromRGB(255, 60, 60) barFill.BorderSizePixel = 0 barFill.Parent = barBg local barFillCorner = Instance.new("UICorner") barFillCorner.CornerRadius = UDim.new(1, 0) barFillCorner.Parent = barFill local healthLabel = Instance.new("TextLabel") healthLabel.Size = UDim2.new(1, -10, 0, 12) healthLabel.Position = UDim2.new(0, 5, 0, 24) healthLabel.BackgroundTransparency = 1 healthLabel.Text = tostring(math.floor(hum.Health)) .. "/" .. tostring(hum.MaxHealth) healthLabel.TextColor3 = Color3.fromRGB(220, 200, 200) healthLabel.Font = Enum.Font.Gotham healthLabel.TextSize = 9 healthLabel.TextXAlignment = Enum.TextXAlignment.Left healthLabel.TextTransparency = 0.2 healthLabel.Parent = bgFrame bg.Size = UDim2.new(0, 140, 0, 36) local filterKey = ENEMY_FILTER_KEYS[model.Name] or model.Name local visible = enemyFilters[filterKey] ~= false highlight.Enabled = visible bg.Enabled = visible enemyEsp[model] = { highlight = highlight, billboard = bg, barFill = barFill, healthLabel = healthLabel, humanoid = hum, filterKey = filterKey } local healthConn = hum.HealthChanged:Connect(function() if _G[SESSION_KEY] ~= SESSION then return end local data = enemyEsp[model] if data then data.barFill.Size = UDim2.new(math.clamp(hum.Health / hum.MaxHealth, 0, 1), 0, 1, 0) data.healthLabel.Text = tostring(math.floor(hum.Health)) .. "/" .. tostring(hum.MaxHealth) end end) table.insert(enemyEspConns, healthConn) local diedConn = hum.Died:Connect(function() if _G[SESSION_KEY] ~= SESSION then return end removeEnemyEsp(model) end) table.insert(enemyEspConns, diedConn) end local function removeEnemyEsp(model) local data = enemyEsp[model] if data then if data.highlight then data.highlight:Destroy() end if data.billboard then data.billboard:Destroy() end enemyEsp[model] = nil end end local function cleanupEnemyEsp() for model, data in next, enemyEsp do if data.highlight then data.highlight:Destroy() end if data.billboard then data.billboard:Destroy() end end for k in next, enemyEsp do enemyEsp[k] = nil end if enemyAddConn then enemyAddConn:Disconnect() enemyAddConn = nil end for _, conn in enemyEspConns do conn:Disconnect() end for i = #enemyEspConns, 1, -1 do table.remove(enemyEspConns) end end local function shouldBeEnemy(model) if not model:IsA("Model") or not model:IsDescendantOf(workspace) then return false end if model == Player.Character then return false end local n = model.Name if n == "PoseStatueGuy" or n == "grandpa" or n == "baby" or n:find("Arms") then return false end local hum = model:FindFirstChildWhichIsA("Humanoid") if not hum or hum.Health <= 0 then return false end return true end local function toggleEsp(value) espEnabled = value if not value then cleanupEsp() return end for _, item in CollectionService:GetTagged("CanGrab") do if item:IsDescendantOf(workspace) and item:IsA("Model") and item.PrimaryPart then createItemEsp(item) end end espAddConn = CollectionService:GetInstanceAddedSignal("CanGrab"):Connect(function(item) if _G[SESSION_KEY] ~= SESSION then return end if espEnabled and item:IsDescendantOf(workspace) and item:IsA("Model") and item.PrimaryPart then createItemEsp(item) end end) end local function toggleEnemyEsp(value) enemyEspEnabled = value if not value then cleanupEnemyEsp() return end for _, obj in workspace:GetDescendants() do local hum = obj:IsA("Humanoid") and obj or obj:FindFirstChildWhichIsA("Humanoid") if hum then local model = hum.Parent if model and shouldBeEnemy(model) then createEnemyEsp(model) end end end enemyAddConn = workspace.DescendantAdded:Connect(function(obj) if _G[SESSION_KEY] ~= SESSION then return end if not enemyEspEnabled then return end local hum = obj:IsA("Humanoid") and obj or obj:FindFirstChildWhichIsA("Humanoid") if hum then local model = hum.Parent if model and shouldBeEnemy(model) then createEnemyEsp(model) end end end) end UserInputService.InputBegan:Connect(function(input, processed) if _G[SESSION_KEY] ~= SESSION then return end if processed then return end if input.KeyCode == Enum.KeyCode.X then toggleMouseUnlock() end end) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "GnomesHub" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = Player:WaitForChild("PlayerGui") local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 280, 0, 320) MainFrame.Position = UDim2.new(0.5, -140, 0.5, -160) MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20) MainFrame.BackgroundTransparency = 0.08 MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = true MainFrame.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 10) MainCorner.Parent = MainFrame local TopBar = Instance.new("Frame") TopBar.Size = UDim2.new(1, 0, 0, 32) TopBar.BackgroundColor3 = Color3.fromRGB(25, 25, 32) TopBar.BackgroundTransparency = 0.3 TopBar.BorderSizePixel = 0 TopBar.Parent = MainFrame local TopCorner = Instance.new("UICorner") TopCorner.CornerRadius = UDim.new(0, 10) TopCorner.Parent = TopBar local TopBarFill = Instance.new("Frame") TopBarFill.Size = UDim2.new(1, 0, 0, 10) TopBarFill.Position = UDim2.new(0, 0, 1, -10) TopBarFill.BackgroundColor3 = Color3.fromRGB(25, 25, 32) TopBarFill.BackgroundTransparency = 0.3 TopBarFill.BorderSizePixel = 0 TopBarFill.Parent = TopBar local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 1, 0) Title.BackgroundTransparency = 1 Title.Text = "Gnomes Hub" Title.TextColor3 = Color3.fromRGB(220, 220, 235) Title.Font = Enum.Font.GothamBold Title.TextSize = 14 Title.Parent = TopBar local Content = Instance.new("Frame") Content.Size = UDim2.new(1, 0, 1, -32) Content.Position = UDim2.new(0, 0, 0, 32) Content.BackgroundTransparency = 1 Content.Parent = MainFrame local staminaToggled = false local unlockToggled = false local espToggled = false local enemyEspToggled = false local antiBreakToggled = false local antiBreakConn = nil local grabToggled = false local grabOverrideActive = false local function createToggle(parent, yPos, labelText) local Label = Instance.new("TextLabel") Label.Size = UDim2.new(0.65, -10, 0, 28) Label.Position = UDim2.new(0, 14, 0, yPos) Label.BackgroundTransparency = 1 Label.Text = labelText Label.TextColor3 = Color3.fromRGB(190, 190, 210) Label.Font = Enum.Font.Gotham Label.TextSize = 14 Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = parent local ToggleBg = Instance.new("ImageButton") ToggleBg.Name = labelText:gsub("%[.-%]", ""):gsub("%s+$", "") .. "Toggle" ToggleBg.Size = UDim2.new(0, 44, 0, 24) ToggleBg.Position = UDim2.new(1, -56, 0, yPos + 2) ToggleBg.BackgroundColor3 = Color3.fromRGB(45, 45, 55) ToggleBg.AutoButtonColor = false ToggleBg.BorderSizePixel = 0 ToggleBg.Parent = parent local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(1, 0) ToggleCorner.Parent = ToggleBg local ToggleKnob = Instance.new("Frame") ToggleKnob.Size = UDim2.new(0, 18, 0, 18) ToggleKnob.Position = UDim2.new(0, 3, 0.5, -9) ToggleKnob.BackgroundColor3 = Color3.fromRGB(200, 200, 210) ToggleKnob.BorderSizePixel = 0 ToggleKnob.Parent = ToggleBg local KnobCorner = Instance.new("UICorner") KnobCorner.CornerRadius = UDim.new(1, 0) KnobCorner.Parent = ToggleKnob return Label, ToggleBg, ToggleKnob end local staminaLabel, staminaBg, staminaKnob = createToggle(Content, 6, "Infinite Stamina") local unlockLabel, unlockBg, unlockKnob = createToggle(Content, 38, "Free Mouse [X]") local espLabel, espBg, espKnob = createToggle(Content, 70, "Item ESP") local enemyEspLabel, enemyEspBg, enemyEspKnob = createToggle(Content, 188, "Enemy ESP") local antiBreakLabel, antiBreakBg, antiBreakKnob = createToggle(Content, 220, "Anti Break Arms") local grabLabel, grabBg, grabKnob = createToggle(Content, 252, "Infinite Grab") local function createMiniToggle(parent, yPos, labelText, color) local Label = Instance.new("TextLabel") Label.Size = UDim2.new(0.65, -10, 0, 18) Label.Position = UDim2.new(0, 24, 0, yPos) Label.BackgroundTransparency = 1 Label.Text = " " .. labelText Label.TextColor3 = color or Color3.fromRGB(160, 160, 180) Label.Font = Enum.Font.Gotham Label.TextSize = 12 Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = parent local ToggleBg = Instance.new("ImageButton") ToggleBg.Name = labelText:gsub("%s+", "") .. "FilterToggle" ToggleBg.Size = UDim2.new(0, 32, 0, 16) ToggleBg.Position = UDim2.new(1, -44, 0, yPos + 1) ToggleBg.BackgroundColor3 = Color3.fromRGB(45, 45, 55) ToggleBg.AutoButtonColor = false ToggleBg.BorderSizePixel = 0 ToggleBg.Parent = parent local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(1, 0) ToggleCorner.Parent = ToggleBg local ToggleKnob = Instance.new("Frame") ToggleKnob.Size = UDim2.new(0, 12, 0, 12) ToggleKnob.Position = UDim2.new(0, 2, 0.5, -6) ToggleKnob.BackgroundColor3 = Color3.fromRGB(200, 200, 210) ToggleKnob.BorderSizePixel = 0 ToggleKnob.Parent = ToggleBg local KnobCorner = Instance.new("UICorner") KnobCorner.CornerRadius = UDim.new(1, 0) KnobCorner.Parent = ToggleKnob return Label, ToggleBg, ToggleKnob end local function animateMiniKnob(knob, bg, state) if state then bg.BackgroundColor3 = Color3.fromRGB(60, 130, 255) knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) knob:TweenPosition(UDim2.new(1, -14, 0.5, -6), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.15, true) else bg.BackgroundColor3 = Color3.fromRGB(45, 45, 55) knob.BackgroundColor3 = Color3.fromRGB(200, 200, 210) knob:TweenPosition(UDim2.new(0, 2, 0.5, -6), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.15, true) end end local itemFilterRows = {} local function toggleItemFilter(name) itemFilters[name] = not itemFilters[name] animateMiniKnob(itemFilterRows[name].knob, itemFilterRows[name].bg, itemFilters[name]) applyItemFilters() end local enemyFilterRows = {} local function toggleEnemyFilter(name) enemyFilters[name] = not enemyFilters[name] animateMiniKnob(enemyFilterRows[name].knob, enemyFilterRows[name].bg, enemyFilters[name]) applyEnemyFilters() end local ITEM_FILTER_COLORS = { Clonk = Color3.fromRGB(255, 180, 40), Fraggles = Color3.fromRGB(70, 200, 90), Plasto = Color3.fromRGB(50, 150, 255), Weapon = Color3.fromRGB(220, 50, 50), Trap = Color3.fromRGB(180, 100, 30) } local ENEMY_FILTER_COLORS = { Grandpa = Color3.fromRGB(255, 60, 60), Rat = Color3.fromRGB(200, 100, 100), Roach = Color3.fromRGB(160, 120, 80) } -- Item Filter Panel local itemFilterFrame = Instance.new("Frame") itemFilterFrame.Size = UDim2.new(1, 0, 0, 90) itemFilterFrame.Position = UDim2.new(0, 0, 0, 98) itemFilterFrame.BackgroundTransparency = 1 itemFilterFrame.Visible = false itemFilterFrame.Parent = Content local itemFilterYStart = 0 for name in next, itemFilters do local filterName = name local lbl, bg, knob = createMiniToggle(itemFilterFrame, itemFilterYStart, filterName, ITEM_FILTER_COLORS[filterName]) itemFilterRows[filterName] = { label = lbl, bg = bg, knob = knob, state = true } animateMiniKnob(knob, bg, true) bg.MouseButton1Click:Connect(function() toggleItemFilter(filterName) end) itemFilterYStart = itemFilterYStart + 18 end -- Enemy Filter Panel local enemyFilterFrame = Instance.new("Frame") enemyFilterFrame.Size = UDim2.new(1, 0, 0, 54) enemyFilterFrame.Position = UDim2.new(0, 0, 0, 216) enemyFilterFrame.BackgroundTransparency = 1 enemyFilterFrame.Visible = false enemyFilterFrame.Parent = Content local enemyFilterYStart = 0 for name in next, enemyFilters do local filterName = name local lbl, bg, knob = createMiniToggle(enemyFilterFrame, enemyFilterYStart, filterName, ENEMY_FILTER_COLORS[filterName]) enemyFilterRows[filterName] = { label = lbl, bg = bg, knob = knob, state = true } animateMiniKnob(knob, bg, true) bg.MouseButton1Click:Connect(function() toggleEnemyFilter(filterName) end) enemyFilterYStart = enemyFilterYStart + 18 end local HotkeyHint = Instance.new("TextLabel") HotkeyHint.Size = UDim2.new(1, -14, 0, 16) HotkeyHint.Position = UDim2.new(0, 14, 0, 274) HotkeyHint.BackgroundTransparency = 1 HotkeyHint.Text = "Press X to toggle mouse freedom" HotkeyHint.TextColor3 = Color3.fromRGB(120, 120, 140) HotkeyHint.Font = Enum.Font.Gotham HotkeyHint.TextSize = 11 HotkeyHint.TextXAlignment = Enum.TextXAlignment.Left HotkeyHint.TextTransparency = 0.4 HotkeyHint.Parent = Content local function repositionLayout() local itemFilterH = espToggled and 90 or 0 local enemyFilterH = enemyEspToggled and 54 or 0 local enemyY = 98 + itemFilterH enemyEspLabel.Position = UDim2.new(0, 14, 0, enemyY) enemyEspBg.Position = UDim2.new(1, -56, 0, enemyY + 2) local enemyFilterY = enemyY + 28 enemyFilterFrame.Position = UDim2.new(0, 0, 0, enemyFilterY) local antiBreakY = enemyFilterY + enemyFilterH + 4 antiBreakLabel.Position = UDim2.new(0, 14, 0, antiBreakY) antiBreakBg.Position = UDim2.new(1, -56, 0, antiBreakY + 2) local grabY = antiBreakY + 32 grabLabel.Position = UDim2.new(0, 14, 0, grabY) grabBg.Position = UDim2.new(1, -56, 0, grabY + 2) HotkeyHint.Position = UDim2.new(0, 14, 0, grabY + 28 + 4) MainFrame.Size = UDim2.new(0, 280, 0, 36 + grabY + 28 + 4 + 16) end local function animateKnob(knob, bg, state) if state then bg.BackgroundColor3 = Color3.fromRGB(60, 130, 255) knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) knob:TweenPosition(UDim2.new(1, -21, 0.5, -9), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true) else bg.BackgroundColor3 = Color3.fromRGB(45, 45, 55) knob.BackgroundColor3 = Color3.fromRGB(200, 200, 210) knob:TweenPosition(UDim2.new(0, 3, 0.5, -9), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true) end end local preSimAntiBreak = nil local function clearViewRig(char) if not char then return end for _, v in char:GetChildren() do if v:IsA("BasePart") and string.find(v.Name, "Arm") then v.Transparency = 0 end if v:IsA("Model") and v.Name == "ViewRig" then for _, part in v:GetDescendants() do if part:IsA("BasePart") then part.Transparency = 0 end end end end end local function toggleAntiBreakArms(value) if value then local attName = Player.Name .. "Att" local grabbedPart = nil local launched = false local function findGrabbedPart() grabbedPart = nil for _, desc in workspace:GetDescendants() do if desc:IsA("Attachment") and desc.Name == attName then local part = desc.Parent if part and part:IsA("BasePart") then grabbedPart = part return end end end end local function isGrabbing() if grabbedPart and grabbedPart:FindFirstChild(attName) then return true end findGrabbedPart() return grabbedPart ~= nil end findGrabbedPart() preSimAntiBreak = RunService.PreSimulation:Connect(function() local char = Player.Character if not char then return end for _, cp in char:GetDescendants() do if cp.Name == "ColliderPart" then cp:Destroy() end end local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") if root and Vector3.new(root.Velocity.X, 0, root.Velocity.Z).Magnitude > 80 then root.Velocity = Vector3.new(0, root.Velocity.Y, 0) end end) antiBreakConn = RunService.Heartbeat:Connect(function() local char = Player.Character if not char then return end local isRagdoll = char:FindFirstChild("IsRagdoll") if isRagdoll and isRagdoll.Value then isRagdoll.Value = false end local humanoid = char:FindFirstChildWhichIsA("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") if humanoid then if humanoid.PlatformStand then humanoid.PlatformStand = false end if not humanoid.AutoRotate then humanoid.AutoRotate = true end humanoid:ChangeState(Enum.HumanoidStateType.Running) end clearViewRig(char) for _, cp in char:GetDescendants() do if cp.Name == "ColliderPart" then cp:Destroy() end end if root then local flatSpeed = Vector3.new(root.Velocity.X, 0, root.Velocity.Z).Magnitude if flatSpeed > 80 then root.Velocity = Vector3.new(0, root.Velocity.Y, 0) launched = true elseif launched and flatSpeed < 15 then launched = false end end if isGrabbing() and not launched and not grabOverrideActive then if not root then return end local bp = grabbedPart:FindFirstChildWhichIsA("BodyPosition") if bp then local offset = bp.Position - root.Position if offset.Magnitude > 18 then bp.Position = root.Position + offset.Unit * 18 end end end end) else if preSimAntiBreak then preSimAntiBreak:Disconnect() preSimAntiBreak = nil end if antiBreakConn then antiBreakConn:Disconnect() antiBreakConn = nil end end end local grabConn = nil local grabScrollConn = nil local grabClickConn = nil local grabReleaseConn = nil local grabDropConn = nil local grabbedBP = nil local grabReleaseQueued = false local function findGrabbedBP() if grabbedBP and grabbedBP.Parent then return grabbedBP end grabbedBP = nil for _, obj in workspace:GetDescendants() do if obj:IsA("BodyPosition") then local part = obj.Parent if part and (part:IsA("BasePart") or part:IsA("Attachment")) then local model = part:FindFirstAncestorWhichIsA("Model") if model and model:HasTag("CanGrab") then grabbedBP = obj return obj end end end end return nil end local function getRemote(name) local remotes = game.ReplicatedStorage:FindFirstChild("Remotes") return remotes and remotes:FindFirstChild(name or "GrabEvent") end local function findInteractiveInView(maxDist) local char = Player.Character if not char then return nil end local filter = RaycastParams.new() filter.FilterType = Enum.RaycastFilterType.Exclude local exclude = { char } local viewRig = char:FindFirstChild(Player.Name .. "Arms") if viewRig then table.insert(exclude, viewRig) end filter.FilterDescendantsInstances = exclude local result = workspace:Raycast(CurrentCamera.CFrame.Position, CurrentCamera.CFrame.LookVector * maxDist, filter) if result and result.Instance then local model = result.Instance:FindFirstAncestorWhichIsA("Model") if model and model:GetAttribute("System") then return model end end end local grabModelRef = nil local function grabRelease() if not grabReleaseQueued then return end grabReleaseQueued = false local model = grabModelRef grabModelRef = nil if not model or not model.Parent then local bp = findGrabbedBP() if bp then model = bp.Parent:FindFirstAncestorWhichIsA("Model") end end if model then local ge = getRemote() if ge then ge:FireServer(model) end end end local grabScriptsState = {} local function disableGrabScripts(disable) if not Player.Character then return end local char = Player.Character local targets = { char:FindFirstChild("GrabClient"), char:FindFirstChild("UPDGrabClient"), } for _, script in ipairs(targets) do if script and script:IsA("LocalScript") then if disable then if not grabScriptsState[script] then grabScriptsState[script] = script.Disabled end script.Disabled = true else local orig = grabScriptsState[script] if orig ~= nil then script.Disabled = orig end grabScriptsState[script] = nil end end end end local function findGrabbableInView(maxDist) local char = Player.Character if not char then return nil end local camPos = CurrentCamera.CFrame.Position local lookVec = CurrentCamera.CFrame.LookVector local filter = RaycastParams.new() filter.FilterType = Enum.RaycastFilterType.Exclude local exclude = { char } local viewRig = char:FindFirstChild(Player.Name .. "Arms") if viewRig then table.insert(exclude, viewRig) end filter.FilterDescendantsInstances = exclude local result = workspace:Raycast(camPos, lookVec * maxDist, filter) if result and result.Instance then local model = result.Instance:FindFirstAncestorWhichIsA("Model") if model and model:HasTag("CanGrab") then return model end end return nil end local function toggleGrab(value) grabOverrideActive = value if value then local myDistance = 50 disableGrabScripts(true) grabScrollConn = UserInputService.InputChanged:Connect(function(input, processed) if processed then return end if input.UserInputType == Enum.UserInputType.MouseWheel then myDistance = math.clamp(myDistance + input.Position.Z * 5, 5, 500) end end) grabClickConn = UserInputService.InputBegan:Connect(function(input, processed) if processed or input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end if findGrabbedBP() then return end -- Try interactive (System) objects first: short raycast, close range only local interactiveModel = findInteractiveInView(1000) if interactiveModel then local cs = getRemote("CheckSystem") if cs then cs:FireServer(interactiveModel) end return end local model = findGrabbableInView(1000) if model and model.PrimaryPart then local ge = getRemote() if ge then ge:FireServer(model, model.PrimaryPart.Position) grabReleaseQueued = true grabModelRef = model end end end) grabDropConn = UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.H and grabReleaseQueued then grabRelease() end end) grabbedBP = nil grabConn = RunService.PreRender:Connect(function() if not Player.Character then return end local bp = findGrabbedBP() if bp then local targetPos = CurrentCamera.CFrame.Position + CurrentCamera.CFrame.LookVector * myDistance bp.MaxForce = Vector3.new(500000, 500000, 500000) bp.P = 15000 bp.D = 2000 bp.Position = targetPos local part = bp.Parent if part and part:IsA("BasePart") then local model = part:FindFirstAncestorWhichIsA("Model") if model and model.PrimaryPart then model.PrimaryPart.CFrame = CFrame.new(targetPos) end end if not UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then grabRelease() end end end) else disableGrabScripts(false) if grabConn then grabConn:Disconnect(); grabConn = nil end if grabScrollConn then grabScrollConn:Disconnect(); grabScrollConn = nil end if grabClickConn then grabClickConn:Disconnect(); grabClickConn = nil end if grabReleaseConn then grabReleaseConn:Disconnect(); grabReleaseConn = nil end if grabDropConn then grabDropConn:Disconnect(); grabDropConn = nil end grabbedBP = nil grabModelRef = nil grabReleaseQueued = false end end staminaBg.MouseButton1Click:Connect(function() staminaToggled = not staminaToggled animateKnob(staminaKnob, staminaBg, staminaToggled) toggleInfiniteStamina(staminaToggled) end) unlockBg.MouseButton1Click:Connect(function() unlockToggled = not unlockToggled animateKnob(unlockKnob, unlockBg, unlockToggled) if unlockToggled ~= mouseUnlock then toggleMouseUnlock() end end) espBg.MouseButton1Click:Connect(function() espToggled = not espToggled animateKnob(espKnob, espBg, espToggled) itemFilterFrame.Visible = espToggled toggleEsp(espToggled) repositionLayout() end) enemyEspBg.MouseButton1Click:Connect(function() enemyEspToggled = not enemyEspToggled animateKnob(enemyEspKnob, enemyEspBg, enemyEspToggled) enemyFilterFrame.Visible = enemyEspToggled toggleEnemyEsp(enemyEspToggled) repositionLayout() end) antiBreakBg.MouseButton1Click:Connect(function() antiBreakToggled = not antiBreakToggled animateKnob(antiBreakKnob, antiBreakBg, antiBreakToggled) toggleAntiBreakArms(antiBreakToggled) end) grabBg.MouseButton1Click:Connect(function() grabToggled = not grabToggled animateKnob(grabKnob, grabBg, grabToggled) toggleGrab(grabToggled) end) repositionLayout() MainFrame.Position = UDim2.new(0.5, -140, 0.5, -MainFrame.Size.Y.Offset / 2) _G._GnomesH = { toggleStamina = function(v) staminaToggled = v; animateKnob(staminaKnob, staminaBg, staminaToggled); toggleStamina(staminaToggled) end, toggleFreeMouse = function(v) unlockToggled = v; animateKnob(unlockKnob, unlockBg, unlockToggled); toggleFreeMouse(unlockToggled) end, toggleItemEsp = function(v) espToggled = v; animateKnob(espKnob, espBg, espToggled); toggleItemEsp(espToggled) end, toggleEnemyEsp = function(v) enemyEspToggled = v; animateKnob(enemyEspKnob, enemyEspBg, enemyEspToggled); toggleEnemyEsp(enemyEspToggled) end, toggleAntiBreak = function(v) antiBreakToggled = v; animateKnob(antiBreakKnob, antiBreakBg, antiBreakToggled); toggleAntiBreakArms(antiBreakToggled) end, toggleGrab = function(v) grabToggled = v; animateKnob(grabKnob, grabBg, grabToggled); toggleGrab(grabToggled) end, } print("[Gnomes Hub] Loaded - Press X to free mouse, toggles in GUI")