local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TeleportService = game:GetService("TeleportService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local Mouse = LocalPlayer:GetMouse() local LootFolder = workspace:FindFirstChild("Filter") and workspace.Filter:FindFirstChild("SpawnedPiles") local OrigLight = {B = Lighting.Brightness, C = Lighting.ClockTime, A = Lighting.Ambient, S = Lighting.GlobalShadows} local espEnabled = true local espMode = "Highlight" local espColor = Color3.fromRGB(255, 0, 0) local espColorIndex = 1 local espColors = { Color3.fromRGB(255, 0, 0), Color3.fromRGB(0, 255, 0), Color3.fromRGB(0, 100, 255), Color3.fromRGB(255, 255, 0), Color3.fromRGB(255, 0, 255), Color3.fromRGB(0, 255, 255) } local espColorNames = {"Red", "Green", "Blue", "Yellow", "Pink", "Cyan"} local aimEnabled = false local fovSize = 120 local fovColor = Color3.fromRGB(255, 0, 0) local fovColorIndex = 1 local fovColors = { Color3.fromRGB(255, 0, 0), Color3.fromRGB(0, 255, 0), Color3.fromRGB(0, 100, 255), Color3.fromRGB(255, 255, 0), Color3.fromRGB(255, 0, 255), Color3.fromRGB(0, 255, 255) } local fovColorNames = {"Red", "Green", "Blue", "Yellow", "Pink", "Cyan"} local aimKey = Enum.UserInputType.MouseButton2 local isSettingAimKey = false local hitboxEnabled = false local hitboxMultiplier = 2.0 local originalSizes = {} local scrapEspEnabled = false local crateEspEnabled = false local safeEspEnabled = false local autoLockpick = false local menuKey = Enum.KeyCode.LeftAlt local isSettingMenuKey = false local screenGui = Instance.new("ScreenGui") screenGui.Parent = game.CoreGui screenGui.ResetOnSpawn = false screenGui.Name = "NikiHub" local mainFrame = Instance.new("Frame", screenGui) mainFrame.Size = UDim2.new(0, 650, 0, 600) mainFrame.Position = UDim2.new(0.5, -325, 0.5, -300) mainFrame.BackgroundColor3 = Color3.fromRGB(15, 25, 45) Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12) local topBar = Instance.new("Frame", mainFrame) topBar.Size = UDim2.new(1, 0, 0, 4) local hue = 0.6 RunService.RenderStepped:Connect(function() hue = hue + 0.002 if hue > 1 then hue = 0 end topBar.BackgroundColor3 = Color3.fromHSV(hue, 1, 1) end) local title = Instance.new("TextLabel", mainFrame) title.Size = UDim2.new(1, 0, 0, 45) title.BackgroundTransparency = 1 title.Text = "Niki Hub" title.Font = Enum.Font.GothamBold title.TextSize = 22 title.TextColor3 = Color3.new(0.8, 0.9, 1) local dragging = false local dragStart, dragFramePos title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position dragFramePos = mainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) title.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then local delta = input.Position - dragStart mainFrame.Position = UDim2.new(dragFramePos.X.Scale, dragFramePos.X.Offset + delta.X, dragFramePos.Y.Scale, dragFramePos.Y.Offset + delta.Y) end end) local tabPanel = Instance.new("Frame", mainFrame) tabPanel.Size = UDim2.new(1, -20, 0, 35) tabPanel.Position = UDim2.new(0, 10, 0, 50) tabPanel.BackgroundTransparency = 1 local tabs = {"ESP", "AIM", "HITBOX", "LOOT", "SETTINGS"} local tabButtons = {} local tabWidth = 115 for idx, name in ipairs(tabs) do local btn = Instance.new("TextButton", tabPanel) btn.Size = UDim2.new(0, tabWidth, 1, 0) btn.Position = UDim2.new(0, (idx-1)*(tabWidth+5), 0, 0) btn.Text = name btn.Font = Enum.Font.Gotham btn.TextSize = 14 btn.TextColor3 = Color3.new(1, 1, 1) btn.BackgroundColor3 = Color3.fromRGB(40, 60, 90) Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) tabButtons[idx] = btn end local contentHolder = Instance.new("Frame", mainFrame) contentHolder.Size = UDim2.new(1, -20, 1, -140) contentHolder.Position = UDim2.new(0, 10, 0, 90) contentHolder.BackgroundTransparency = 1 local espFrame = Instance.new("Frame", contentHolder) espFrame.Size = UDim2.new(1, 0, 1, 0) espFrame.BackgroundTransparency = 1 local aimFrame = Instance.new("Frame", contentHolder) aimFrame.Size = UDim2.new(1, 0, 1, 0) aimFrame.BackgroundTransparency = 1 aimFrame.Visible = false local hitboxFrame = Instance.new("Frame", contentHolder) hitboxFrame.Size = UDim2.new(1, 0, 1, 0) hitboxFrame.BackgroundTransparency = 1 hitboxFrame.Visible = false local lootFrame = Instance.new("Frame", contentHolder) lootFrame.Size = UDim2.new(1, 0, 1, 0) lootFrame.BackgroundTransparency = 1 lootFrame.Visible = false local settingsFrame = Instance.new("Frame", contentHolder) settingsFrame.Size = UDim2.new(1, 0, 1, 0) settingsFrame.BackgroundTransparency = 1 settingsFrame.Visible = false for i, btn in ipairs(tabButtons) do btn.MouseButton1Click:Connect(function() espFrame.Visible = (i == 1) aimFrame.Visible = (i == 2) hitboxFrame.Visible = (i == 3) lootFrame.Visible = (i == 4) settingsFrame.Visible = (i == 5) end) end local function createButton(parent, text, yPos) local btn = Instance.new("TextButton", parent) btn.Size = UDim2.new(0, 260, 0, 38) btn.Position = UDim2.new(.5, -130, 0, yPos) btn.Text = text btn.Font = Enum.Font.Gotham btn.TextSize = 14 btn.TextColor3 = Color3.new(1, 1, 1) btn.BackgroundColor3 = Color3.fromRGB(40, 60, 90) Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10) btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(.15), {BackgroundColor3 = Color3.fromRGB(60, 90, 130)}):Play() end) btn.MouseLeave:Connect(function() TweenService:Create(btn, TweenInfo.new(.15), {BackgroundColor3 = Color3.fromRGB(40, 60, 90)}):Play() end) return btn end local function createSlider(parent, label, min, max, default, yPos, onChange) local labelObj = Instance.new("TextLabel", parent) labelObj.Size = UDim2.new(0, 260, 0, 20) labelObj.Position = UDim2.new(.5, -130, 0, yPos) labelObj.BackgroundTransparency = 1 labelObj.Text = label .. ": " .. string.format("%.1f", default) labelObj.Font = Enum.Font.Gotham labelObj.TextSize = 14 labelObj.TextColor3 = Color3.fromRGB(200, 200, 255) local bg = Instance.new("Frame", parent) bg.Size = UDim2.new(0, 260, 0, 10) bg.Position = UDim2.new(.5, -130, 0, yPos + 20) bg.BackgroundColor3 = Color3.fromRGB(30, 50, 80) Instance.new("UICorner", bg).CornerRadius = UDim.new(0, 5) local fill = Instance.new("Frame", bg) fill.Size = UDim2.new((default-min)/(max-min), 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(100, 150, 255) Instance.new("UICorner", fill).CornerRadius = UDim.new(0, 5) local knob = Instance.new("TextButton", parent) knob.Size = UDim2.new(0, 20, 0, 20) knob.Position = UDim2.new(.5, -130 + ((default-min)/(max-min)*260) - 10, 0, yPos + 15) knob.BackgroundColor3 = Color3.new(1, 1, 1) knob.Text = "" knob.ZIndex = 2 Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0) local dragging = false local value = default knob.MouseButton1Down:Connect(function() dragging = true end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local mousePos = UserInputService:GetMouseLocation() local sliderX = bg.AbsolutePosition.X local rel = math.clamp(mousePos.X - sliderX, 0, bg.AbsoluteSize.X) local newVal = min + (rel / bg.AbsoluteSize.X) * (max - min) newVal = math.floor(newVal * 10) / 10 value = newVal fill.Size = UDim2.new((value-min)/(max-min), 0, 1, 0) knob.Position = UDim2.new(.5, -130 + ((value-min)/(max-min)*260) - 10, 0, yPos + 15) labelObj.Text = label .. ": " .. string.format("%.1f", value) onChange(value) end end) return labelObj end local function createToggle(parent, text, yPos, getter, setter) local label = Instance.new("TextLabel", parent) label.Size = UDim2.new(0, 150, 0, 25) label.Position = UDim2.new(0, 10, 0, yPos) label.BackgroundTransparency = 1 label.Text = text label.Font = Enum.Font.Gotham label.TextSize = 14 label.TextXAlignment = Enum.TextXAlignment.Left label.TextColor3 = Color3.new(1, 1, 1) local btn = Instance.new("TextButton", parent) btn.Size = UDim2.new(0, 60, 0, 25) btn.Position = UDim2.new(1, -70, 0, yPos) btn.Text = getter() and "ON" or "OFF" btn.Font = Enum.Font.GothamBold btn.TextSize = 14 btn.BackgroundColor3 = getter() and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0) btn.TextColor3 = Color3.new(1, 1, 1) Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5) btn.MouseButton1Click:Connect(function() setter(not getter()) btn.Text = getter() and "ON" or "OFF" btn.BackgroundColor3 = getter() and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0) end) return btn end local espOnBtn = createButton(espFrame, "ESP ON", 20) local modeBtn = createButton(espFrame, "Mode: " .. espMode, 70) local colorBtn = createButton(espFrame, "Box Color: " .. espColorNames[espColorIndex], 120) local boxLines = {} local function removeAllHighlights() for _, plr in pairs(Players:GetPlayers()) do if plr.Character then local hl = plr.Character:FindFirstChildOfClass("Highlight") if hl then hl:Destroy() end end end end local function removeAllBoxes() for plr, lines in pairs(boxLines) do for _, line in pairs(lines) do line:Remove() end end boxLines = {} end local function findBodyPart(character) if not character then return nil end local root = character:FindFirstChild("HumanoidRootPart") if root then return root end local torso = character:FindFirstChild("Torso") if torso then return torso end local head = character:FindFirstChild("Head") if head then return head end for _, child in pairs(character:GetChildren()) do if child:IsA("BasePart") then return child end end return nil end local function createHighlightForPlayer(plr) if plr == LocalPlayer then return end if not plr.Character then return end local old = plr.Character:FindFirstChildOfClass("Highlight") if old then old:Destroy() end local hl = Instance.new("Highlight") hl.Parent = plr.Character hl.FillTransparency = 0.5 hl.OutlineTransparency = 0 hl.FillColor = espColor hl.OutlineColor = espColor end local function createBoxLinesForPlayer(plr) if boxLines[plr] then return end local lines = {} for i = 1, 4 do lines[i] = Drawing.new("Line") lines[i].Thickness = 2 lines[i].Color = espColor lines[i].Visible = false end boxLines[plr] = lines end local function updateBoxes() if not espEnabled or espMode ~= "Box" then for _, lines in pairs(boxLines) do for _, line in pairs(lines) do line.Visible = false end end return end for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local part = findBodyPart(plr.Character) if part then createBoxLinesForPlayer(plr) local pos, onScreen = Camera:WorldToViewportPoint(part.Position) if onScreen then local dist = (Camera.CFrame.Position - part.Position).Magnitude local height = 500 / dist local width = height * 0.6 local left = pos.X - width/2 local right = pos.X + width/2 local top = pos.Y - height/2 local bottom = pos.Y + height/2 local lines = boxLines[plr] lines[1].From = Vector2.new(left, top) lines[1].To = Vector2.new(right, top) lines[2].From = Vector2.new(right, top) lines[2].To = Vector2.new(right, bottom) lines[3].From = Vector2.new(right, bottom) lines[3].To = Vector2.new(left, bottom) lines[4].From = Vector2.new(left, bottom) lines[4].To = Vector2.new(left, top) for _, line in pairs(lines) do line.Color = espColor line.Visible = true end else if boxLines[plr] then for _, line in pairs(boxLines[plr]) do line.Visible = false end end end else if boxLines[plr] then for _, line in pairs(boxLines[plr]) do line.Visible = false end end end else if boxLines[plr] then for _, line in pairs(boxLines[plr]) do line.Visible = false end end end end end local function refreshESP() if not espEnabled then removeAllHighlights() removeAllBoxes() return end if espMode == "Highlight" then removeAllBoxes() for _, plr in pairs(Players:GetPlayers()) do createHighlightForPlayer(plr) end else removeAllHighlights() end end Players.PlayerAdded:Connect(function(plr) plr.CharacterAdded:Connect(function() task.wait(0.5) if espEnabled and espMode == "Highlight" then createHighlightForPlayer(plr) end end) end) Players.PlayerRemoving:Connect(function(plr) if boxLines[plr] then for _, line in pairs(boxLines[plr]) do line:Remove() end boxLines[plr] = nil end end) for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then plr.CharacterAdded:Connect(function() task.wait(0.5) if espEnabled and espMode == "Highlight" then createHighlightForPlayer(plr) end end) end end LocalPlayer.CharacterAdded:Connect(function() task.wait(1) if espEnabled and espMode == "Highlight" then for _, plr in pairs(Players:GetPlayers()) do createHighlightForPlayer(plr) end end end) espOnBtn.MouseButton1Click:Connect(function() espEnabled = not espEnabled espOnBtn.Text = espEnabled and "ESP ON" or "ESP OFF" refreshESP() end) modeBtn.MouseButton1Click:Connect(function() espMode = (espMode == "Highlight") and "Box" or "Highlight" modeBtn.Text = "Mode: " .. espMode refreshESP() end) colorBtn.MouseButton1Click:Connect(function() espColorIndex = espColorIndex + 1 if espColorIndex > #espColors then espColorIndex = 1 end espColor = espColors[espColorIndex] colorBtn.Text = "Box Color: " .. espColorNames[espColorIndex] for plr, lines in pairs(boxLines) do for _, line in pairs(lines) do line.Color = espColor end end refreshESP() end) -- ========== AIMBOT SECTION (FIXED) ========== -- Створюємо FOV круг ДО слайдера, щоб він був доступний при зміні розміру local fovCircle = Drawing.new("Circle") fovCircle.Radius = fovSize fovCircle.Thickness = 2 fovCircle.Color = fovColor fovCircle.Visible = false fovCircle.NumSides = 64 local aimOnBtn = createButton(aimFrame, "AIM OFF", 20) local aimKeyBtn = createButton(aimFrame, "Aim Key: RMB", 70) local fovColorBtn = createButton(aimFrame, "FOV Color: " .. fovColorNames[fovColorIndex], 120) createSlider(aimFrame, "FOV Size", 50, 300, fovSize, 170, function(val) fovSize = val if fovCircle then fovCircle.Radius = fovSize end end) RunService.RenderStepped:Connect(function() if fovCircle then fovCircle.Position = Vector2.new(Mouse.X, Mouse.Y) end updateBoxes() if aimEnabled then local keyPressed = false if typeof(aimKey) == "EnumItem" then if aimKey.EnumType == Enum.UserInputType then keyPressed = UserInputService:IsMouseButtonPressed(aimKey) else keyPressed = UserInputService:IsKeyDown(aimKey) end end if keyPressed then local closestTarget = nil local closestDist = fovSize for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("Head") then local headPos = plr.Character.Head.Position local vec, onScr = Camera:WorldToViewportPoint(headPos) if onScr then local dist = (Vector2.new(vec.X, vec.Y) - Vector2.new(Mouse.X, Mouse.Y)).Magnitude if dist < closestDist then closestDist = dist closestTarget = plr.Character.Head end end end end if closestTarget then Camera.CFrame = CFrame.new(Camera.CFrame.Position, closestTarget.Position) end end end end) aimOnBtn.MouseButton1Click:Connect(function() aimEnabled = not aimEnabled aimOnBtn.Text = aimEnabled and "AIM ON" or "AIM OFF" fovCircle.Visible = aimEnabled end) aimKeyBtn.MouseButton1Click:Connect(function() aimKeyBtn.Text = "Press key..." isSettingAimKey = true end) fovColorBtn.MouseButton1Click:Connect(function() fovColorIndex = fovColorIndex + 1 if fovColorIndex > #fovColors then fovColorIndex = 1 end fovColor = fovColors[fovColorIndex] fovColorBtn.Text = "FOV Color: " .. fovColorNames[fovColorIndex] if fovCircle then fovCircle.Color = fovColor end end) -- ========== END AIMBOT SECTION ========== local hitboxToggle = createButton(hitboxFrame, "HITBOX OFF", 20) createSlider(hitboxFrame, "Multiplier", 1.0, 5.0, hitboxMultiplier, 70, function(val) hitboxMultiplier = val if hitboxEnabled then applyHitboxToAll() end end) local infoText = Instance.new("TextLabel", hitboxFrame) infoText.Size = UDim2.new(0, 260, 0, 40) infoText.Position = UDim2.new(.5, -130, 0, 120) infoText.BackgroundTransparency = 1 infoText.Text = "Note: Hitboxes apply only to new players and respawns.\nExisting players are not affected." infoText.Font = Enum.Font.Gotham infoText.TextSize = 12 infoText.TextColor3 = Color3.fromRGB(200, 200, 255) infoText.TextWrapped = true local function applyHitboxToCharacter(character) if not character then return end for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then if not originalSizes[part] then originalSizes[part] = part.Size end part.Size = originalSizes[part] * hitboxMultiplier end end end local function restoreCharacterHitbox(character) if not character then return end for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") and originalSizes[part] then part.Size = originalSizes[part] originalSizes[part] = nil end end end local function applyHitboxToAll() for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then applyHitboxToCharacter(player.Character) end end end local function restoreAll() for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then restoreCharacterHitbox(player.Character) end end originalSizes = {} end hitboxToggle.MouseButton1Click:Connect(function() hitboxEnabled = not hitboxEnabled if hitboxEnabled then hitboxToggle.Text = "HITBOX ON" hitboxToggle.BackgroundColor3 = Color3.fromRGB(0, 100, 200) applyHitboxToAll() else hitboxToggle.Text = "HITBOX OFF" hitboxToggle.BackgroundColor3 = Color3.fromRGB(40, 60, 90) restoreAll() end end) local function onCharacterAdded(character) task.wait(0.5) if hitboxEnabled then applyHitboxToCharacter(character) end end Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(onCharacterAdded) if player.Character then onCharacterAdded(player.Character) end end) for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer then player.CharacterAdded:Connect(onCharacterAdded) end end task.spawn(function() task.wait(2) if hitboxEnabled then applyHitboxToAll() end end) local function applyLootHighlight(obj) if not (obj:IsA("BasePart") or obj:IsA("Model")) then return end if (obj.Name == "S1" or obj.Name == "S2") then local hl = obj:FindFirstChild("ScrapHL") or Instance.new("Highlight") hl.Name = "ScrapHL"; hl.FillColor = Color3.fromRGB(255, 0, 0); hl.Parent = obj; hl.Enabled = scrapEspEnabled elseif (obj.Name == "SupplyCrate" or obj.Name == "C1") then local hl = obj:FindFirstChild("CrateHL") or Instance.new("Highlight") hl.Name = "CrateHL"; hl.FillTransparency = 0.5; hl.OutlineTransparency = 0; hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop; hl.Parent = obj if obj.Name == "SupplyCrate" then hl.FillColor = Color3.fromRGB(255, 255, 0) elseif obj.Name == "C1" then local isT = false for _, c in pairs(obj:GetChildren()) do if c:IsA("MeshPart") and c.TextureID and c.TextureID:find("11157915894") then isT = true; break end end hl.FillColor = isT and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0) end hl.Enabled = crateEspEnabled end end local function updateLootESP() if LootFolder then for _, v in pairs(LootFolder:GetChildren()) do if v.Name == "S1" or v.Name == "S2" then applyLootHighlight(v) elseif v.Name == "SupplyCrate" or v.Name == "C1" then applyLootHighlight(v) end end end end local function updateSafeESP() local safeFolder = workspace:FindFirstChild("Map") and workspace.Map:FindFirstChild("BredMakurz") if not safeFolder then return end for _, obj in pairs(safeFolder:GetChildren()) do if obj:IsA("Model") and (obj.Name:find("SmallSafe") or obj.Name:find("MediumSafe")) then local billboard = obj:FindFirstChild("SafeUI") if safeEspEnabled then if not billboard then billboard = Instance.new("BillboardGui") billboard.Name = "SafeUI"; billboard.AlwaysOnTop = true; billboard.Size = UDim2.new(0, 100, 0, 30); billboard.StudsOffset = Vector3.new(0, 3, 0); billboard.Parent = obj local label = Instance.new("TextLabel", billboard); label.Name = "SafeLabel"; label.BackgroundTransparency = 1; label.Size = UDim2.new(1, 0, 1, 0); label.Font = Enum.Font.Gotham; label.TextSize = 14; label.TextStrokeTransparency = 0; label.TextColor3 = Color3.new(1,1,1) end local values = obj:FindFirstChild("Values") local brokenVal = values and values:FindFirstChild("Broken") local isBroken = (brokenVal and brokenVal.Value == true) local label = billboard.SafeLabel label.Text = obj.Name:find("Small") and "Small Safe" or "Medium Safe" label.TextColor3 = isBroken and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0) billboard.Enabled = true else if billboard then billboard.Enabled = false end end end end end task.spawn(function() local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") while true do task.wait() if autoLockpick then local lpgui = PlayerGui:FindFirstChild('LockpickGUI') if lpgui and lpgui:FindFirstChild("MF") then pcall(function() local B1 = lpgui.MF.LP_Frame.Frames.B1.Bar.Selection local B2 = lpgui.MF.LP_Frame.Frames.B2.Bar.Selection local B3 = lpgui.MF.LP_Frame.Frames.B3.Bar.Selection if checkLockpick then checkLockpick(B1, B2, B3) end end) end end end end) createToggle(lootFrame, "Scrap ESP", 10, function() return scrapEspEnabled end, function(v) scrapEspEnabled = v; updateLootESP() end) createToggle(lootFrame, "Crate ESP", 50, function() return crateEspEnabled end, function(v) crateEspEnabled = v; updateLootESP() end) createToggle(lootFrame, "Safe ESP", 90, function() return safeEspEnabled end, function(v) safeEspEnabled = v; updateSafeESP() end) createToggle(lootFrame, "Auto Lockpick", 130, function() return autoLockpick end, function(v) autoLockpick = v end) local menuKeyBtn = createButton(settingsFrame, "Menu Key: LeftAlt", 20) local rejoinBtn = createButton(settingsFrame, "Rejoin", 70) menuKeyBtn.MouseButton1Click:Connect(function() menuKeyBtn.Text = "Press key..." isSettingMenuKey = true end) rejoinBtn.MouseButton1Click:Connect(function() TeleportService:Teleport(game.PlaceId, LocalPlayer) end) UserInputService.InputBegan:Connect(function(inp, gProc) if gProc then return end if isSettingMenuKey then if inp.KeyCode ~= Enum.KeyCode.Unknown then menuKey = inp.KeyCode menuKeyBtn.Text = "Menu Key: " .. inp.KeyCode.Name isSettingMenuKey = false elseif inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.MouseButton2 then menuKey = inp.UserInputType menuKeyBtn.Text = "Menu Key: " .. tostring(inp.UserInputType):gsub("Enum.UserInputType.", "") isSettingMenuKey = false end return end if isSettingAimKey then if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.MouseButton2 then aimKey = inp.UserInputType aimKeyBtn.Text = "Aim Key: " .. tostring(inp.UserInputType):gsub("Enum.UserInputType.", "") isSettingAimKey = false elseif inp.KeyCode ~= Enum.KeyCode.Unknown then aimKey = inp.KeyCode aimKeyBtn.Text = "Aim Key: " .. inp.KeyCode.Name isSettingAimKey = false end return end if inp.KeyCode == menuKey or inp.UserInputType == menuKey then mainFrame.Visible = not mainFrame.Visible end end) refreshESP() if LootFolder then LootFolder.ChildAdded:Connect(function(d) task.defer(function() applyLootHighlight(d) end) end) updateLootESP() end task.spawn(function() while true do task.wait(0.5) if safeEspEnabled then updateSafeESP() end end end) print("=== Niki Hub loaded ===") print("Press LeftAlt to open menu.")