Universal Script – Epics hub template - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – Epics hub template

Universal ScriptEpic_ScriptsEpic_Scripts 1.2K views 193 executesUpdated Oct 19, 2026
Unrated
00
Lua Script•280 lines (9928 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "EpicScriptHubGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = false
mainFrame.Parent = screenGui

local isMobile = UserInputService:GetPlatform() == Enum.Platform.IOS or UserInputService:GetPlatform() == Enum.Platform.Android

if isMobile then
	mainFrame.Size = UDim2.new(0.65, 0, 0.8, 0)
	mainFrame.Position = UDim2.new(0.175, 0, 0.1, 0)
else
	mainFrame.Size = UDim2.new(0, 500, 0, 600)
	mainFrame.Position = UDim2.new(0.5, -250, 0.5, -300)
end

local function addCorner(parent, radius)
	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, radius)
	corner.Parent = parent
end
addCorner(mainFrame, 12)

local shadow = Instance.new("Frame")
shadow.Name = "Shadow"
shadow.Size = UDim2.new(1, 0, 1, 0)
shadow.Position = UDim2.new(0, 2, 0, 2)
shadow.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
shadow.BorderSizePixel = 0
shadow.ZIndex = 0
shadow.Parent = mainFrame
addCorner(shadow, 12)

local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 50)
titleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
addCorner(titleBar, 12)

local titleBarBottomFix = Instance.new("Frame")
titleBarBottomFix.Name = "TitleBarBottomFix"
titleBarBottomFix.Size = UDim2.new(1, 0, 0, 12)
titleBarBottomFix.Position = UDim2.new(0, 0, 1, -12)
titleBarBottomFix.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
titleBarBottomFix.BorderSizePixel = 0
titleBarBottomFix.ZIndex = 1
titleBarBottomFix.Parent = titleBar

local titleLabel = Instance.new("TextLabel")
titleLabel.Name = "TitleLabel"
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = Color3.fromRGB(255, 100, 200)
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Text = "epic’s hub"
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.ZIndex = 2
titleLabel.Parent = titleBar

local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Font = Enum.Font.GothamBold
closeButton.Text = "×"
closeButton.BorderSizePixel = 0
closeButton.ZIndex = 2
closeButton.Parent = titleBar

if isMobile then
	titleLabel.TextSize = 14
	titleLabel.Size = UDim2.new(1, -55, 1, 0)
	titleLabel.Position = UDim2.new(0, 10, 0, 0)
	
	closeButton.Size = UDim2.new(0, 35, 0, 35)
	closeButton.Position = UDim2.new(1, -40, 0, 7.5)
	closeButton.TextSize = 16
else
	titleLabel.TextSize = 18
	titleLabel.Size = UDim2.new(1, -60, 1, 0)
	titleLabel.Position = UDim2.new(0, 15, 0, 0)
	
	closeButton.Size = UDim2.new(0, 40, 0, 40)
	closeButton.Position = UDim2.new(1, -45, 0, 5)
	closeButton.TextSize = 20
end

addCorner(closeButton, 8)
closeButton.MouseButton1Click:Connect(function() screenGui:Destroy() end)

-- Smooth Mobile and Desktop Dragging System
local dragging, dragStart, startPos = false, Vector2.new(0,0), UDim2.new(0,0,0,0)
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)
UserInputService.InputChanged:Connect(function(input)
	if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) 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)

local tabContainer = Instance.new("Frame")
tabContainer.Name = "TabContainer"
tabContainer.Size = UDim2.new(1, 0, 0, 50)
tabContainer.Position = UDim2.new(0, 0, 0, 50)
tabContainer.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
tabContainer.BorderSizePixel = 0
tabContainer.Parent = mainFrame

local tabLayout = Instance.new("UIListLayout")
tabLayout.FillDirection = Enum.FillDirection.Horizontal
tabLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
tabLayout.VerticalAlignment = Enum.VerticalAlignment.Center
tabLayout.Parent = tabContainer

local contentFrame = Instance.new("Frame")
contentFrame.Name = "ContentFrame"
contentFrame.Size = UDim2.new(1, 0, 1, -100)
contentFrame.Position = UDim2.new(0, 0, 0, 100)
contentFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
contentFrame.BorderSizePixel = 0
contentFrame.Parent = mainFrame

local contentPadding = Instance.new("UIPadding")
contentPadding.PaddingTop = UDim.new(0, 10)
contentPadding.Parent = contentFrame

local mainView = Instance.new("ScrollingFrame")
mainView.Name = "MainView"
mainView.Size = UDim2.new(1, -20, 1, 0)
mainView.Position = UDim2.new(0, 10, 0, 0)
mainView.BackgroundTransparency = 1
mainView.BorderSizePixel = 0
mainView.ScrollBarThickness = 6
mainView.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 150)
mainView.Visible = true
mainView.Parent = contentFrame

local mainLayout = Instance.new("UIListLayout")
mainLayout.FillDirection = Enum.FillDirection.Vertical
mainLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
mainLayout.Padding = UDim.new(0, 8)
mainLayout.Parent = mainView

local credView = Instance.new("Frame")
credView.Name = "CredView"
credView.Size = UDim2.new(1, 0, 1, 0)
credView.BackgroundTransparency = 1
credView.Visible = false
credView.Parent = contentFrame

local credLayout = Instance.new("UIListLayout")
credLayout.FillDirection = Enum.FillDirection.Vertical
credLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
credLayout.VerticalAlignment = Enum.VerticalAlignment.Center
credLayout.Padding = UDim.new(0, 12)
credLayout.Parent = credView

-- Tab State Tracking System
local currentActiveTabButton = nil
local function buildTabBtn(name, targetFrame)
	local tabBtn = Instance.new("TextButton")
	tabBtn.Size = UDim2.new(0, isMobile and 110 or 150, 1, 0)
	tabBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
	tabBtn.TextColor3 = Color3.fromRGB(180, 180, 180)
	tabBtn.Font = Enum.Font.Gotham
	tabBtn.TextSize = isMobile and 12 or 14
	tabBtn.Text = name
	tabBtn.BorderSizePixel = 0
	tabBtn.Parent = tabContainer
	addCorner(tabBtn, 6)
	
	tabBtn.MouseButton1Click:Connect(function()
		mainView.Visible = false
		credView.Visible = false
		targetFrame.Visible = true
		
		if currentActiveTabButton then
			currentActiveTabButton.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
		end
		tabBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
		currentActiveTabButton = tabBtn
	end)
	return tabBtn
end

local mainTabBtn = buildTabBtn("Main", mainView)
local credTabBtn = buildTabBtn("Credits", credView)
mainTabBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
currentActiveTabButton = mainTabBtn

local function buildBtn(parent, text, callback)
	local button = Instance.new("TextButton")
	button.Size = UDim2.new(1, 0, 0, 45)
	button.BackgroundColor3 = Color3.fromRGB(50, 50, 80)
	button.TextColor3 = Color3.fromRGB(255, 255, 255)
	button.Font = Enum.Font.Gotham
	button.TextSize = 14
	button.Text = text
	button.BorderSizePixel = 0
	button.Parent = parent
	addCorner(button, 8)
	button.MouseButton1Click:Connect(callback)
end

-- ==========================================================
-- 6 DYNAMIC MAIN TAB TEMPLATE BUTTONS
-- ==========================================================
for i = 1, 6 do
	buildBtn(mainView, "Custom Feature Script " .. i, function()
		task.spawn(function()
			print("Feature Button " .. i .. " executed successfully.")
		end)
	end)
end

-- ==========================================================
-- CREDITS TAB SETUP WITH CROWN ADDED
-- ==========================================================

local inlineCreatorContainer = Instance.new("Frame")
inlineCreatorContainer.Name = "InlineCreatorContainer"
inlineCreatorContainer.Size = UDim2.new(0.9, 0, 0, 50)
inlineCreatorContainer.BackgroundTransparency = 1
inlineCreatorContainer.Parent = credView

local inlineLayout = Instance.new("UIListLayout")
inlineLayout.FillDirection = Enum.FillDirection.Horizontal
inlineLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
inlineLayout.VerticalAlignment = Enum.VerticalAlignment.Center
inlineLayout.Padding = UDim.new(0, 8)
inlineLayout.Parent = inlineCreatorContainer

-- FIXED: Crown Element injected cleanly next to your creator tag
local crownLabel = Instance.new("TextLabel")
crownLabel.Name = "CrownLabel"
crownLabel.Size = UDim2.new(0, 30, 1, 0)
crownLabel.BackgroundTransparency = 1
crownLabel.Text = "👑"
crownLabel.TextSize = 22
crownLabel.Font = Enum.Font.GothamBold
crownLabel.TextXAlignment = Enum.TextXAlignment.Center
crownLabel.Parent = inlineCreatorContainer

local creditTextLabel = Instance.new("TextLabel")
creditTextLabel.Size = UDim2.new(0, 220, 1, 0)
creditTextLabel.BackgroundTransparency = 1
creditTextLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
creditTextLabel.Font = Enum.Font.GothamMedium
creditTextLabel.TextSize = 15
creditTextLabel.Text = "creator: 98ikidds (epic_scripts)"
creditTextLabel.TextXAlignment = Enum.TextXAlignment.Left
creditTextLabel.Parent = inlineCreatorContainer

local robloxUserDisplayLabel = Instance.new("TextLabel")
robloxUserDisplayLabel.Size = UDim2.new(0.9, 0, 0, 25)
robloxUserDisplayLabel.BackgroundTransparency = 1
robloxUserDisplayLabel.TextColor3 = Color3.fromRGB(255, 100, 200)
robloxUserDisplayLabel.Font = Enum.Font.GothamBold

How to Execute Universal Script – Epics hub template

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

Epic_Scripts
Epic_Scripts
Script User
View Author Profile

Features & Information

Execute Universal Script – Epics hub template. Key system required, created by Epic_Scripts, updated Oct 19, 2026. Tested and working on supported executors.
#Epic#Template

Script Changelog (1)

@Epic_ScriptsOct 19, 2026

Template created (fully functional and working to use)

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – Epics hub template in Roblox?

To run Universal Script – Epics hub template, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – Epics hub template keyless or does it require an access key?

Universal Script – Epics hub template requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – Epics hub template currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.