-- [[ 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=6af0ca19aff62db247c7e52a"))() end) end) --[[rscripts:analytics:end]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local TeleportService = game:GetService("TeleportService") local VirtualUser = game:GetService("VirtualUser") local Workspace = game:GetService("Workspace") local lp = Players.LocalPlayer local env = getgenv() if env.BH_CLEANUP then env.BH_CLEANUP() end local conns = {} local function track(c) table.insert(conns, c) return c end -- Стан local S = { speed = false, speedVal = 60, jump = false, jumpVal = 100, infJump = false, fly = false, flyVal = 80, noclip = false, esp = false, bright = false, zoom = false, afk = true, } local defaultWalk, defaultJump = 16, 50 local function getHum() local c = lp.Character return c and c:FindFirstChildOfClass("Humanoid") end local function getRoot() local c = lp.Character return c and c:FindFirstChild("HumanoidRootPart") end -- Політ local flyBV, flyBG local function stopFly() if flyBV then flyBV:Destroy() flyBV = nil end if flyBG then flyBG:Destroy() flyBG = nil end local hum = getHum() if hum then hum.PlatformStand = false end end local function startFly() local root, hum = getRoot(), getHum() if not root or not hum then return end stopFly() flyBV = Instance.new("BodyVelocity") flyBV.MaxForce = Vector3.new(1e9, 1e9, 1e9) flyBV.Velocity = Vector3.new(0, 0, 0) flyBV.Parent = root flyBG = Instance.new("BodyGyro") flyBG.MaxTorque = Vector3.new(1e9, 1e9, 1e9) flyBG.P = 9e4 flyBG.CFrame = root.CFrame flyBG.Parent = root hum.PlatformStand = true end -- ESP local espObjs = {} local function clearESP(plr) local o = espObjs[plr] if o then for _, i in ipairs(o) do i:Destroy() end espObjs[plr] = nil end end local function applyESP(plr) clearESP(plr) if not S.esp or plr == lp then return end local char = plr.Character if not char then return end local objs = {} local hl = Instance.new("Highlight") hl.Adornee = char hl.FillColor = Color3.fromRGB(255, 60, 60) hl.FillTransparency = 0.6 hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Parent = char table.insert(objs, hl) local head = char:FindFirstChild("Head") if head then local bb = Instance.new("BillboardGui") bb.Adornee = head bb.Size = UDim2.fromOffset(140, 24) bb.StudsOffset = Vector3.new(0, 2.5, 0) bb.AlwaysOnTop = true local t = Instance.new("TextLabel") t.Size = UDim2.new(1, 0, 1, 0) t.BackgroundTransparency = 1 t.Text = plr.DisplayName .. " (@" .. plr.Name .. ")" t.TextColor3 = Color3.fromRGB(255, 255, 255) t.TextStrokeTransparency = 0 t.Font = Enum.Font.GothamBold t.TextSize = 13 t.Parent = bb bb.Parent = head table.insert(objs, bb) end espObjs[plr] = objs end local function refreshAllESP() for _, plr in ipairs(Players:GetPlayers()) do if S.esp then applyESP(plr) else clearESP(plr) end end end -- Освітлення local origLight = { Brightness = Lighting.Brightness, FogEnd = Lighting.FogEnd, GlobalShadows = Lighting.GlobalShadows, Ambient = Lighting.Ambient, } local function restoreLight() Lighting.Brightness = origLight.Brightness Lighting.FogEnd = origLight.FogEnd Lighting.GlobalShadows = origLight.GlobalShadows Lighting.Ambient = origLight.Ambient end -- Телепорт / огляд local function tpTo(plr) local root = getRoot() local tr = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") if root and tr then root.CFrame = tr.CFrame * CFrame.new(0, 0, 3) end end local function viewPlayer(plr) local h = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid") if h then Workspace.CurrentCamera.CameraSubject = h end end local function viewSelf() local h = getHum() if h then Workspace.CurrentCamera.CameraSubject = h end end local function giveTPTool() local tool = Instance.new("Tool") tool.Name = "TP-інструмент" tool.RequiresHandle = false tool.CanBeDropped = false tool.Activated:Connect(function() local root = getRoot() local mouse = lp:GetMouse() if root and mouse.Hit then root.CFrame = CFrame.new(mouse.Hit.Position + Vector3.new(0, 3, 0)) end end) tool.Parent = lp:WaitForChild("Backpack") end -- Головні цикли track(RunService.Heartbeat:Connect(function() local hum = getHum() if hum then if S.speed then hum.WalkSpeed = S.speedVal end if S.jump then hum.UseJumpPower = true hum.JumpPower = S.jumpVal end end if S.bright then Lighting.Brightness = 2 Lighting.ClockTime = 14 Lighting.FogEnd = 1e6 Lighting.GlobalShadows = false Lighting.Ambient = Color3.fromRGB(180, 180, 180) end end)) track(RunService.RenderStepped:Connect(function() if S.fly and flyBV and flyBG then local hum = getHum() local cam = Workspace.CurrentCamera if not hum then return end local move = cam.CFrame:VectorToObjectSpace(hum.MoveDirection) local dir = cam.CFrame.LookVector * -move.Z + cam.CFrame.RightVector * move.X if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end flyBV.Velocity = dir * S.flyVal flyBG.CFrame = cam.CFrame end end)) track(RunService.Stepped:Connect(function() if S.noclip then local c = lp.Character if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end end end)) track(UserInputService.JumpRequest:Connect(function() if S.infJump then local h = getHum() if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end end)) track(lp.Idled:Connect(function() if S.afk then VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new(0, 0)) end end)) track(lp.CharacterAdded:Connect(function(char) char:WaitForChild("HumanoidRootPart") char:WaitForChild("Humanoid") if S.fly then startFly() end end)) -- ESP для нових гравців local function hookPlayer(plr) track(plr.CharacterAdded:Connect(function() task.wait(0.5) if S.esp then applyESP(plr) end end)) end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= lp then hookPlayer(plr) end end -- GUI local ACCENT = Color3.fromRGB(88, 101, 242) local ROW = Color3.fromRGB(38, 38, 48) local WHITE = Color3.fromRGB(255, 255, 255) local function new(class, props, parent) local o = Instance.new(class) for k, v in pairs(props) do o[k] = v end o.Parent = parent return o end local function corner(o, r) new("UICorner", {CornerRadius = UDim.new(0, r or 8)}, o) end local gui = new("ScreenGui", { Name = "BHHub", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling, }, lp:WaitForChild("PlayerGui")) local main = new("Frame", { Size = UDim2.fromOffset(310, 410), Position = UDim2.fromOffset(70, 60), BackgroundColor3 = Color3.fromRGB(24, 24, 30), BorderSizePixel = 0, Active = true, }, gui) corner(main, 10) local title = new("TextLabel", { Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = Color3.fromRGB(34, 34, 44), BorderSizePixel = 0, Text = "Brookhaven RP Hub", TextColor3 = WHITE, Font = Enum.Font.GothamBold, TextSize = 15, Active = true, }, main) corner(title, 10) local tabBar = new("Frame", { Size = UDim2.new(1, -16, 0, 28), Position = UDim2.fromOffset(8, 42), BackgroundTransparency = 1, }, main) new("UIListLayout", { FillDirection = Enum.FillDirection.Horizontal, Padding = UDim.new(0, 6), }, tabBar) local function makePage() local p = new("ScrollingFrame", { Size = UDim2.new(1, -16, 1, -82), Position = UDim2.fromOffset(8, 76), BackgroundTransparency = 1, BorderSizePixel = 0, ScrollBarThickness = 4, CanvasSize = UDim2.new(0, 0, 0, 0), AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = false, }, main) new("UIListLayout", { Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder, }, p) return p end local pageFuncs = makePage() local pagePlayers = makePage() local tabButtons = {} local function addTab(text, page) local b = new("TextButton", { Size = UDim2.new(0.5, -3, 1, 0), BackgroundColor3 = ROW, Text = text, TextColor3 = WHITE, Font = Enum.Font.GothamMedium, TextSize = 13, BorderSizePixel = 0, }, tabBar) corner(b, 6) table.insert(tabButtons, {btn = b, page = page}) b.MouseButton1Click:Connect(function() for _, t in ipairs(tabButtons) do t.page.Visible = (t.page == page) t.btn.BackgroundColor3 = (t.page == page) and ACCENT or ROW end end) return b end local tabF = addTab("Функції", pageFuncs) addTab("Гравці", pagePlayers) local function addToggle(page, text, default, cb) local btn = new("TextButton", { Size = UDim2.new(1, -8, 0, 32), BackgroundColor3 = ROW, Text = "", AutoButtonColor = false, BorderSizePixel = 0, }, page) corner(btn) new("TextLabel", { Size = UDim2.new(1, -60, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, Text = text, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = WHITE, Font = Enum.Font.Gotham, TextSize = 13, }, btn) local ind = new("Frame", { Size = UDim2.fromOffset(34, 16), Position = UDim2.new(1, -44, 0.5, -8), BorderSizePixel = 0, }, btn) corner(ind, 8) local knob = new("Frame", { Size = UDim2.fromOffset(12, 12), BackgroundColor3 = WHITE, BorderSizePixel = 0, }, ind) corner(knob, 6) local on = default local function render() ind.BackgroundColor3 = on and ACCENT or Color3.fromRGB(70, 70, 80) knob.Position = on and UDim2.fromOffset(20, 2) or UDim2.fromOffset(2, 2) end render() btn.MouseButton1Click:Connect(function() on = not on render() cb(on) end) end local function addInput(page, text, default, cb) local row = new("Frame", { Size = UDim2.new(1, -8, 0, 32), BackgroundColor3 = ROW, BorderSizePixel = 0, }, page) corner(row) new("TextLabel", { Size = UDim2.new(1, -90, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, Text = text, TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = WHITE, Font = Enum.Font.Gotham, TextSize = 13, }, row) local last = default local box = new("TextBox", { Size = UDim2.fromOffset(64, 22), Position = UDim2.new(1, -74, 0.5, -11), BackgroundColor3 = Color3.fromRGB(55, 55, 68), Text = tostring(default), TextColor3 = WHITE, Font = Enum.Font.Gotham, TextSize = 13, ClearTextOnFocus = false, BorderSizePixel = 0, }, row) corner(box, 6) box.FocusLost:Connect(function() local n = tonumber(box.Text) if n and n >= 0 and n <= 5000 then last = n cb(n) end box.Text = tostring(last) end) end local function addButton(page, text, cb, order) local b = new("TextButton", { Size = UDim2.new(1, -8, 0, 32), BackgroundColor3 = ACCENT, Text = text, TextColor3 = WHITE, Font = Enum.Font.GothamMedium, TextSize = 13, BorderSizePixel = 0, LayoutOrder = order or 0, }, page) corner(b) b.MouseButton1Click:Connect(cb) return b end -- Вкладка «Функції» addToggle(pageFuncs, "Швидкість", false, function(on) S.speed = on local h = getHum() if on then if h then defaultWalk = h.WalkSpeed end elseif h then h.WalkSpeed = defaultWalk end end) addInput(pageFuncs, "Значення швидкості", S.speedVal, function(n) S.speedVal = n end) addToggle(pageFuncs, "Сила стрибка", false, function(on) S.jump = on local h = getHum() if on then if h then defaultJump = h.JumpPower end elseif h then h.UseJumpPower = true h.JumpPower = defaultJump end end) addInput(pageFuncs, "Значення стрибка", S.jumpVal, function(n) S.jumpVal = n end) addToggle(pageFuncs, "Нескінченний стрибок", false, function(on) S.infJump = on end) addToggle(pageFuncs, "Політ (Space / Shift)", false, function(on) S.fly = on if on then startFly() else stopFly() end end) addInput(pageFuncs, "Швидкість польоту", S.flyVal, function(n) S.flyVal = n end) addToggle(pageFuncs, "Noclip", false, function(on) S.noclip = on end) addToggle(pageFuncs, "ESP гравців", false, function(on) S.esp = on refreshAllESP() end) addToggle(pageFuncs, "Яскраве світло", false, function(on) S.bright = on if not on then restoreLight() end end) addToggle(pageFuncs, "Необмежений зум камери", false, function(on) S.zoom = on lp.CameraMaxZoomDistance = on and 1000 or 128 end) addToggle(pageFuncs, "Анти-AFK", true, function(on) S.afk = on end) addButton(pageFuncs, "Отримати TP-інструмент (клік = телепорт)", giveTPTool) addButton(pageFuncs, "Скинути персонажа", function() local h = getHum() if h then h.Health = 0 end end) addButton(pageFuncs, "Перезайти на сервер", function() TeleportService:Teleport(game.PlaceId, lp) end) -- Вкладка «Гравці» addButton(pagePlayers, "Повернути камеру на себе", viewSelf, 0) local function refreshPlayers() for _, c in ipairs(pagePlayers:GetChildren()) do if c.Name == "PlayerRow" then c:Destroy() end end for _, plr in ipairs(Players:GetPlayers()) do if plr ~= lp then local row = new("Frame", { Name = "PlayerRow", Size = UDim2.new(1, -8, 0, 32), BackgroundColor3 = ROW, BorderSizePixel = 0, LayoutOrder = 1, }, pagePlayers) corner(row) new("TextLabel", { Size = UDim2.new(1, -110, 1, 0), Position = UDim2.fromOffset(10, 0), BackgroundTransparency = 1, Text = plr.DisplayName, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, TextColor3 = WHITE, Font = Enum.Font.Gotham, TextSize = 13, }, row) local tp = new("TextButton", { Size = UDim2.fromOffset(36, 22), Position = UDim2.new(1, -94, 0.5, -11), BackgroundColor3 = ACCENT, Text = "TP", TextColor3 = WHITE, Font = Enum.Font.GothamMedium, TextSize = 12, BorderSizePixel = 0, }, row) corner(tp, 6) local vw = new("TextButton", { Size = UDim2.fromOffset(46, 22), Position = UDim2.new(1, -54, 0.5, -11), BackgroundColor3 = Color3.fromRGB(70, 70, 86), Text = "Огляд", TextColor3 = WHITE, Font = Enum.Font.GothamMedium, TextSize = 12, BorderSizePixel = 0, }, row) corner(vw, 6) tp.MouseButton1Click:Connect(function() tpTo(plr) end) vw.MouseButton1Click:Connect(function() viewPlayer(plr) end) end end end refreshPlayers() track(Players.PlayerAdded:Connect(function(plr) hookPlayer(plr) task.defer(refreshPlayers) end)) track(Players.PlayerRemoving:Connect(function(plr) clearESP(plr) task.defer(refreshPlayers) end)) -- Перемикач видимості local toggleBtn = new("TextButton", { Size = UDim2.fromOffset(40, 40), Position = UDim2.new(0, 10, 0.5, -20), BackgroundColor3 = ACCENT, Text = "☰", TextColor3 = WHITE, Font = Enum.Font.GothamBold, TextSize = 20, BorderSizePixel = 0, }, gui) corner(toggleBtn, 20) toggleBtn.MouseButton1Click:Connect(function() main.Visible = not main.Visible end) track(UserInputService.InputBegan:Connect(function(i, gp) if not gp and i.KeyCode == Enum.KeyCode.RightControl then main.Visible = not main.Visible end end)) -- Перетягування вікна local dragging, dragStart, startPos title.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = i.Position startPos = main.Position i.Changed:Connect(function() if i.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) track(UserInputService.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - dragStart main.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y ) end end)) -- Вивантаження local function cleanup() for _, c in ipairs(conns) do c:Disconnect() end S.fly = false stopFly() for plr in pairs(espObjs) do clearESP(plr) end restoreLight() lp.CameraMaxZoomDistance = 128 local h = getHum() if h then h.WalkSpeed = defaultWalk h.UseJumpPower = true h.JumpPower = defaultJump end gui:Destroy() env.BH_CLEANUP = nil end env.BH_CLEANUP = cleanup addButton(pageFuncs, "Вивантажити скрипт", cleanup) pageFuncs.Visible = true tabF.BackgroundColor3 = ACCENT