VINQ INTERFACE TEMPLATE UI
Key RequiredUniversal

VINQ INTERFACE TEMPLATE UI

Universal Scriptvinqdevelops2vinqdevelops2 816 views 952 executesUpdated Sep 27, 2026
Unrated
00
Lua Script•855 lines (26962 chars)
local ImageUrl = "https://scriptblox.com/images/photo/6a4435d460023d64d5b1ba1c-1782855167902.jpeg"
local LogoAsset = ""

if writefile and getcustomasset and game.HttpGet then
	local success, _ = pcall(function()
		if isfile and not isfile("vinq_interface_logo.png") then
			writefile("vinq_interface_logo.png", game:HttpGet(ImageUrl))
		end
		if isfile and isfile("vinq_interface_logo.png") then
			LogoAsset = getcustomasset("vinq_interface_logo.png")
		end
	end)
	if not success or LogoAsset == "" then
		LogoAsset = "rbxassetid://6031075931"
	end
else
	LogoAsset = "rbxassetid://6031075931"
end

local Logos = {
	Home     = "rbxassetid://6031094667",
	Combat   = "rbxassetid://6023426915",
	Visuals  = "rbxassetid://6023426926",
	Player   = "rbxassetid://6031075931",
	Settings = "rbxassetid://6031260482"
}

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

local LocalPlayer = Players.LocalPlayer

local Theme = {
	Main = Color3.fromRGB(20, 20, 26),
	Sidebar = Color3.fromRGB(15, 15, 20),
	Header = Color3.fromRGB(12, 12, 16),
	Accent = Color3.fromRGB(255, 190, 0),
	AccentDark = Color3.fromRGB(180, 130, 0),
	ItemBg = Color3.fromRGB(28, 28, 36),
	ItemHover = Color3.fromRGB(38, 38, 48),
	Text = Color3.fromRGB(240, 240, 240),
	SubText = Color3.fromRGB(160, 160, 170)
}

if game.CoreGui:FindFirstChild("VinqsHubUI") then
	game.CoreGui.VinqsHubUI:Destroy()
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "VinqsHubUI"
ScreenGui.ResetOnSpawn = false

local success, _ = pcall(function()
	ScreenGui.Parent = game.CoreGui
end)
if not success then
	ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

local NotifContainer = Instance.new("Frame")
NotifContainer.Size = UDim2.new(0, 260, 1, 0)
NotifContainer.Position = UDim2.new(1, -270, 0, 10)
NotifContainer.BackgroundTransparency = 1
NotifContainer.ZIndex = 999
NotifContainer.Parent = ScreenGui

local NotifLayout = Instance.new("UIListLayout")
NotifLayout.Parent = NotifContainer
NotifLayout.SortOrder = Enum.SortOrder.LayoutOrder
NotifLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
NotifLayout.Padding = UDim.new(0, 8)

local function Notify(title, message, duration)
	duration = duration or 3
	
	local box = Instance.new("Frame")
	box.Size = UDim2.new(1, 0, 0, 60)
	box.BackgroundColor3 = Theme.Main
	box.Position = UDim2.new(1, 300, 0, 0)
	box.Parent = NotifContainer
	
	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 10)
	corner.Parent = box
	
	local stroke = Instance.new("UIStroke")
	stroke.Color = Theme.Accent
	stroke.Thickness = 1.5
	stroke.Parent = box
	
	local tLabel = Instance.new("TextLabel")
	tLabel.Size = UDim2.new(1, -16, 0, 20)
	tLabel.Position = UDim2.new(0, 12, 0, 6)
	tLabel.BackgroundTransparency = 1
	tLabel.Text = title
	tLabel.TextColor3 = Theme.Accent
	tLabel.Font = Enum.Font.FredokaOne
	tLabel.TextSize = 13
	tLabel.TextXAlignment = Enum.TextXAlignment.Left
	tLabel.Parent = box
	
	local mLabel = Instance.new("TextLabel")
	mLabel.Size = UDim2.new(1, -16, 0, 28)
	mLabel.Position = UDim2.new(0, 12, 0, 26)
	mLabel.BackgroundTransparency = 1
	mLabel.Text = message
	mLabel.TextColor3 = Theme.SubText
	mLabel.Font = Enum.Font.GothamMedium
	mLabel.TextSize = 11
	mLabel.TextXAlignment = Enum.TextXAlignment.Left
	mLabel.TextWrapped = true
	mLabel.Parent = box
	
	TweenService:Create(box, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
		Position = UDim2.new(0, 0, 0, 0)
	}):Play()
	
	task.delay(duration, function()
		local slideOut = TweenService:Create(box, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
			Position = UDim2.new(1, 300, 0, 0)
		})
		slideOut:Play()
		slideOut.Completed:Connect(function()
			box:Destroy()
		end)
	end)
end

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 560, 0, 380)
MainFrame.Position = UDim2.new(0.5, -280, 0.5, -190)
MainFrame.BackgroundColor3 = Theme.Main
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 14)
MainCorner.Parent = MainFrame

local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Theme.Accent
MainStroke.Thickness = 2
MainStroke.Parent = MainFrame

local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 42)
TopBar.BackgroundColor3 = Theme.Header
TopBar.BorderSizePixel = 0
TopBar.Parent = MainFrame

local TopBarCorner = Instance.new("UICorner")
TopBarCorner.CornerRadius = UDim.new(0, 14)
TopBarCorner.Parent = TopBar

local HeaderLogo = Instance.new("ImageLabel")
HeaderLogo.Size = UDim2.new(0, 26, 0, 26)
HeaderLogo.Position = UDim2.new(0, 10, 0.5, -13)
HeaderLogo.BackgroundTransparency = 1
HeaderLogo.Image = LogoAsset
HeaderLogo.Parent = TopBar

local HeaderLogoCorner = Instance.new("UICorner")
HeaderLogoCorner.CornerRadius = UDim.new(1, 0)
HeaderLogoCorner.Parent = HeaderLogo

local HeaderTitle = Instance.new("TextLabel")
HeaderTitle.Size = UDim2.new(1, -120, 1, 0)
HeaderTitle.Position = UDim2.new(0, 44, 0, 0)
HeaderTitle.BackgroundTransparency = 1
HeaderTitle.Text = "VINQ HUB"
HeaderTitle.TextColor3 = Theme.Accent
HeaderTitle.Font = Enum.Font.FredokaOne
HeaderTitle.TextSize = 14
HeaderTitle.TextXAlignment = Enum.TextXAlignment.Left
HeaderTitle.Parent = TopBar

local dragging, dragStart, startPos
TopBar.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
	end
end)

UserInputService.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		dragging = false
	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
		TweenService:Create(MainFrame, TweenInfo.new(0.08, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
		}):Play()
	end
end)

local MinimizeBtn = Instance.new("TextButton")
MinimizeBtn.Size = UDim2.new(0, 30, 0, 30)
MinimizeBtn.Position = UDim2.new(1, -70, 0.5, -15)
MinimizeBtn.BackgroundColor3 = Theme.ItemBg
MinimizeBtn.Text = "-"
MinimizeBtn.TextColor3 = Theme.Text
MinimizeBtn.Font = Enum.Font.FredokaOne
MinimizeBtn.TextSize = 16
MinimizeBtn.AutoButtonColor = false
MinimizeBtn.Parent = TopBar

local mCorner = Instance.new("UICorner")
mCorner.CornerRadius = UDim.new(0, 8)
mCorner.Parent = MinimizeBtn

local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 30, 0, 30)
CloseBtn.Position = UDim2.new(1, -36, 0.5, -15)
CloseBtn.BackgroundColor3 = Theme.ItemBg
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(240, 70, 70)
CloseBtn.Font = Enum.Font.FredokaOne
CloseBtn.TextSize = 13
CloseBtn.AutoButtonColor = false
CloseBtn.Parent = TopBar

local cCorner = Instance.new("UICorner")
cCorner.CornerRadius = UDim.new(0, 8)
cCorner.Parent = CloseBtn

CloseBtn.MouseButton1Click:Connect(function()
	TweenService:Create(MainFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
		Size = UDim2.new(0, 0, 0, 0),
		Position = UDim2.new(0.5, 0, 0.5, 0)
	}):Play()
	task.wait(0.2)
	ScreenGui:Destroy()
end)

local isMinimized = false
MinimizeBtn.MouseButton1Click:Connect(function()
	isMinimized = not isMinimized
	if isMinimized then
		TweenService:Create(MainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Size = UDim2.new(0, 560, 0, 42)
		}):Play()
		MinimizeBtn.Text = "+"
	else
		TweenService:Create(MainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Size = UDim2.new(0, 560, 0, 380)
		}):Play()
		MinimizeBtn.Text = "-"
	end
end)

UserInputService.InputBegan:Connect(function(input, gpe)
	if not gpe and input.KeyCode == Enum.KeyCode.RightControl then
		MainFrame.Visible = not MainFrame.Visible
	end
end)

local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 140, 1, -42)
Sidebar.Position = UDim2.new(0, 0, 0, 42)
Sidebar.BackgroundColor3 = Theme.Sidebar
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainFrame

local SidebarLayout = Instance.new("UIListLayout")
SidebarLayout.Parent = Sidebar
SidebarLayout.SortOrder = Enum.SortOrder.LayoutOrder
SidebarLayout.Padding = UDim.new(0, 6)

local SidebarPadding = Instance.new("UIPadding")
SidebarPadding.PaddingTop = UDim.new(0, 10)
SidebarPadding.PaddingLeft = UDim.new(0, 8)
SidebarPadding.Parent = Sidebar

local Container = Instance.new("Frame")
Container.Size = UDim2.new(1, -152, 1, -52)
Container.Position = UDim2.new(0, 146, 0, 46)
Container.BackgroundTransparency = 1
Container.Parent = MainFrame

local Tabs = {}
local FirstTab = true

local function CreateTab(tabName, logoAssetId)
	local tabBtn = Instance.new("TextButton")
	tabBtn.Size = UDim2.new(1, -8, 0, 34)
	tabBtn.BackgroundColor3 = Theme.ItemBg
	tabBtn.Text = ""
	tabBtn.AutoButtonColor = false
	tabBtn.Parent = Sidebar

	local tCorner = Instance.new("UICorner")
	tCorner.CornerRadius = UDim.new(0, 8)
	tCorner.Parent = tabBtn

	local tabIcon = Instance.new("ImageLabel")
	tabIcon.Size = UDim2.new(0, 18, 0, 18)
	tabIcon.Position = UDim2.new(0, 10, 0.5, -9)
	tabIcon.BackgroundTransparency = 1
	tabIcon.Image = logoAssetId or Logos.Home
	tabIcon.ImageColor3 = Theme.SubText
	tabIcon.Parent = tabBtn

	local tabText = Instance.new("TextLabel")
	tabText.Size = UDim2.new(1, -36, 1, 0)
	tabText.Position = UDim2.new(0, 34, 0, 0)
	tabText.BackgroundTransparency = 1
	tabText.Text = tabName
	tabText.TextColor3 = Theme.SubText
	tabText.Font = Enum.Font.FredokaOne
	tabText.TextSize = 12
	tabText.TextXAlignment = Enum.TextXAlignment.Left
	tabText.Parent = tabBtn

	local page = Instance.new("ScrollingFrame")
	page.Size = UDim2.new(1, 0, 1, 0)
	page.BackgroundTransparency = 1
	page.Visible = false
	page.ScrollBarThickness = 3
	page.ScrollBarImageColor3 = Theme.Accent
	page.Parent = Container

	local pageLayout = Instance.new("UIListLayout")
	pageLayout.Parent = page
	pageLayout.SortOrder = Enum.SortOrder.LayoutOrder
	pageLayout.Padding = UDim.new(0, 8)

	local pagePadding = Instance.new("UIPadding")
	pagePadding.PaddingRight = UDim.new(0, 6)
	pagePadding.Parent = page

	Tabs[tabName] = {Btn = tabBtn, Icon = tabIcon, Text = tabText, Page = page}

	tabBtn.MouseButton1Click:Connect(function()
		for _, data in pairs(Tabs) do
			data.Page.Visible = false
			TweenService:Create(data.Btn, TweenInfo.new(0.2), {BackgroundColor3 = Theme.ItemBg}):Play()
			TweenService:Create(data.Icon, TweenInfo.new(0.2), {ImageColor3 = Theme.SubText}):Play()
			TweenService:Create(data.Text, TweenInfo.new(0.2), {TextColor3 = Theme.SubText}):Play()
		end
		
		page.Visible = true
		TweenService:Create(tabBtn, TweenInfo.new(0.2), {BackgroundColor3 = Theme.Accent}):Play()
		TweenService:Create(tabIcon, TweenInfo.new(0.2), {ImageColor3 = Color3.fromRGB(15, 15, 15)}):Play()
		TweenService:Create(tabText, TweenInfo.new(0.2), {TextColor3 = Color3.fromRGB(15, 15, 15)}):Play()
	end)

	tabBtn.MouseEnter:Connect(function()
		if page.Visible == false then
			TweenService:Create(tabBtn, TweenInfo.new(0.15), {BackgroundColor3 = Theme.ItemHover}):Play()
		end
	end)

	tabBtn.MouseLeave:Connect(function()
		if page.Visible == false then
			TweenService:Create(tabBtn, TweenInfo.new(0.15), {BackgroundColor3 = Theme.ItemBg}):Play()
		end
	end)

	if FirstTab then
		FirstTab = false
		page.Visible = true
		tabBtn.BackgroundColor3 = Theme.Accent
		tabIcon.ImageColor3 = Color3.fromRGB(15, 15, 15)
		tabText.TextColor3 = Color3.fromRGB(15, 15, 15)
	end

	return page
end

local function AddLabel(parent, text)
	local label = Instance.new("TextLabel")
	label.Size = UDim2.new(1, 0, 0, 20)
	label.BackgroundTransparency = 1
	label.Text = text
	label.TextColor3 = Theme.Accent
	label.Font = Enum.Font.FredokaOne
	label.TextSize = 12
	label.TextXAlignment = Enum.TextXAlignment.Left
	label.Parent = parent
end

local function AddButton(parent, text, callback)
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, 0, 0, 36)
	btn.BackgroundColor3 = Theme.ItemBg
	btn.Text = "  " .. text
	btn.TextColor3 = Theme.Text
	btn.Font = Enum.Font.FredokaOne
	btn.TextSize = 12
	btn.TextXAlignment = Enum.TextXAlignment.Left
	btn.AutoButtonColor = false
	btn.Parent = parent

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

	btn.MouseEnter:Connect(function()
		TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Theme.ItemHover}):Play()
	end)

	btn.MouseLeave:Connect(function()
		TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Theme.ItemBg}):Play()
	end)

	btn.MouseButton1Click:Connect(function()
		local pulse = TweenService:Create(btn, TweenInfo.new(0.1), {BackgroundColor3 = Theme.Accent, TextColor3 = Color3.fromRGB(15, 15, 15)})
		pulse:Play()
		pulse.Completed:Connect(function()
			TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Theme.ItemHover, TextColor3 = Theme.Text}):Play()
		end)
		pcall(callback)
	end)
end

local function AddToggle(parent, text, defaultState, callback)
	local enabled = defaultState or false

	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(1, 0, 0, 38)
	frame.BackgroundColor3 = Theme.ItemBg
	frame.Parent = parent

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(1, -60, 1, 0)
	title.Position = UDim2.new(0, 12, 0, 0)
	title.BackgroundTransparency = 1
	title.Text = text
	title.TextColor3 = Theme.Text
	title.Font = Enum.Font.FredokaOne
	title.TextSize = 12
	title.TextXAlignment = Enum.TextXAlignment.Left
	title.Parent = frame

	local pill = Instance.new("Frame")
	pill.Size = UDim2.new(0, 40, 0, 20)
	pill.Position = UDim2.new(1, -50, 0.5, -10)
	pill.BackgroundColor3 = enabled and Theme.Accent or Color3.fromRGB(45, 45, 55)
	pill.Parent = frame

	local pCorner = Instance.new("UICorner")
	pCorner.CornerRadius = UDim.new(1, 0)
	pCorner.Parent = pill

	local knob = Instance.new("Frame")
	knob.Size = UDim2.new(0, 16, 0, 16)
	knob.Position = enabled and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8)
	knob.BackgroundColor3 = enabled and Color3.fromRGB(15, 15, 15) or Color3.fromRGB(200, 200, 200)
	knob.Parent = pill

	local kCorner = Instance.new("UICorner")
	kCorner.CornerRadius = UDim.new(1, 0)
	kCorner.Parent = knob

	local clickArea = Instance.new("TextButton")
	clickArea.Size = UDim2.new(1, 0, 1, 0)
	clickArea.BackgroundTransparency = 1
	clickArea.Text = ""
	clickArea.Parent = frame

	clickArea.MouseButton1Click:Connect(function()
		enabled = not enabled
		if enabled then
			TweenService:Create(pill, TweenInfo.new(0.2), {BackgroundColor3 = Theme.Accent}):Play()
			TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
				Position = UDim2.new(1, -18, 0.5, -8),
				BackgroundColor3 = Color3.fromRGB(15, 15, 15)
			}):Play()
		else
			TweenService:Create(pill, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(45, 45, 55)}):Play()
			TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
				Position = UDim2.new(0, 2, 0.5, -8),
				BackgroundColor3 = Color3.fromRGB(200, 200, 200)
			}):Play()
		end
		pcall(function() callback(enabled) end)
	end)
end

local function AddSlider(parent, text, min, max, default, callback)
	local value = default or min

	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(1, 0, 0, 48)
	frame.BackgroundColor3 = Theme.ItemBg
	frame.Parent = parent

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(0.7, 0, 0, 22)
	title.Position = UDim2.new(0, 12, 0, 4)
	title.BackgroundTransparency = 1
	title.Text = text
	title.TextColor3 = Theme.Text
	title.Font = Enum.Font.FredokaOne
	title.TextSize = 12
	title.TextXAlignment = Enum.TextXAlignment.Left
	title.Parent = frame

	local valLabel = Instance.new("TextLabel")
	valLabel.Size = UDim2.new(0, 50, 0, 22)
	valLabel.Position = UDim2.new(1, -62, 0, 4)
	valLabel.BackgroundTransparency = 1
	valLabel.Text = tostring(value)
	valLabel.TextColor3 = Theme.Accent
	valLabel.Font = Enum.Font.FredokaOne
	valLabel.TextSize = 12
	valLabel.TextXAlignment = Enum.TextXAlignment.Right
	valLabel.Parent = frame

	local barBg = Instance.new("Frame")
	barBg.Size = UDim2.new(1, -24, 0, 6)
	barBg.Position = UDim2.new(0, 12, 0, 32)
	barBg.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
	barBg.Parent = frame

	local bCorner = Instance.new("UICorner")
	bCorner.CornerRadius = UDim.new(1, 0)
	bCorner.Parent = barBg

	local fill = Instance.new("Frame")
	fill.Size = UDim2.new((value - min) / (max - min), 0, 1, 0)
	fill.BackgroundColor3 = Theme.Accent
	fill.Parent = barBg

	local fCorner = Instance.new("UICorner")
	fCorner.CornerRadius = UDim.new(1, 0)
	fCorner.Parent = fill

	local isDragging = false
	local function UpdateSlider(input)
		local pos = math.clamp((input.Position.X - barBg.AbsolutePosition.X) / barBg.AbsoluteSize.X, 0, 1)
		value = math.floor(min + ((max - min) * pos))
		valLabel.Text = tostring(value)
		
		TweenService:Create(fill, TweenInfo.new(0.05, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Size = UDim2.new(pos, 0, 1, 0)
		}):Play()
		
		pcall(function() callback(value) end)
	end

	barBg.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			isDragging = true
			UpdateSlider(input)
		end
	end)

	UserInputService.InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			isDragging = false
		end
	end)

	UserInputService.InputChanged:Connect(function(input)
		if isDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
			UpdateSlider(input)
		end
	end)
end

local function AddTextBox(parent, text, placeholder, callback)
	local frame = Instance.new("Frame")
	frame.Size = UDim2.new(1, 0, 0, 38)
	frame.BackgroundColor3 = Theme.ItemBg
	frame.Parent = parent

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = frame

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(0.5, 0, 1, 0)
	title.Position = UDim2.new(0, 12, 0, 0)
	title.BackgroundTransparency = 1
	title.Text = text
	title.TextColor3 = Theme.Text
	title.Font = Enum.Font.FredokaOne
	title.TextSize = 12
	title.TextXAlignment = Enum.TextXAlignment.Left
	title.Parent = frame

	local input = Instance.new("TextBox")
	input.Size = UDim2.new(0, 120, 0, 24)
	input.Position = UDim2.new(1, -130, 0.5, -12)
	input.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
	input.PlaceholderText = placeholder or "Type..."
	input.Text = ""
	input.TextColor3 = Theme.Accent
	input.Font = Enum.Font.FredokaOne
	input.TextSize = 11
	input.Parent = frame

	local iCorner = Instance.new("UICorner")
	iCorner.CornerRadius = UDim.new(0, 6)
	iCorner.Parent = input

	input.FocusLost:Connect(function(enterPressed)
		if enterPressed then
			pcall(function() callback(input.Text) end)
		end
	end)
end

local function AddDropdown(parent, text, options, callback)
	local isOpen = false

	local container = Instance.new("Frame")
	container.Size = UDim2.new(1, 0, 0, 38)
	container.BackgroundColor3 = Theme.ItemBg
	container.ClipsDescendants = true
	container.Parent = parent

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 8)
	corner.Parent = container

	local title = Instance.new("TextLabel")
	title.Size = UDim2.new(0.6, 0, 0, 38)
	title.Position = UDim2.new(0, 12, 0, 0)
	title.BackgroundTransparency = 1
	title.Text = text
	title.TextColor3 = Theme.Text
	title.Font = Enum.Font.FredokaOne
	title.TextSize = 12
	title.TextXAlignment = Enum.TextXAlignment.Left
	title.Parent = container

	local selectedLabel = Instance.new("TextLabel")
	selectedLabel.Size = UDim2.new(0, 100, 0, 38)
	selectedLabel.Position = UDim2.new(1, -112, 0, 0)
	selectedLabel.BackgroundTransparency = 1
	selectedLabel.Text = options[1] or "Select"
	selectedLabel.TextColor3 = Theme.Accent
	selectedLabel.Font = Enum.Font.FredokaOne
	selectedLabel.TextSize = 11
	selectedLabel.TextXAlignment = Enum.TextXAlignment.Right
	selectedLabel.Parent = container

	local mainBtn = Instance.new("TextButton")
	mainBtn.Size = UDim2.new(1, 0, 0, 38)
	mainBtn.BackgroundTransparency = 1
	mainBtn.Text = ""
	mainBtn.Parent = container

	local listFrame = Instance.new("Frame")
	listFrame.Size = UDim2.new(1, -16, 0, #options * 26)
	listFrame.Position = UDim2.new(0, 8, 0, 38)
	listFrame.BackgroundTransparency = 1
	listFrame.Parent = container

	local listLayout = Instance.new("UIListLayout")
	listLayout.Parent = listFrame
	listLayout.SortOrder = Enum.SortOrder.LayoutOrder
	listLayout.Padding = UDim.new(0, 4)

	for _, optionName in ipairs(options) do
		local itemBtn = Instance.new("TextButton")
		itemBtn.Size = UDim2.new(1, 0, 0, 24)
		itemBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 26)
		itemBtn.Text = optionName
		itemBtn.TextColor3 = Theme.SubText
		itemBtn.Font = Enum.Font.FredokaOne
		itemBtn.TextSize = 11
		itemBtn.Parent = listFrame

		local itemCorner = Instance.new("UICorner")
		itemCorner.CornerRadius = UDim.new(0, 6)
		itemCorner.Parent = itemBtn

		itemBtn.MouseButton1Click:Connect(function()
			selectedLabel.Text = optionName
			isOpen = false
			TweenService:Create(container, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
				Size = UDim2.new(1, 0, 0, 38)
			}):Play()
			pcall(function() callback(optionName) end)
		end)
	end

	mainBtn.MouseButton1Click:Connect(function()
		isOpen = not isOpen
		local targetHeight = isOpen and (42 + (#options * 28)) or 38
		TweenService:Create(container, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Size = UDim2.new(1, 0, 0, targetHeight)
		}):Play()
	end)
end

local PlayerTab   = CreateTab("Player", Logos.Player)
local CombatTab   = CreateTab("Combat", Logos.Combat)
local VisualsTab  = CreateTab("Visuals", Logos.Visuals)
local SettingsTab = CreateTab("Settings", Logos.Settings)

AddLabel(PlayerTab, "Movement Options")

AddSlider(PlayerTab, "Walk Speed", 16, 200, 16, function(val)
	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
		LocalPlayer.Character.Humanoid.WalkSpeed = val
	end
end)

AddSlider(PlayerTab, "Jump Power", 50, 300, 50, function(val)
	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
		LocalPlayer.Character.Humanoid.UseJumpPower = true
		LocalPlayer.Character.Humanoid.JumpPower = val
	end
end)

local infJump = false
AddToggle(PlayerTab, "Infinite Jump", false, function(state)
	infJump = state
end)

UserInputService.JumpRequest:Connect(function()
	if infJump and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
		LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end)

local noclip = false
AddToggle(PlayerTab, "Noclip", false, function(state)
	noclip = state
	Notify("Noclip", state and "Noclip Enabled" or "Noclip Disabled", 2)
end)

RunService.Stepped:Connect(function()
	if noclip and LocalPlayer.Character then
		for _, part in pairs(LocalPlayer.Character:GetDescendants()) do
			if part:IsA("BasePart") then
				part.CanCollide = false
			end
		end
	end
end)

AddLabel(CombatTab, "Target & Utility Tools")

AddTextBox(CombatTab, "Teleport To Player", "Username...", function(text)
	local target = nil
	for _, p in pairs(Players:GetPlayers()) do
		if string.lower(p.Name):sub(1, #text) == string.lower(text) then
			target = p
			break
		end
	end
	
	if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
		if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
			LocalPlayer.Character.HumanoidRootPart.CFrame = target.Character.HumanoidRootPart.CFrame
			Notify("Teleport", "Teleported to " .. target.Name, 2)
		end
	else
		Notify("Error", "Player not found", 2)
	end
end)

AddButton(CombatTab, "Reset Character", function()
	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
		LocalPlayer.Character.Humanoid.Health = 0
	end
end)

AddLabel(VisualsTab, "ESP & Lighting")

local espEnabled = false
local espHighlights = {}

AddToggle(VisualsTab, "Player Highlights (ESP)", false, function(state)
	espEnabled = state
	if not espEnabled then
		for _, h in pairs(espHighlights) do
			h:Destroy()
		end
		table.clear(espHighlights)
	else
		for _, p in pairs(Players:GetPlayers()) do
			if p ~= LocalPlayer and p.Character then
				local h = Instance.new("Highlight")
				h.FillColor = Theme.Accent
				h.OutlineColor = Color3.fromRGB(255, 255, 255)
				h.Parent = p.Character
				table.insert(espHighlights, h)
			end
		end
	end
end)

local fullbright = false
AddToggle(VisualsTab, "Fullbright", false, function(state)
	fullbright = state
	if fullbright then
		Lighting.Brightness = 2
		Lighting.ClockTime = 14
		Lighting.FogEnd = 100000
		Lighting.GlobalShadows = false
	else
		Lighting.Brightness = 1
		Lighting.GlobalShadows = true
	end
end)

AddSlider(VisualsTab, "Camera FOV", 70, 120, 70, function(val)
	workspace.CurrentCamera.FieldOfView = val
end)

AddLabel(SettingsTab, "Hub Customization")

AddDropdown(SettingsTab, "Theme Preset", {"Gold Accent", "Cyan Accent", "Red Accent"}, function(choice)
	if choice == "Gold Accent" then
		Theme.Accent = Color3.fromRGB(255, 190, 0)
	elseif choice == "Cyan Accent" then
		Theme.Accent = Color3.fromRGB(0, 200, 255)
	elseif choice == "Red Accent" then
		Theme.Accent = Color3.fromRGB(255, 60, 60)
	end
	
	MainStroke.Color = Theme.Accent
	Notify("Theme Updated", "Theme changed to " .. choice, 2)
end)

AddButton(SettingsTab, "Rejoin Server", function()
	Notify("Rejoining", "Connecting...", 2)
	TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)
end)

AddButton(SettingsTab, "Copy Discord Invite", function()
	if setclipboard then
		setclipboard("https://discord.gg/yourserver")
		Notify("Copied", "Discord link copied to clipboard.", 3)
	else
		Notify("Error", "setclipboard is not supported.", 3)
	end
end)

Notify("VINQ HUB", "Loaded. Press RightControl to toggle visibility.", 4)

Features & Information

You can create tabs, add features, your choice you can add your own discord server add tab logos and everything is all yours, you can even make your own script hub, enjoy:).
#Template#Library UI#Beta

Community Comments (2)

heesbeeeheesbeeeSep 29, 2026

How does this work

Replying to @heesbeee
vinqdevelops2vinqdevelops2Oct 3, 2026

@heesbeee You can add tabs, add your own features, add your own ideas. I might make more soon, but rn i was to lazy, but i'm working on a new script.

More Scripts for Universal Scripts