Dark Hub v3.1 script
Key Required

Dark Hub v3.1 script

⛱️ Murderers vs Sheriffs 2darkhubtdarkhubt 2.8K views 19K executesUpdated Aug 16, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•571 lines (20180 chars)
-- ============================================================================
-- DARK HUB v3.1 (LAG FIX + FULLBRIGHT + FPS BOOST + NOTIFICATIONS)
-- Features: MvS Role ESP, Auto Throw Knife, Smooth Aimbot, FPS Booster, Fullbright
-- Credits & Follow: u/darkhubt on ScriptBlox | Gemini | YouTube
-- Keybind: 'G' (PC) or Tap 'DARK' Button (Mobile)
-- ============================================================================

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")

local player = Players.LocalPlayer
local camera = Workspace.CurrentCamera

-- Safe CoreGui Container (Fixes execution & login errors across executors)
local parentContainer = gethui and gethui() or (syn and syn.protect_gui and syn.protect_gui(Instance.new("ScreenGui"))) or game:GetService("CoreGui")

--------------------------------------------------------------------------------
-- 1. SCREEN GUI SETUP & NOTIFICATION CONTAINER
--------------------------------------------------------------------------------
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DarkHub_MvS_v31"
screenGui.ResetOnSpawn = false

pcall(function()
	if syn and syn.protect_gui then
		syn.protect_gui(screenGui)
		screenGui.Parent = game:GetService("CoreGui")
	else
		screenGui.Parent = parentContainer
	end
end)

-- Notification Frame Container
local notifContainer = Instance.new("Frame")
notifContainer.Name = "NotificationContainer"
notifContainer.Size = UDim2.new(0, 220, 1, -20)
notifContainer.Position = UDim2.new(1, -230, 0, 10)
notifContainer.BackgroundTransparency = 1
notifContainer.Parent = screenGui

local notifLayout = Instance.new("UIListLayout")
notifLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
notifLayout.Padding = UDim.new(0, 8)
notifLayout.Parent = notifContainer

local function sendNotification(text)
	local notifFrame = Instance.new("Frame")
	notifFrame.Size = UDim2.new(1, 0, 0, 36)
	notifFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
	notifFrame.BorderSizePixel = 0
	notifFrame.Parent = notifContainer

	local notifCorner = Instance.new("UICorner")
	notifCorner.CornerRadius = UDim.new(0, 6)
	notifCorner.Parent = notifFrame

	local notifStroke = Instance.new("UIStroke")
	notifStroke.Thickness = 1
	notifStroke.Color = Color3.fromRGB(255, 0, 80)
	notifStroke.Parent = notifFrame

	local notifText = Instance.new("TextLabel")
	notifText.Size = UDim2.new(1, -10, 1, 0)
	notifText.Position = UDim2.new(0, 8, 0, 0)
	notifText.BackgroundTransparency = 1
	notifText.RichText = true
	notifText.Text = '<font color="rgb(255,0,80)"><b>[DARK HUB]</b></font> ' .. text
	notifText.Font = Enum.Font.GothamMedium
	notifText.TextColor3 = Color3.fromRGB(240, 240, 240)
	notifText.TextSize = 11
	notifText.TextXAlignment = Enum.TextXAlignment.Left
	notifText.Parent = notifFrame

	task.spawn(function()
		task.wait(3)
		notifFrame:Destroy()
	end)
end

sendNotification("Dark Hub Executed Successfully!")

--------------------------------------------------------------------------------
-- 2. MAIN HUB FRAME (BIG NEON GLOW)
--------------------------------------------------------------------------------
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainPanel"
mainFrame.Size = UDim2.new(0, 560, 0, 380)
mainFrame.Position = UDim2.new(0.5, -280, 0.5, -190)
mainFrame.BackgroundColor3 = Color3.fromRGB(8, 8, 8)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame

local mainStroke = Instance.new("UIStroke")
mainStroke.Thickness = 3
mainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
mainStroke.Parent = mainFrame

local strokeGradient = Instance.new("UIGradient")
strokeGradient.Color = ColorSequence.new({
	ColorSequenceKeypoint.new(0.00, Color3.fromRGB(255, 0, 80)),
	ColorSequenceKeypoint.new(0.33, Color3.fromRGB(0, 150, 255)),
	ColorSequenceKeypoint.new(0.66, Color3.fromRGB(150, 0, 255)),
	ColorSequenceKeypoint.new(1.00, Color3.fromRGB(255, 0, 80))
})
strokeGradient.Parent = mainStroke

task.spawn(function()
	while mainFrame and mainFrame.Parent do
		strokeGradient.Rotation = (strokeGradient.Rotation + 3) % 360
		task.wait(0.02)
	end
end)

--------------------------------------------------------------------------------
-- 3. TITLE BAR & DRAGGING MECHANICS
--------------------------------------------------------------------------------
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 42)
titleBar.BackgroundColor3 = Color3.fromRGB(14, 14, 14)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 10)
titleCorner.Parent = titleBar

local titleText = Instance.new("TextLabel")
titleText.Size = UDim2.new(1, -20, 1, 0)
titleText.Position = UDim2.new(0, 15, 0, 0)
titleText.BackgroundTransparency = 1
titleText.RichText = true
titleText.Text = '<font color="rgb(255,0,80)">DARK</font><font color="rgb(255,255,255)">HUB v3.1</font> <font color="rgb(120,120,120)">| Optimized</font>'
titleText.Font = Enum.Font.FredokaOne
titleText.TextSize = 18
titleText.TextXAlignment = Enum.TextXAlignment.Left
titleText.Parent = titleBar

local dragging, dragInput, dragStart, startPos
titleBar.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		dragging = true
		dragStart = input.Position
		startPos = mainFrame.Position
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then dragging = false end
		end)
	end
end)

titleBar.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
		dragInput = input
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if input == dragInput and dragging then
		local delta = input.Position - dragStart
		mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	end
end)

--------------------------------------------------------------------------------
-- 4. NAVIGATION TABS SETUP
--------------------------------------------------------------------------------
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.new(1, -20, 0, 32)
tabBar.Position = UDim2.new(0, 10, 0, 48)
tabBar.BackgroundTransparency = 1
tabBar.Parent = mainFrame

local tabLayout = Instance.new("UIListLayout")
tabLayout.FillDirection = Enum.FillDirection.Horizontal
tabLayout.Padding = UDim.new(0, 6)
tabLayout.Parent = tabBar

local TabFrames = {}
local TabButtons = {}
local TabNames = { "Main", "Combat", "ESP", "MvS Extra", "Settings" }

for i, name in ipairs(TabNames) do
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(0.2, -5, 1, 0)
	btn.Text = name
	btn.Font = Enum.Font.GothamBold
	btn.TextSize = 11
	btn.TextColor3 = (i == 1) and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(150, 150, 150)
	btn.BackgroundColor3 = (i == 1) and Color3.fromRGB(255, 0, 80) or Color3.fromRGB(18, 18, 18)
	btn.BorderSizePixel = 0
	btn.Parent = tabBar

	local btnCorner = Instance.new("UICorner")
	btnCorner.CornerRadius = UDim.new(0, 6)
	btnCorner.Parent = btn

	local pageScroll = Instance.new("ScrollingFrame")
	pageScroll.Size = UDim2.new(1, -20, 1, -95)
	pageScroll.Position = UDim2.new(0, 10, 0, 88)
	pageScroll.BackgroundTransparency = 1
	pageScroll.BorderSizePixel = 0
	pageScroll.ScrollBarThickness = 4
	pageScroll.ScrollBarImageColor3 = Color3.fromRGB(255, 0, 80)
	pageScroll.Visible = (i == 1)
	pageScroll.Parent = mainFrame

	local grid = Instance.new("UIGridLayout")
	grid.CellSize = UDim2.new(0, 260, 0, 42)
	grid.CellPadding = UDim2.new(0, 10, 0, 10)
	grid.Parent = pageScroll

	grid:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
		pageScroll.CanvasSize = UDim2.new(0, 0, 0, grid.AbsoluteContentSize.Y + 15)
	end)

	TabFrames[name] = pageScroll
	TabButtons[name] = btn

	btn.MouseButton1Click:Connect(function()
		for tName, tFrame in pairs(TabFrames) do
			tFrame.Visible = (tName == name)
			TabButtons[tName].BackgroundColor3 = (tName == name) and Color3.fromRGB(255, 0, 80) or Color3.fromRGB(18, 18, 18)
			TabButtons[tName].TextColor3 = (tName == name) and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(150, 150, 150)
		end
	end)
end

--------------------------------------------------------------------------------
-- 5. TOGGLE BUILDERS & STATES
--------------------------------------------------------------------------------
local Toggles = {
	Aimbot = false,
	ShowFOV = false,
	PlayerESP = false,
	PetESP = false,
	AutoThrowKnife = false,
	SpeedBoost = false,
	AimbotSmoothness = true,
	TargetHead = true,
	Fullbright = false,
	FPSBoost = false
}

local FOVRadius = 140
local AimbotSmoothness = 0.25
local SpeedValue = 32

local function createToggle(parentPage, richtextLabel, stateKey, callback)
	local btn = Instance.new("TextButton")
	btn.RichText = true
	btn.Text = richtextLabel .. ' : <font color="rgb(255,50,50)">OFF</font>'
	btn.Font = Enum.Font.GothamMedium
	btn.TextSize = 12
	btn.TextColor3 = Color3.fromRGB(220, 220, 220)
	btn.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
	btn.BorderSizePixel = 0
	btn.Parent = parentPage

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 6)
	corner.Parent = btn

	local stroke = Instance.new("UIStroke")
	stroke.Thickness = 1
	stroke.Color = Color3.fromRGB(35, 35, 35)
	stroke.Parent = btn

	btn.MouseButton1Click:Connect(function()
		Toggles[stateKey] = not Toggles[stateKey]
		local active = Toggles[stateKey]
		btn.Text = richtextLabel .. (active and ' : <font color="rgb(50,255,100)">ON</font>' or ' : <font color="rgb(255,50,50)">OFF</font>')
		btn.BackgroundColor3 = active and Color3.fromRGB(30, 20, 25) or Color3.fromRGB(18, 18, 18)
		stroke.Color = active and Color3.fromRGB(255, 0, 80) or Color3.fromRGB(35, 35, 35)
		sendNotification(richtextLabel:gsub("<[^>]-", ""):gsub(">", "") .. (active and " Enabled" or " Disabled"))
		if callback then callback(active) end
	end)
end

local function createActionButton(parentPage, richtextLabel, color, callback)
	local btn = Instance.new("TextButton")
	btn.RichText = true
	btn.Text = richtextLabel
	btn.Font = Enum.Font.GothamBold
	btn.TextSize = 12
	btn.TextColor3 = Color3.fromRGB(255, 255, 255)
	btn.BackgroundColor3 = color or Color3.fromRGB(22, 22, 22)
	btn.BorderSizePixel = 0
	btn.Parent = parentPage

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 6)
	corner.Parent = btn

	local stroke = Instance.new("UIStroke")
	stroke.Thickness = 1
	stroke.Color = Color3.fromRGB(45, 45, 45)
	stroke.Parent = btn

	btn.MouseButton1Click:Connect(function()
		if callback then callback() end
	end)
end

--------------------------------------------------------------------------------
-- 6. FULLBRIGHT & FPS BOOST LOGIC
--------------------------------------------------------------------------------
local origBrightness = Lighting.Brightness
local origClockTime = Lighting.ClockTime
local origFogEnd = Lighting.FogEnd
local origGlobalShadows = Lighting.GlobalShadows

local function toggleFullbright(state)
	if state then
		Lighting.Brightness = 2
		Lighting.ClockTime = 14
		Lighting.FogEnd = 100000
		Lighting.GlobalShadows = false
	else
		Lighting.Brightness = origBrightness
		Lighting.ClockTime = origClockTime
		Lighting.FogEnd = origFogEnd
		Lighting.GlobalShadows = origGlobalShadows
	end
end

local function applyFPSBoost(state)
	if state then
		pcall(function()
			settings().Rendering.QualityLevel = Enum.QualityLevel.Level01
			for _, v in ipairs(Workspace:GetDescendants()) do
				if v:IsA("BasePart") then
					v.Material = Enum.Material.SmoothPlastic
					v.Reflectance = 0
				elseif v:IsA("Decal") or v:IsA("Texture") then
					v.Transparency = 1
				elseif v:IsA("ParticleEmitter") or v:IsA("Trail") or v:IsA("Smoke") or v:IsA("Fire") then
					v.Enabled = false
				end
			end
		end)
	end
end

--------------------------------------------------------------------------------
-- 7. ESP & ROLE CHECKS
--------------------------------------------------------------------------------
local function getMvSRoleColor(targetPlayer)
	local char = targetPlayer.Character
	if not char then return Color3.fromRGB(255, 255, 255) end
	
	local backpack = targetPlayer:FindFirstChildOfClass("Backpack")
	local hasKnife = char:FindFirstChild("Knife") or (backpack and backpack:FindFirstChild("Knife"))
	local hasGun = char:FindFirstChild("Gun") or char:FindFirstChild("Revolver") or (backpack and backpack:FindFirstChild("Gun")) or (backpack and backpack:FindFirstChild("Revolver"))
	
	if hasKnife then
		return Color3.fromRGB(255, 40, 40)
	elseif hasGun then
		return Color3.fromRGB(0, 150, 255)
	else
		return Color3.fromRGB(50, 255, 100)
	end
end

local function updateESP()
	if not Toggles.PlayerESP then return end

	for _, v in ipairs(Players:GetPlayers()) do
		if v ~= player and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
			local hl = v.Character:FindFirstChild("MvSHighlight")
			if not hl then
				hl = Instance.new("Highlight")
				hl.Name = "MvSHighlight"
				hl.OutlineColor = Color3.fromRGB(255, 255, 255)
				hl.Parent = v.Character
			end
			hl.FillColor = getMvSRoleColor(v)
		end
	end
end

local function clearESP()
	for _, v in ipairs(Players:GetPlayers()) do
		if v.Character and v.Character:FindFirstChild("MvSHighlight") then
			v.Character.MvSHighlight:Destroy()
		end
	end
end

--------------------------------------------------------------------------------
-- 8. TAB CONTENT ASSIGNMENTS
--------------------------------------------------------------------------------

-- TAB 1: MAIN
createActionButton(TabFrames["Main"], '<font color="rgb(255,0,80)">Follow u/darkhubt on ScriptBlox</font>', Color3.fromRGB(25, 15, 20), function()
	if setclipboard then setclipboard("https://scriptblox.com/u/darkhubt") end
	sendNotification("Copied ScriptBlox Profile Link!")
end)

-- TAB 2: COMBAT
createToggle(TabFrames["Combat"], '<b>Aimbot Lock-On</b>', "Aimbot", function() end)
createToggle(TabFrames["Combat"], '<b>Draw FOV Circle</b>', "ShowFOV", function() end)
createToggle(TabFrames["Combat"], '<b>Smooth Aim Lock</b>', "AimbotSmoothness", function() end)
createToggle(TabFrames["Combat"], '<b>Target Head (Off = Torso)</b>', "TargetHead", function() end)

-- TAB 3: ESP
createToggle(TabFrames["ESP"], '<b>Player / MvS Role ESP</b>', "PlayerESP", function(state)
	if not state then clearESP() end
end)
createToggle(TabFrames["ESP"], '<b>Pet ESP</b>', "PetESP", function(state)
	for _, obj in ipairs(Workspace:GetDescendants()) do
		if obj:IsA("Model") and (string.find(string.lower(obj.Name), "pet") or obj:FindFirstChild("Pet")) then
			if state then
				if not obj:FindFirstChild("PetHighlight") then
					local hl = Instance.new("Highlight")
					hl.Name = "PetHighlight"
					hl.FillColor = Color3.fromRGB(0, 255, 150)
					hl.Parent = obj
				end
			else
				if obj:FindFirstChild("PetHighlight") then obj.PetHighlight:Destroy() end
			end
		end
	end
end)

-- TAB 4: MvS EXTRA
createToggle(TabFrames["MvS Extra"], '<b>Auto Throw Knife</b>', "AutoThrowKnife", function() end)
createToggle(TabFrames["MvS Extra"], '<b>Speed Multiplier</b>', "SpeedBoost", function(state)
	local hum = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
	if hum then hum.WalkSpeed = state and SpeedValue or 16 end
end)

-- TAB 5: SETTINGS (EXPANDED WITH FPS BOOST & FULLBRIGHT)
createToggle(TabFrames["Settings"], '<b>Fullbright (No Shadows)</b>', "Fullbright", function(state)
	toggleFullbright(state)
end)

createToggle(TabFrames["Settings"], '<b>FPS Booster (Lag Remover)</b>', "FPSBoost", function(state)
	applyFPSBoost(state)
end)

createActionButton(TabFrames["Settings"], '<b>Reset Script</b>', Color3.fromRGB(35, 25, 25), function()
	clearESP()
	toggleFullbright(false)
	screenGui:Destroy()
	sendNotification("Script Resetting...")
	task.wait(0.2)
	loadstring(game:HttpGet("https://raw.githubusercontent.com/DarkHub/main/script.lua", true))()
end)

createActionButton(TabFrames["Settings"], '<font color="rgb(255,50,50)"><b>Kill GUI</b></font>', Color3.fromRGB(45, 15, 15), function()
	clearESP()
	toggleFullbright(false)
	screenGui:Destroy()
end)

--------------------------------------------------------------------------------
-- 9. ENGINE LOOP
--------------------------------------------------------------------------------
local fovCircle = Drawing and Drawing.new("Circle") or nil
if fovCircle then
	fovCircle.Thickness = 1.5
	fovCircle.NumSides = 36
	fovCircle.Radius = FOVRadius
	fovCircle.Filled = false
	fovCircle.Visible = false
	fovCircle.Color = Color3.fromRGB(255, 0, 80)
end

local function getClosestPlayerInFOV()
	local closestPlayer = nil
	local shortestDistance = FOVRadius

	for _, v in ipairs(Players:GetPlayers()) do
		if v ~= player and v.Character and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChildOfClass("Humanoid").Health > 0 then
			local targetPart = Toggles.TargetHead and v.Character:FindFirstChild("Head") or v.Character:FindFirstChild("HumanoidRootPart")
			if targetPart then
				local pos, onScreen = camera:WorldToViewportPoint(targetPart.Position)
				if onScreen then
					local mousePos = UserInputService:GetMouseLocation()
					local distance = (Vector2.new(pos.X, pos.Y) - mousePos).Magnitude
					if distance < shortestDistance then
						closestPlayer = v
						shortestDistance = distance
					end
				end
			end
		end
	end
	return closestPlayer
end

RunService.RenderStepped:Connect(function()
	local mousePos = UserInputService:GetMouseLocation()
	
	if fovCircle then
		fovCircle.Position = mousePos
		fovCircle.Visible = Toggles.ShowFOV
	end

	if Toggles.Aimbot then
		local target = getClosestPlayerInFOV()
		if target and target.Character then
			local targetPart = Toggles.TargetHead and target.Character:FindFirstChild("Head") or target.Character:FindFirstChild("HumanoidRootPart")
			if targetPart then
				if Toggles.AimbotSmoothness then
					camera.CFrame = camera.CFrame:Lerp(CFrame.new(camera.CFrame.Position, targetPart.Position), AimbotSmoothness)
				else
					camera.CFrame = CFrame.new(camera.CFrame.Position, targetPart.Position)
				end
			end
		end
	end

	if Toggles.PlayerESP then updateESP() end

	if Toggles.AutoThrowKnife then
		local char = player.Character
		if char then
			local knife = char:FindFirstChild("Knife")
			if knife and knife:FindFirstChild("Throw") then
				knife.Throw:FireServer()
			end
		end
	end

	if Toggles.SpeedBoost then
		local hum = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
		if hum and hum.WalkSpeed ~= SpeedValue then hum.WalkSpeed = SpeedValue end
	end
end)

--------------------------------------------------------------------------------
-- 10. TOGGLES & INPUT
--------------------------------------------------------------------------------
local mobileToggle = Instance.new("TextButton")
mobileToggle.Name = "MobileToggle"
mobileToggle.Size = UDim2.new(0, 65, 0, 32)
mobileToggle.Position = UDim2.new(0, 12, 0.2, 0)
mobileToggle.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
mobileToggle.RichText = true
mobileToggle.Text = '<font color="rgb(255,0,80)">DARK</font>'
mobileToggle.Font = Enum.Font.FredokaOne
mobileToggle.TextSize = 13
mobileToggle.Parent = screenGui

local mobileCorner = Instance.new("UICorner")
mobileCorner.CornerRadius = UDim.new(0, 8)
mobileCorner.Parent = mobileToggle

local mobileStroke = Instance.new("UIStroke")
mobileStroke.Thickness = 1.5
mobileStroke.Color = Color3.fromRGB(255, 0, 80)
mobileStroke.Parent = mobileToggle

mobileToggle.MouseButton1Click:Connect(function()
	mainFrame.Visible = not mainFrame.Visible
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if not gameProcessed and input.KeyCode == Enum.KeyCode.G then
		mainFrame.Visible = not mainFrame.Visible
	end
end)

Features & Information

welcome to Dark Hub v3.1 script esp and more
#Dark Hub vDark Hub vDark Hub v

Community Comments (0)

No comments yet for this script.

More Scripts for ⛱️ Murderers vs Sheriffs 2