-- Modern Veta UI for Roblox
-- This script creates a ScreenGui with a modern UI similar to the Veta design
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create the main ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "VetaUI"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = playerGui
-- Colors and constants
local COLORS = {
DARK_BG = Color3.fromRGB(10, 1, 24),
DARKER_BG = Color3.fromRGB(5, 0, 16),
ACCENT = Color3.fromRGB(138, 86, 232),
ACCENT_SECONDARY = Color3.fromRGB(192, 86, 232),
TEXT = Color3.fromRGB(255, 255, 255),
TEXT_MUTED = Color3.fromRGB(155, 139, 179),
YELLOW = Color3.fromRGB(255, 204, 41),
GREEN = Color3.fromRGB(76, 217, 100),
RED = Color3.fromRGB(255, 90, 90),
GLASS = Color3.fromRGB(255, 255, 255):Lerp(Color3.fromRGB(0, 0, 0), 0.97),
GLASS_BORDER = Color3.fromRGB(255, 255, 255):Lerp(Color3.fromRGB(0, 0, 0),
0.92)
}
-- Helper function to create rounded UI elements
local function createRoundedFrame(name, size, position, bgColor, parent)
local frame = Instance.new("Frame")
frame.Name = name
frame.Size = size
frame.Position = position
frame.BackgroundColor3 = bgColor
frame.BorderSizePixel = 0
local corner = Instance.new("UICorner", frame)
corner.CornerRadius = UDim.new(0, 12)
frame.Parent = parent
return frame
end
-- Helper function to create text labels
local function createTextLabel(name, text, size, position, textColor, parent,
fontSize, fontWeight)
local label = Instance.new("TextLabel")
label.Name = name
label.Text = text
label.Size = size
label.Position = position
label.TextColor3 = textColor
label.BackgroundTransparency = 1
label.Font = Enum.Font.GothamSSm
label.TextSize = fontSize or 14
label.TextXAlignment = Enum.TextXAlignment.Left
if fontWeight == "Bold" then
label.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json",
Enum.FontWeight.Bold)
elseif fontWeight == "SemiBold" then
label.FontFace = Font.new("rbxasset://fonts/families/GothamSSm.json",
Enum.FontWeight.SemiBold)
end
label.Parent = parent
return label
end
-- Helper function to create icons
local function createIcon(name, imageId, size, position, imageColor, parent)
local icon = Instance.new("ImageLabel")
icon.Name = name
icon.Image = imageId
icon.Size = size
icon.Position = position
icon.ImageColor3 = imageColor or COLORS.TEXT_MUTED
icon.BackgroundTransparency = 1
icon.Parent = parent
return icon
end
-- Helper function to create a button
local function createButton(name, size, position, bgColor, parent)
local button = Instance.new("TextButton")
button.Name = name
button.Size = size
button.Position = position
button.BackgroundColor3 = bgColor
button.BorderSizePixel = 0
button.Text = ""
button.AutoButtonColor = false
local corner = Instance.new("UICorner", button)
corner.CornerRadius = UDim.new(0, 12)
button.Parent = parent
return button
end
-- Create main background frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.fromScale(1, 1)
mainFrame.Position = UDim2.fromScale(0, 0)
mainFrame.BackgroundColor3 = COLORS.DARK_BG
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
-- Create header
local header = createRoundedFrame("Header", UDim2.new(1, 0, 0, 60), UDim2.new(0, 0,
0, 0), COLORS.DARKER_BG, mainFrame)
header.CornerRadius = UDim.new(0, 0)
-- Create logo circle
local logoCircle = createRoundedFrame("LogoCircle", UDim2.new(0, 40, 0, 40),
UDim2.new(0, 24, 0, 10), COLORS.ACCENT, header)
logoCircle.UICorner.CornerRadius = UDim.new(0, 12)
-- Create gradient for logo
local logoGradient = Instance.new("UIGradient", logoCircle)
logoGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, COLORS.ACCENT),
ColorSequenceKeypoint.new(1, COLORS.ACCENT_SECONDARY)
})
logoGradient.Rotation = 135
-- Create logo text
local logoText = createTextLabel("LogoText", "V", UDim2.new(1, 0, 1, 0),
UDim2.new(0, 0, 0, 0), COLORS.TEXT, logoCircle, 20, "Bold")
logoText.TextXAlignment = Enum.TextXAlignment.Center
logoText.TextYAlignment = Enum.TextYAlignment.Center
-- Create app name
local appName = createTextLabel("AppName", "Veta", UDim2.new(0, 100, 0, 40),
UDim2.new(0, 74, 0, 10), COLORS.TEXT, header, 24, "Bold")
-- Create window controls
local windowControls = Instance.new("Frame")
windowControls.Name = "WindowControls"
windowControls.Size = UDim2.new(0, 80, 0, 20)
windowControls.Position = UDim2.new(1, -100, 0, 20)
windowControls.BackgroundTransparency = 1
windowControls.Parent = header
-- Create control buttons
local controlYellow = createRoundedFrame("ControlYellow", UDim2.new(0, 14, 0, 14),
UDim2.new(0, 0, 0, 3), COLORS.YELLOW, windowControls)
controlYellow.UICorner.CornerRadius = UDim.new(1, 0)
local controlGreen = createRoundedFrame("ControlGreen", UDim2.new(0, 14, 0, 14),
UDim2.new(0, 30, 0, 3), COLORS.GREEN, windowControls)
controlGreen.UICorner.CornerRadius = UDim.new(1, 0)
local controlRed = createRoundedFrame("ControlRed", UDim2.new(0, 14, 0, 14),
UDim2.new(0, 60, 0, 3), COLORS.RED, windowControls)
controlRed.UICorner.CornerRadius = UDim.new(1, 0)
-- Create navigation bar
local navBar = createRoundedFrame("NavBar", UDim2.new(1, 0, 0, 50), UDim2.new(0, 0,
0, 60), COLORS.DARKER_BG, mainFrame)
navBar.CornerRadius = UDim.new(0, 0)
-- Create nav items
local navItems = {
{name = "Project", icon = "rbxassetid://7733799901"}, -- Code icon
{name = "Console", icon = "rbxassetid://7733911811", active = true}, --
Terminal icon
{name = "Analytics", icon = "rbxassetid://7734053495"} -- Chart icon
}
for i, item in ipairs(navItems) do
local navItem = createButton("NavItem_" .. item.name, UDim2.new(0, 120, 1, 0),
UDim2.new(0, (i-1) * 130 + 20, 0, 0), COLORS.DARKER_BG, navBar)
navItem.BackgroundTransparency = 1
local icon = createIcon("Icon", item.icon, UDim2.new(0, 16, 0, 16),
UDim2.new(0, 0, 0.5, -8), item.active and COLORS.ACCENT or COLORS.TEXT_MUTED,
navItem)
local label = createTextLabel("Label", item.name, UDim2.new(0, 100, 0, 20),
UDim2.new(0, 24, 0.5, -10), item.active and COLORS.TEXT or COLORS.TEXT_MUTED,
navItem, 15, "SemiBold")
if item.active then
local activeIndicator = createRoundedFrame("ActiveIndicator", UDim2.new(0,
120, 0, 3), UDim2.new(0, 0, 1, -3), COLORS.ACCENT, navItem)
activeIndicator.UICorner.CornerRadius = UDim.new(0, 0)
local activeGradient = Instance.new("UIGradient", activeIndicator)
activeGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, COLORS.ACCENT),
ColorSequenceKeypoint.new(1, COLORS.ACCENT_SECONDARY)
})
activeGradient.Rotation = 90
end
-- Add click behavior
navItem.MouseButton1Click:Connect(function()
-- Remove active state from all items
for _, otherItem in ipairs(navBar:GetChildren()) do
if otherItem:IsA("TextButton") and otherItem.Name:find("NavItem_") then
for _, child in ipairs(otherItem:GetChildren()) do
if child.Name == "Icon" then
child.ImageColor3 = COLORS.TEXT_MUTED
elseif child.Name == "Label" then
child.TextColor3 = COLORS.TEXT_MUTED
elseif child.Name == "ActiveIndicator" then
child:Destroy()
end
end
end
end
-- Set active state for clicked item
icon.ImageColor3 = COLORS.ACCENT
label.TextColor3 = COLORS.TEXT
local activeIndicator = createRoundedFrame("ActiveIndicator", UDim2.new(0,
120, 0, 3), UDim2.new(0, 0, 1, -3), COLORS.ACCENT, navItem)
activeIndicator.UICorner.CornerRadius = UDim.new(0, 0)
local activeGradient = Instance.new("UIGradient", activeIndicator)
activeGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, COLORS.ACCENT),
ColorSequenceKeypoint.new(1, COLORS.ACCENT_SECONDARY)
})
activeGradient.Rotation = 90
-- Animation
activeIndicator.Size = UDim2.new(0, 0, 0, 3)
activeIndicator.Position = UDim2.new(0.5, 0, 1, -3)
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quart,
Enum.EasingDirection.Out)
local tween = TweenService:Create(activeIndicator, tweenInfo, {
Size = UDim2.new(0, 120, 0, 3),
Position = UDim2.new(0, 0, 1, -3)
})
tween:Play()
end)
end
-- Create toolbar
local toolbar = createRoundedFrame("Toolbar", UDim2.new(1, 0, 0, 60), UDim2.new(0,
0, 0, 110), COLORS.DARKER_BG, mainFrame)
toolbar.CornerRadius = UDim.new(0, 0)
-- Create toolbar buttons
local toolbarIcons = {
{name = "Home", icon = "rbxassetid://7733960981"},
{name = "Add", icon = "rbxassetid://7733774602"},
{name = "Play", icon = "rbxassetid://7734056608"},
{name = "Notifications", icon = "rbxassetid://7734053037"},
{name = "Settings", icon = "rbxassetid://7734053495"}
}
for i, item in ipairs(toolbarIcons) do
local toolBtn = createButton("ToolBtn_" .. item.name, UDim2.new(0, 40, 0, 40),
UDim2.new(0, (i-1) * 50 + 20, 0, 10), COLORS.GLASS, toolbar)
-- Add border
local border = Instance.new("UIStroke", toolBtn)
border.Color = COLORS.GLASS_BORDER
border.Thickness = 1
local icon = createIcon("Icon", item.icon, UDim2.new(0, 20, 0, 20),
UDim2.new(0.5, -10, 0.5, -10), COLORS.TEXT_MUTED, toolBtn)
-- Add hover and click effects
toolBtn.MouseEnter:Connect(function()
local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(icon, tweenInfo, {ImageColor3 =
COLORS.TEXT})
tween:Play()
local borderTween = TweenService:Create(border, tweenInfo, {Color =
COLORS.ACCENT})
borderTween:Play()
end)
toolBtn.MouseLeave:Connect(function()
local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(icon, tweenInfo, {ImageColor3 =
COLORS.TEXT_MUTED})
tween:Play()
local borderTween = TweenService:Create(border, tweenInfo, {Color =
COLORS.GLASS_BORDER})
borderTween:Play()
end)
toolBtn.MouseButton1Down:Connect(function()
local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(toolBtn, tweenInfo, {Size = UDim2.new(0,
38, 0, 38), Position = UDim2.new(0, (i-1) * 50 + 21, 0, 11)})
tween:Play()
end)
toolBtn.MouseButton1Up:Connect(function()
local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(toolBtn, tweenInfo, {Size = UDim2.new(0,
40, 0, 40), Position = UDim2.new(0, (i-1) * 50 + 20, 0, 10)})
tween:Play()
end)
end
-- Create main content area
local contentArea = createRoundedFrame("ContentArea", UDim2.new(1, 0, 1, -220),
UDim2.new(0, 0, 0, 170), COLORS.DARK_BG, mainFrame)
contentArea.CornerRadius = UDim.new(0, 0)
-- Create particle effects in content area
local particles = {}
for i = 1, 100 do
local particle = Instance.new("Frame")
particle.Name = "Particle_" .. i
particle.Size = UDim2.new(0, math.random(1, 4), 0, math.random(1, 4))
particle.Position = UDim2.fromScale(math.random(), math.random())
particle.BackgroundColor3 = COLORS.ACCENT
particle.BackgroundTransparency = math.random(4, 9) / 10
particle.BorderSizePixel = 0
local corner = Instance.new("UICorner", particle)
corner.CornerRadius = UDim.new(1, 0)
particle.Parent = contentArea
table.insert(particles, particle)
end
-- Create glow effects
for i = 1, 3 do
local glow = Instance.new("Frame")
glow.Name = "Glow_" .. i
glow.Size = UDim2.new(0, 300, 0, 300)
glow.Position = UDim2.fromScale(math.random(), math.random())
glow.AnchorPoint = Vector2.new(0.5, 0.5)
glow.BackgroundColor3 = COLORS.ACCENT
glow.BackgroundTransparency = 0.9
glow.BorderSizePixel = 0
local corner = Instance.new("UICorner", glow)
corner.CornerRadius = UDim.new(1, 0)
local gradient = Instance.new("UIGradient", glow)
gradient.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.7),
NumberSequenceKeypoint.new(1, 1)
})
glow.Parent = contentArea
end
-- Create status bar
local statusBar = createRoundedFrame("StatusBar", UDim2.new(1, 0, 0, 50),
UDim2.new(0, 0, 1, -50), COLORS.DARKER_BG, mainFrame)
statusBar.CornerRadius = UDim.new(0, 0)
-- Create status indicators
local statusLeft = Instance.new("Frame")
statusLeft.Name = "StatusLeft"
statusLeft.Size = UDim2.new(0.7, 0, 1, 0)
statusLeft.Position = UDim2.new(0, 20, 0, 0)
statusLeft.BackgroundTransparency = 1
statusLeft.Parent = statusBar
-- Create wifi icon
local wifiIcon = createIcon("WifiIcon", "rbxassetid://7734053037", UDim2.new(0, 16,
0, 16), UDim2.new(0, 0, 0.5, -8), COLORS.TEXT_MUTED, statusLeft)
-- Create cloud icon
local cloudIcon = createIcon("CloudIcon", "rbxassetid://7734053037", UDim2.new(0,
16, 0, 16), UDim2.new(0, 40, 0.5, -8), COLORS.TEXT_MUTED, statusLeft)
-- Create connected status
local connectedStatus = Instance.new("Frame")
connectedStatus.Name = "ConnectedStatus"
connectedStatus.Size = UDim2.new(0, 100, 0, 20)
connectedStatus.Position = UDim2.new(0, 80, 0.5, -10)
connectedStatus.BackgroundTransparency = 1
connectedStatus.Parent = statusLeft
local connectedText = createTextLabel("ConnectedText", "Connected", UDim2.new(0,
80, 0, 20), UDim2.new(0, 0, 0, 0), COLORS.TEXT_MUTED, connectedStatus, 14)
local connectedDot = createRoundedFrame("ConnectedDot", UDim2.new(0, 8, 0, 8),
UDim2.new(0, 85, 0.5, -4), COLORS.ACCENT, connectedStatus)
connectedDot.UICorner.CornerRadius = UDim.new(1, 0)
-- Create synced status
local syncedStatus = Instance.new("Frame")
syncedStatus.Name = "SyncedStatus"
syncedStatus.Size = UDim2.new(0, 100, 0, 20)
syncedStatus.Position = UDim2.new(0, 190, 0.5, -10)
syncedStatus.BackgroundTransparency = 1
syncedStatus.Parent = statusLeft
local syncedText = createTextLabel("SyncedText", "Synced", UDim2.new(0, 60, 0, 20),
UDim2.new(0, 0, 0, 0), COLORS.TEXT_MUTED, syncedStatus, 14)
local syncedDot = createRoundedFrame("SyncedDot", UDim2.new(0, 8, 0, 8),
UDim2.new(0, 65, 0.5, -4), COLORS.ACCENT, syncedStatus)
syncedDot.UICorner.CornerRadius = UDim.new(1, 0)
-- Create status dots
local statusDots = Instance.new("Frame")
statusDots.Name = "StatusDots"
statusDots.Size = UDim2.new(0, 100, 0, 8)
statusDots.Position = UDim2.new(0, 300, 0.5, -4)
statusDots.BackgroundTransparency = 1
statusDots.Parent = statusLeft
for i = 1, 5 do
local dot = createRoundedFrame("Dot_" .. i, UDim2.new(0, 6, 0, 6), UDim2.new(0,
(i-1) * 15, 0, 1), COLORS.TEXT_MUTED, statusDots)
dot.UICorner.CornerRadius = UDim.new(1, 0)
-- Create blinking animation
spawn(function()
while true do
wait(math.random(2, 5))
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(dot, tweenInfo, {BackgroundColor3 =
COLORS.ACCENT})
tween:Play()
wait(0.5)
local tweenBack = TweenService:Create(dot, tweenInfo, {BackgroundColor3
= COLORS.TEXT_MUTED})
tweenBack:Play()
end
end)
end
-- Create status right
local statusRight = Instance.new("Frame")
statusRight.Name = "StatusRight"
statusRight.Size = UDim2.new(0.3, -20, 1, 0)
statusRight.Position = UDim2.new(0.7, 0, 0, 0)
statusRight.BackgroundTransparency = 1
statusRight.Parent = statusBar
-- Create right status buttons
local rightIcons = {
{name = "Search", icon = "rbxassetid://7734053037"},
{name = "Lightning", icon = "rbxassetid://7734053037"},
{name = "Moon", icon = "rbxassetid://7734053037"},
{name = "User", icon = "rbxassetid://7734053037"}
}
for i, item in ipairs(rightIcons) do
local iconBtn = createButton("IconBtn_" .. item.name, UDim2.new(0, 36, 0, 36),
UDim2.new(1, -((#rightIcons - i + 1) * 46), 0.5, -18), COLORS.GLASS, statusRight)
-- Add border
local border = Instance.new("UIStroke", iconBtn)
border.Color = COLORS.GLASS_BORDER
border.Thickness = 1
local icon = createIcon("Icon", item.icon, UDim2.new(0, 18, 0, 18),
UDim2.new(0.5, -9, 0.5, -9), COLORS.TEXT_MUTED, iconBtn)
-- Add hover and click effects
iconBtn.MouseEnter:Connect(function()
local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(icon, tweenInfo, {ImageColor3 =
COLORS.TEXT})
tween:Play()
local borderTween = TweenService:Create(border, tweenInfo, {Color =
COLORS.ACCENT})
borderTween:Play()
end)
iconBtn.MouseLeave:Connect(function()
local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(icon, tweenInfo, {ImageColor3 =
COLORS.TEXT_MUTED})
tween:Play()
local borderTween = TweenService:Create(border, tweenInfo, {Color =
COLORS.GLASS_BORDER})
borderTween:Play()
end)
end
-- Animate particles
local function animateParticles()
for _, particle in ipairs(particles) do
local randomX = (math.random() - 0.5) * 0.003
local randomY = (math.random() - 0.5) * 0.003
local currentPosition = particle.Position
local newPosition = UDim2.new(
currentPosition.X.Scale + randomX,
currentPosition.X.Offset,
currentPosition.Y.Scale + randomY,
currentPosition.Y.Offset
)
-- Keep particles within bounds
if newPosition.X.Scale > 0 and newPosition.X.Scale < 1 and
newPosition.Y.Scale > 0 and newPosition.Y.Scale < 1 then
particle.Position = newPosition
end
-- Random transparency changes
local currentTransparency = particle.BackgroundTransparency
local newTransparency = currentTransparency + (math.random() - 0.5) * 0.05
particle.BackgroundTransparency = math.clamp(newTransparency, 0.4, 0.9)
end
end
-- Animate glows
local function animateGlows()
for i, glow in ipairs(contentArea:GetChildren()) do
if glow.Name:find("Glow_") then
local time = tick() * 0.1
local offsetX = math.sin(time + i) * 0.05
local offsetY = math.cos(time + i * 2) * 0.05
local currentPosition = glow.Position
local newPosition = UDim2.new(
currentPosition.X.Scale + offsetX * 0.01,
currentPosition.X.Offset,
currentPosition.Y.Scale + offsetY * 0.01,
currentPosition.Y.Offset
)
glow.Position = newPosition
end
end
end
-- Animate status dots
local function animateStatusDots()
for _, dot in ipairs(connectedDot:GetChildren()) do
if dot.Name:find("Dot_") then
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad,
Enum.EasingDirection.InOut, -1, true)
local tween = TweenService:Create(dot, tweenInfo,
{BackgroundTransparency = 0.7})
tween:Play()
end
end
end
-- Run animations
RunService.RenderStepped:Connect(function()
animateParticles()
animateGlows()
end)
-- Pulse effect for status dots
spawn(function()
while true do
local tweenInfo = TweenInfo.new(1.5, Enum.EasingStyle.Quad,
Enum.EasingDirection.InOut, -1, true)
local tweenConnected = TweenService:Create(connectedDot, tweenInfo, {
Size = UDim2.new(0, 10, 0, 10),
Position = UDim2.new(0, 84, 0.5, -5),
BackgroundTransparency = 0.5
})
tweenConnected:Play()
local tweenSynced = TweenService:Create(syncedDot, tweenInfo, {
Size = UDim2.new(0, 10, 0, 10),
Position = UDim2.new(0, 64, 0.5, -5),
BackgroundTransparency = 0.5
})
tweenSynced:Play()
wait(3)
end
end)
-- Mouse hover effect for content area
contentArea.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
local mousePos = UserInputService:GetMouseLocation()
local contentAreaPos = contentArea.AbsolutePosition
local contentAreaSize = contentArea.AbsoluteSize
local relativeX = (mousePos.X - contentAreaPos.X) / contentAreaSize.X
local relativeY = (mousePos.Y - contentAreaPos.Y) / contentAreaSize.Y
-- Move glows based on mouse position
for i, glow in ipairs(contentArea:GetChildren()) do
if glow.Name:find("Glow_") then
local factor = (i * 20)
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out)
local tween = TweenService:Create(glow, tweenInfo, {
Position = UDim2.new(
relativeX + (i * 0.1),
0,
relativeY + (i * 0.05),
0
)
})
tween:Play()
end
end
end
end)
print("Veta UI has been loaded successfully!")