-- Dark Hub - FTAP with Aimbot, Fling, ESP Controls

-- Services
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local Camera = workspace.CurrentCamera

-- GUI Setup
local darkHub = Instance.new("ScreenGui", PlayerGui)
darkHub.Name = "DarkHub_FTAP"
darkHub.ResetOnSpawn = false

local mainFrame = Instance.new("Frame", darkHub)
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 300, 0, 250)
mainFrame.Position = UDim2.new(0.5, -150, 0.5, -125)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0

local title = Instance.new("TextLabel", mainFrame)
title.Text = "Dark Hub - FTAP"
title.Size = UDim2.new(1, 0, 0, 40)
title.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextScaled = true

darkHub.Enabled = true

local closeButton = Instance.new("TextButton", mainFrame)
closeButton.Text = "X"
closeButton.Size = UDim2.new(0, 40, 0, 40)
closeButton.Position = UDim2.new(1, -40, 0, 0)
closeButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Font = Enum.Font.GothamBold
closeButton.TextScaled = true

local circleButton = Instance.new("TextButton", darkHub)
circleButton.Name = "Dark"
circleButton.Size = UDim2.new(0, 50, 0, 50)
circleButton.Position = UDim2.new(0, 10, 0.5, -25)
circleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
circleButton.Text = "+"
circleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
circleButton.Font = Enum.Font.GothamBold
circleButton.TextScaled = true
circleButton.Visible = false
local corner = Instance.new("UICorner", circleButton)
corner.CornerRadius = UDim.new(1, 0)

-- Dragging
local dragging = false
local dragInput, mousePos, framePos
circleButton.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		mousePos = input.Position
		framePos = circleButton.Position
	end
end)
circleButton.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UIS.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
		local delta = input.Position - mousePos
		circleButton.Position = UDim2.new(framePos.X.Scale, framePos.X.Offset + delta.X, framePos.Y.Scale, framePos.Y.Offset + delta.Y)
	end
end)

closeButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
	circleButton.Visible = true
end)
circleButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = true
	circleButton.Visible = false
end)

-- Aimbot Toggle
local aimbotEnabled = false
local aimbotBtn = Instance.new("TextButton", mainFrame)
aimbotBtn.Text = "Aimbot: OFF"
aimbotBtn.Size = UDim2.new(1, -20, 0, 40)
aimbotBtn.Position = UDim2.new(0, 10, 0, 50)
aimbotBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
aimbotBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
aimbotBtn.Font = Enum.Font.Gotham

aimbotBtn.MouseButton1Click:Connect(function()
	aimbotEnabled = not aimbotEnabled
	aimbotBtn.Text = "Aimbot: " .. (aimbotEnabled and "ON" or "OFF")
end)

-- Aimbot Logic
local function getClosest()
	local closestPlayer, shortest = nil, math.huge
	local myHRP = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
	if not myHRP then return nil end
	for _, p in pairs(Players:GetPlayers()) do
		if p ~= LocalPlayer and p.Team ~= LocalPlayer.Team and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
			local dist = (myHRP.Position - p.Character.HumanoidRootPart.Position).Magnitude
			if dist < shortest then
				closestPlayer = p
				shortest = dist
			end
		end
	end
	return closestPlayer
end

RunService.RenderStepped:Connect(function()
	if aimbotEnabled then
		local target = getClosest()
		if target and target.Character and target.Character:FindFirstChild("Head") then
			Camera.CFrame = CFrame.new(Camera.CFrame.Position, target.Character.Head.Position)
		end
	end
end)

-- Fling (Example Basic)
local flingEnabled = false
local flingBtn = Instance.new("TextButton", mainFrame)
flingBtn.Text = "Fling (Click)"
flingBtn.Size = UDim2.new(1, -20, 0, 40)
flingBtn.Position = UDim2.new(0, 10, 0, 100)
flingBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
flingBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
flingBtn.Font = Enum.Font.Gotham

flingBtn.MouseButton1Click:Connect(function()
	local char = LocalPlayer.Character
	if char and char:FindFirstChild("HumanoidRootPart") then
		char.HumanoidRootPart.Velocity = Vector3.new(0, 300, 0) -- Simple upward fling
	end
end)

-- ESP (basic name tag)
local espEnabled = false
local espBtn = Instance.new("TextButton", mainFrame)
espBtn.Text = "ESP: OFF"
espBtn.Size = UDim2.new(1, -20, 0, 40)
espBtn.Position = UDim2.new(0, 10, 0, 150)
espBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
espBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
espBtn.Font = Enum.Font.Gotham

local function createESP(player)
	if player.Character and not player.Character:FindFirstChild("DarkHubESP") then
		local tag = Instance.new("BillboardGui", player.Character)
		tag.Name = "DarkHubESP"
		tag.Size = UDim2.new(0, 100, 0, 40)
		tag.Adornee = player.Character:FindFirstChild("Head")
		tag.AlwaysOnTop = true
		local nameLabel = Instance.new("TextLabel", tag)
		nameLabel.Size = UDim2.new(1, 0, 1, 0)
		nameLabel.Text = player.Name
		nameLabel.BackgroundTransparency = 1
		nameLabel.TextColor3 = Color3.new(1, 1, 1)
		nameLabel.TextScaled = true
	end
end

espBtn.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	espBtn.Text = "ESP: " .. (espEnabled and "ON" or "OFF")
	if espEnabled then
		for _, p in pairs(Players:GetPlayers()) do
			if p ~= LocalPlayer then createESP(p) end
		end
	else
		for _, p in pairs(Players:GetPlayers()) do
			if p.Character and p.Character:FindFirstChild("DarkHubESP") then
				p.Character.DarkHubESP:Destroy()
			end
		end
	end
end)

-- THROW POWER SLIDER
local throwPower = 50 -- Default power
local powerButton = Instance.new("TextButton", mainFrame)
powerButton.Size = UDim2.new(0, 200, 0, 30)
powerButton.Position = UDim2.new(0, 10, 0, 150)
powerButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
powerButton.Text = "Throw Power: " .. throwPower
powerButton.TextColor3 = Color3.new(1, 1, 1)

powerButton.MouseButton1Click:Connect(function()
	throwPower = throwPower + 10
	if throwPower > 100 then throwPower = 10 end
	powerButton.Text = "Throw Power: " .. throwPower
end)

-- BRING ALL BUTTON
local bringButton = Instance.new("TextButton", mainFrame)
bringButton.Size = UDim2.new(0, 200, 0, 30)
bringButton.Position = UDim2.new(0, 10, 0, 190)
bringButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
bringButton.Text = "Bring All"
bringButton.TextColor3 = Color3.new(1, 1, 1)

bringButton.MouseButton1Click:Connect(function()
	local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
	if root then
		for _, p in pairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
				p.Character:MoveTo(root.Position + Vector3.new(math.random(-5,5), 0, math.random(-5,5)))
			end
		end
	end
end)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: