-- KS HUB - Estilo Cartola Hub (Brookhaven - Final 2026)
-- Créditos como primeira aba | Bolinha KS arrastável | Discord + redes sociais
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TeleportService = game:GetService("TeleportService")
local player = Players.LocalPlayer
local gui = Instance.new("ScreenGui")
gui.Name = "KS_HUB_Cartola_Final"
gui.ResetOnSpawn = false
gui.Parent = game:GetService("CoreGui")
print("KS HUB v2 - Brookhaven 2026 - Carregando...")
-- // Bolinha KS (arrastável)
local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(0, 70, 0, 70)
toggle.Position = UDim2.new(0, 20, 0.5, -35)
toggle.BackgroundColor3 = Color3.fromRGB(15, 15, 25)
toggle.Text = "KS"
toggle.TextColor3 = Color3.fromRGB(180, 180, 255)
toggle.Font = Enum.Font.GothamBold
toggle.TextSize = 26
toggle.Parent = gui
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(1, 0)
toggleCorner.Parent = toggle
-- Sistema de drag
local dragging, dragInput, dragStart, startPos
toggle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = toggle.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
toggle.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
RunService.RenderStepped:Connect(function()
if dragging and dragInput then
local delta = dragInput.Position - dragStart
toggle.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
toggle.MouseEnter:Connect(function()
TweenService:Create(toggle, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(35, 35, 60)}):Play()
end)
toggle.MouseLeave:Connect(function()
TweenService:Create(toggle, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(15, 15, 25)}):Play()
end)
-- // Menu principal
local menu = Instance.new("Frame")
menu.Size = UDim2.new(0.42, 0, 0.72, 0)
menu.Position = UDim2.new(0.29, 0, 0.14, 0)
menu.BackgroundColor3 = Color3.fromRGB(18, 18, 28)
menu.BorderSizePixel = 0
menu.Visible = false
menu.Parent = gui
local menuCorner = Instance.new("UICorner")
menuCorner.CornerRadius = UDim.new(0, 12)
menuCorner.Parent = menu
local menuStroke = Instance.new("UIStroke")
menuStroke.Color = Color3.fromRGB(60, 60, 90)
menuStroke.Thickness = 2
menuStroke.Parent = menu
-- Título
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundColor3 = Color3.fromRGB(25, 25, 40)
title.Text = "KS HUB • Brookhaven"
title.TextColor3 = Color3.fromRGB(200, 200, 255)
title.Font = Enum.Font.GothamBlack
title.TextSize = 22
title.Parent = menu
-- Botão X
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 40, 0, 40)
closeBtn.Position = UDim2.new(1, -50, 0, 2)
closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.new(1,1,1)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 20
closeBtn.Parent = title
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeBtn
-- Abas laterais
local tabsFrame = Instance.new("ScrollingFrame")
tabsFrame.Size = UDim2.new(0.35, 0, 1, -45)
tabsFrame.Position = UDim2.new(0, 0, 0, 45)
tabsFrame.BackgroundTransparency = 1
tabsFrame.ScrollBarThickness = 0
tabsFrame.Parent = menu
local tabsList = Instance.new("UIListLayout")
tabsList.SortOrder = Enum.SortOrder.LayoutOrder
tabsList.Padding = UDim.new(0, 6)
tabsList.Parent = tabsFrame
-- Área de conteúdo
local content = Instance.new("ScrollingFrame")
content.Size = UDim2.new(0.65, 0, 1, -45)
content.Position = UDim2.new(0.35, 0, 0, 45)
content.BackgroundTransparency = 1
content.ScrollBarThickness = 5
content.ScrollBarImageColor3 = Color3.fromRGB(90, 90, 120)
content.ScrollingDirection = Enum.ScrollingDirection.Y
content.CanvasSize = UDim2.new(0, 0, 0, 0)
content.Parent = menu
local contentList = Instance.new("UIListLayout")
contentList.SortOrder = Enum.SortOrder.LayoutOrder
contentList.Padding = UDim.new(0, 10)
contentList.Parent = content
contentList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
content.CanvasSize = UDim2.new(0, 0, 0, contentList.AbsoluteContentSize.Y + 50)
end)
-- Funções auxiliares
local function createTabButton(name)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -10, 0, 45)
btn.BackgroundColor3 = Color3.fromRGB(28, 28, 40)
btn.Text = name
btn.TextColor3 = Color3.fromRGB(180, 180, 220)
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 16
btn.Parent = tabsFrame
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = btn
return btn
end
local function createFunctionButton(text, callback, toggleable)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -20, 0, 55)
btn.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
btn.Text = text
btn.TextColor3 = Color3.fromRGB(220, 220, 255)
btn.Font = Enum.Font.Gotham
btn.TextSize = 15
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.Parent = content
local pad = Instance.new("UIPadding", btn)
pad.PaddingLeft = UDim.new(0, 15)
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = btn
local state = false
local function updateVisual()
if toggleable then
btn.BackgroundColor3 = state and Color3.fromRGB(60, 90, 60) or Color3.fromRGB(35, 35, 50)
end
end
btn.MouseButton1Click:Connect(function()
if toggleable then
state = not state
updateVisual()
end
if callback then callback(state) end
if not toggleable then
StarterGui:SetCore("SendNotification", {
Title = "KS HUB",
Text = text .. " executado!",
Duration = 2.5
})
end
end)
btn.MouseEnter:Connect(function()
if not (toggleable and state) then
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(50, 50, 70)}):Play()
end
end)
btn.MouseLeave:Connect(function()
if not (toggleable and state) then
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(35, 35, 50)}):Play()
end
end)
return btn
end
-- Abas
local tabNames = {"Créditos", "Home", "Player", "Visual", "Lugares", "Diversão", "Farm", "Troll"}
local tabButtons = {}
for _, name in ipairs(tabNames) do
local btn = createTabButton(name)
tabButtons[name] = btn
end
-- Variáveis de estado importantes
local noclipConnection
local flyConnection
local flySpeed = 50
local flying = false
-- Funções reais úteis para Brookhaven
local function toggleNoClip(state)
if state then
if noclipConnection then noclipConnection:Disconnect() end
noclipConnection = RunService.Stepped:Connect(function()
if player.Character then
for _, part in player.Character:GetDescendants() do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
end)
else
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
end
end
local function toggleFly(state)
local char = player.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local root = char.HumanoidRootPart
local bodyVelocity = char:FindFirstChild("BV_KS") or Instance.new("BodyVelocity")
local bodyGyro = char:FindFirstChild("BG_KS") or Instance.new("BodyGyro")
bodyVelocity.Name = "BV_KS"
bodyGyro.Name = "BG_KS"
bodyVelocity.MaxForce = Vector3.new(1e9, 1e9, 1e9)
bodyGyro.MaxTorque = Vector3.new(1e9, 1e9, 1e9)
bodyGyro.P = 9e4
bodyVelocity.Parent = root
bodyGyro.Parent = root
flying = state
if state then
spawn(function()
while flying and char and char.Parent do
local moveDirection = Vector3.new(0,0,0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDirection += Vector3.new(0,0,-1) end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDirection += Vector3.new(0,0,1) end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDirection += Vector3.new(-1,0,0) end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDirection += Vector3.new(1,0,0) end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveDirection += Vector3.new(0,1,0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then moveDirection += Vector3.new(0,-1,0) end
bodyVelocity.Velocity = (moveDirection * flySpeed) * (root.CFrame.LookVector + Vector3.new(0,moveDirection.Y*2,0))
bodyGyro.CFrame = workspace.CurrentCamera.CFrame
task.wait()
end
bodyVelocity:Destroy()
bodyGyro:Destroy()
end)
else
bodyVelocity:Destroy()
bodyGyro:Destroy()
end
end
-- Lógica de troca de aba
for name, btn in pairs(tabButtons) do
btn.MouseButton1Click:Connect(function()
-- Visual da aba selecionada
for _, b in pairs(tabButtons) do
b.BackgroundColor3 = Color3.fromRGB(28, 28, 40)
end
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 90)
-- Limpa conteúdo anterior
for _, child in content:GetChildren() do
if child:IsA("GuiButton") or child:IsA("GuiLabel") then
child:Destroy()
end
end
if name == "Créditos" then
local creditLabel = Instance.new("TextLabel")
creditLabel.Size = UDim2.new(1, -20, 0, 260)
creditLabel.BackgroundTransparency = 1
creditLabel.RichText = true
creditLabel.Text =
"KS HUB - Brookhaven\n\n" ..
"Criador/Desenvolvedor:\n" ..
"samuel_mi244\n\n" ..
"Redes sociais:\n" ..
"• Discord: https://discord.gg/dquaVUGR\n" ..
"• TikTok: samuel_mi244\n" ..
"• Instagram: samuel_mi244\n" ..
"• YouTube: samuel_mi244\n\n" ..
"Feito com carinho especialmente para Brookhaven!\nObrigado por usar ♥"
creditLabel.TextColor3 = Color3.fromRGB(220, 220, 255)
creditLabel.Font = Enum.Font.GothamSemibold
creditLabel.TextSize = 18
creditLabel.TextWrapped = true
creditLabel.TextXAlignment = Enum.TextXAlignment.Left
creditLabel.Parent = content
local pad = Instance.new("UIPadding", creditLabel)
pad.PaddingLeft = UDim.new(0, 15)
pad.PaddingTop = UDim.new(0, 12)
elseif name == "Home" then
createFunctionButton("Rejoin (Mudar de servidor)", function() TeleportService:Teleport(game.PlaceId) end)
createFunctionButton("Anti-AFK (Em desenvolvimento)", function() end)
createFunctionButton("Fullbright (Sem neblina)", function()
Lighting.Brightness = 3
Lighting.GlobalShadows = false
Lighting.FogEnd = 999999
Lighting.Ambient = Color3.fromRGB(180,180,180)
end)
createFunctionButton("Resetar Personagem", function()
if player.Character then player.Character:BreakJoints() end
end)
elseif name == "Player" then
createFunctionButton("Speed = 80", function()
local hum = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if hum then hum.WalkSpeed = 80 end
end)
createFunctionButton("Jump Power = 150", function()
local hum = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if hum then hum.JumpPower = 150 end
end)
createFunctionButton("Altura Infinita (Semi)", function()
local hum = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if hum then hum.HipHeight = 25 end
end)
createFunctionButton("Invisibilidade (Local)", function()
if player.Character then
for _, part in player.Character:GetDescendants() do
if part:IsA("BasePart") or part:IsA("Decal") then
part.Transparency = 1
end
end
end
end)
elseif name == "Visual" then
createFunctionButton("NoClip", toggleNoClip, true)
createFunctionButton("Fly (WASD + Space/Ctrl)", toggleFly, true)
createFunctionButton("ESP Players (Em breve)", function() end)
elseif name == "Lugares" then
createFunctionButton("Ir para Escola", function()
player.Character:PivotTo(CFrame.new(-370, 20, -300))
end)
createFunctionButton("Ir para Banco", function()
player.Character:PivotTo(CFrame.new(-300, 20, 100))
end)
createFunctionButton("Ir para Praia", function()
player.Character:PivotTo(CFrame.new(300, 5, 800))
end)
elseif name == "Diversão" then
createFunctionButton("Spam Chat 'KS HUB'", function()
spawn(function()
for i = 1, 30 do
game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer("KS HUB é top!", "All")
task.wait(0.4)
end
end)
end)
createFunctionButton("Troll - Teleport Random", function()
local hum = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if hum then
hum.CFrame = hum.CFrame + Vector3.new(math.random(-300,300), 0, math.random(-300,300))
end
end)
elseif name == "Farm" then
createFunctionButton("Auto Farm Money (Simples - teste)", function()
spawn(function()
while task.wait(0.8) do
game:GetService("ReplicatedStorage").Remotes.BuyMoney:FireServer(999999999)
end
end)
end)
elseif name == "Troll" then
createFunctionButton("Kick Everyone (Fake)", function()
StarterGui:SetCore("SendNotification", {Title="Troll", Text="Tentativa de kick global (apenas visual)", Duration=4})
end)
createFunctionButton("Fling Players (Muito bugado)", function()
local hum = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if hum then
hum.Velocity = Vector3.new(0, 100000, 0)
end
end)
end
end)
end
-- Toggle do menu
local open = false
local function toggleMenu()
open = not open
menu.Visible = open
TweenService:Create(toggle, TweenInfo.new(0.25, Enum.EasingStyle.Quad), {
BackgroundColor3 = open and Color3.fromRGB(50, 50, 90) or Color3.fromRGB(15, 15, 25)
}):Play()
end
toggle.MouseButton1Click:Connect(toggleMenu)
closeBtn.MouseButton1Click:Connect(toggleMenu)
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.RightControl then
toggleMenu()
end
end)
-- Abre créditos automaticamente
for name, btn in pairs(tabButtons) do
if name == "Créditos" then
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 90)
btn:Activate() -- simula clique para carregar créditos
break
end
end
print("KS HUB carregado com sucesso!")
print("• Clique/arraste o KS para abrir")
print("• RightControl = toggle menu")