--!nocheck
-- trident ui - sleek mobile shell
local library = loadstring(game:HttpGet("https://raw.githubusercontent.com/i77lhm/Libraries/refs/heads/main/Millenium/Library.lua"))()
local TEAL = Color3.fromRGB(16, 185, 129)
local BG = Color3.fromRGB(14, 16, 20)
local CARD = Color3.fromRGB(28, 32, 40)
local TEXT = Color3.fromRGB(232, 238, 244)
local MUTED = Color3.fromRGB(128, 140, 150)
local STROKE = Color3.fromRGB(38, 45, 55)
library:update_theme("accent", TEAL)
-- clear stale windows (library names them "\0", not "")
for _, g in ipairs(game:GetService("CoreGui"):GetChildren()) do
if g:IsA("ScreenGui") and (g.Name == "" or g.Name == "\0") then g:Destroy() end
end
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local MarketplaceService = game:GetService("MarketplaceService")
local Camera = workspace.CurrentCamera
local isMobile = UIS.TouchEnabled and not UIS.KeyboardEnabled
local view = Camera.ViewportSize
local panelW, panelH
if isMobile then
panelW = math.clamp(view.X * 0.90, 280, 440)
panelH = math.clamp(view.Y - 100, 340, 700)
else
panelW, panelH = 760, 660
end
local barW = isMobile and math.clamp(view.X * 0.28, 110, 150) or 160
local logoSize = isMobile and 30 or 42
local infoTextRef = nil
local window = library:window({
name = "TRIDENT",
suffix = "",
gameInfo = "trident",
size = UDim2.fromOffset(panelW, panelH),
})
local main = window.items["main"]
-- kill the library's shadow frame (sticks out past rounded corners)
for _, c in ipairs(main:GetChildren()) do
if c:IsA("ImageLabel") and c.ZIndex <= -50 then c:Destroy() end
if c:IsA("UICorner") or c:IsA("UIStroke") then c:Destroy() end
end
-- kill the library's default title label and info bar entirely
if window.items["title"] then window.items["title"]:Destroy() end
local infoFrame = window.items["info"]
if infoFrame then
for _, c in ipairs(infoFrame:GetChildren()) do
c:Destroy()
end
infoFrame:Destroy()
end
main.BackgroundColor3 = BG
main.BackgroundTransparency = 0.03
main.Active = true
main.ClipsDescendants = true
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 16)
corner.Parent = main
local stroke = Instance.new("UIStroke")
stroke.Color = STROKE
stroke.Thickness = 1.5
stroke.Transparency = 0.4
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = main
-- ============ header branding (centered logo) ============
do
local side = window.items["side_frame"]
side.BackgroundTransparency = 1
side.Size = UDim2.new(0, barW, 1, -25)
window.items["multi_holder"].Position = UDim2.new(0, barW, 0, 0)
window.items["multi_holder"].Size = UDim2.new(1, -barW, 0, 56)
window.items["global_fade"].Position = UDim2.new(0, barW, 0, 56)
window.items["global_fade"].Size = UDim2.new(1, -barW, 1, -81)
window.items["multi_holder"].BackgroundTransparency = 1
local logoW = logoSize * 1.9
local header = library:create("Frame", {
Parent = side;
Name = "Header";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(0, 0, 0, 20);
Size = UDim2.new(1, 0, 0, logoW + 8);
})
library:create("ImageLabel", {
Parent = header;
Name = "Logo";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(0.5, -logoW / 2, 0, 0);
Size = UDim2.new(0, logoW, 0, logoW);
Image = "rbxassetid://90829033870443";
ImageColor3 = TEAL;
ScaleType = Enum.ScaleType.Fit;
})
local infoText = library:create("TextLabel", {
Parent = side;
Name = "InfoText";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(0, 14, 1, -22);
Size = UDim2.new(0, barW - 28, 0, 14);
Font = Enum.Font.Gotham;
RichText = true;
Text = 'trident shell teal';
TextColor3 = MUTED;
TextSize = isMobile and 9 or 11;
TextXAlignment = Enum.TextXAlignment.Left;
BackgroundColor3 = Color3.fromRGB(255, 255, 255);
})
infoTextRef = infoText
local wordmark = library:create("TextLabel", {
Parent = side;
Name = "Wordmark";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(0, 14, 1, -6);
Size = UDim2.new(0, barW - 28, 0, 14);
Font = Enum.Font.GothamBold;
RichText = true;
Text = "TRIDENT";
TextColor3 = TEXT;
TextSize = isMobile and 11 or 14;
TextXAlignment = Enum.TextXAlignment.Left;
BackgroundColor3 = Color3.fromRGB(255, 255, 255);
})
end
-- ============ tab bar styling ============
for _, c in ipairs(window.items["button_holder"]:GetChildren()) do
if c:IsA("TextButton") then
c.BackgroundTransparency = 0.2
c.BackgroundColor3 = CARD
c.TextColor3 = MUTED
c.TextSize = isMobile and 11 or 12
c.Font = Enum.Font.GothamBold
c.AutoButtonColor = false
c.BorderSizePixel = 0
c.ClipsDescendants = true
for _, ch in ipairs(c:GetChildren()) do
if ch:IsA("UICorner") or ch:IsA("UIStroke") then ch:Destroy() end
end
local ccorner = Instance.new("UICorner")
ccorner.CornerRadius = UDim.new(0, 10)
ccorner.Parent = c
local cstroke = Instance.new("UIStroke")
cstroke.Color = STROKE
cstroke.Thickness = 1
cstroke.Transparency = 0.6
cstroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
cstroke.Parent = c
elseif c:IsA("TextLabel") then
c.TextColor3 = MUTED
c.TextSize = isMobile and 10 or 11
c.Font = Enum.Font.GothamBold
end
end
-- fix tab layout to match custom sidebar width
local function fixTabLayout()
for _, child in ipairs(main:GetChildren()) do
if child:IsA("Frame") then
local sx = child.Size.X.Offset
local py = child.Position.Y.Offset
if sx < -50 and py >= 0 then
child.Size = UDim2.new(1, -barW, 1, -81)
child.Position = UDim2.new(0, barW, 0, py)
end
end
end
end
-- fix tab page width so content fills the page and isn't pushed right
local function fixPageWidths()
for _, child in ipairs(main:GetChildren()) do
if child:IsA("Frame") then
local sx = child.Size.X.Offset
local py = child.Position.Y.Offset
if sx < -50 and py >= 50 then
for _, page in ipairs(child:GetChildren()) do
if page:IsA("Frame") then
page.Size = UDim2.new(1, 0, 1, 0)
for _, column in ipairs(page:GetChildren()) do
if column:IsA("Frame") then
column.Size = UDim2.new(1, 0, column.Size.Y.Scale, column.Size.Y.Offset)
for _, outline in ipairs(column:GetChildren()) do
if outline:IsA("Frame") and outline.Name == "\0" then
outline.Size = UDim2.new(1, 0, outline.Size.Y.Scale, outline.Size.Y.Offset)
end
end
end
end
end
end
end
end
end
end
-- fix dropdown labels so they go above the dropdown on mobile instead of phasing into it
local function fixDropdowns()
if not sections then return end
for _, section in ipairs(sections) do
local inline = section.items and section.items["inline"]
if not inline then continue end
for _, child in ipairs(inline:GetChildren()) do
if child:IsA("Frame") then
local btn, label
for _, elem in ipairs(child:GetChildren()) do
if elem:IsA("TextButton") then btn = elem end
if elem:IsA("TextLabel") and elem ~= btn then label = elem end
end
if btn and label and isMobile then
label.Position = UDim2.new(0, 10, 0, -15)
label.Size = UDim2.new(1, -20, 0, 14)
label.TextXAlignment = Enum.TextXAlignment.Left
label.TextSize = 12
label.BackgroundTransparency = 1
label.TextColor3 = MUTED
btn.Position = UDim2.new(0, 10, 0, 3)
btn.Size = UDim2.new(1, -20, 0, 26)
end
end
end
end
end
-- ============ content ============
window:seperator({name = "General"})
local combat, visuals, misc = window:tab({name = "Main", tabs = {"Combat", "Visuals", "Misc"}})
local sections = {}
for _, tab in {combat, visuals, misc} do
local column = tab:column({})
local section = column:section({name = "General", default = true})
table.insert(sections, section)
section:label({name = "Trident UI", info = "Sleek shell — trident decal, teal theme."})
section:toggle({name = "Enabled", seperator = true, callback = function(bool) print("trident:", bool) end}):colorpicker({})
section:dropdown({name = "Mode", items = {"Legit", "Rage", "Silent"}, default = "Legit", seperator = true})
section:slider({name = "Smoothness", min = 1, max = 10, interval = 0.1, default = 5, seperator = true, info = "Aim smoothing."})
section:toggle({name = "Draw FOV", seperator = true}):colorpicker({})
section:keybind({name = "Panic Key", callback = function(k) print("panic:", k) end, info = "Unloads menu."})
end
do
local column = combat:column({})
local section = column:section({name = "Combat", default = true})
table.insert(sections, section)
section:toggle({name = "Silent Aim", seperator = true, callback = function(b) print("silent aim:", b) end}):colorpicker({})
section:toggle({name = "Team Check", seperator = true})
section:dropdown({name = "Hitbox", items = {"Head", "UpperTorso", "HumanoidRootPart"}, default = "Head", seperator = true})
section:slider({name = "FOV", min = 0, max = 360, interval = 1, default = 90, seperator = true})
end
do
local column = visuals:column({})
local section = column:section({name = "ESP", default = true})
table.insert(sections, section)
section:toggle({name = "Boxes", seperator = true}):colorpicker({})
section:toggle({name = "Names", seperator = true}):colorpicker({})
section:toggle({name = "Health Bars", seperator = true}):colorpicker({})
section:toggle({name = "Chams", seperator = true}):colorpicker({})
section:dropdown({name = "Font", items = {"Gotham", "Arial", "SourceSans"}, default = "Gotham", seperator = true})
end
do
local column = misc:column({})
local section = column:section({name = "Misc", default = true})
table.insert(sections, section)
section:toggle({name = "Watermark", seperator = true, callback = function(b) print("watermark:", b) end})
section:toggle({name = "Console", seperator = true})
section:button({name = "Unload UI", callback = function()
if library.unload_menu then library:unload_menu() end
print("trident unloaded")
end, seperator = true})
end
-- section restyling
for _, section in ipairs(sections) do
local outline = section.items and section.items["outline"]
local inline = section.items and section.items["inline"]
local column = outline and outline.Parent
if column and column:IsA("Frame") then
column.Size = UDim2.new(1, 0, column.Size.Y.Scale, column.Size.Y.Offset)
end
if outline then
outline.BackgroundColor3 = CARD
outline.BackgroundTransparency = 0.2
outline.Size = UDim2.new(1, 0, outline.Size.Y.Scale, outline.Size.Y.Offset)
for _, c in ipairs(outline:GetChildren()) do
if c:IsA("UICorner") then c:Destroy() end
end
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = outline
local stroke = Instance.new("UIStroke")
stroke.Color = STROKE
stroke.Thickness = 1
stroke.Transparency = 0.6
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = outline
end
if inline then
inline.BackgroundColor3 = BG
inline.BackgroundTransparency = 0.1
inline.Size = UDim2.new(1, -2, inline.Size.Y.Scale, inline.Size.Y.Offset)
for _, c in ipairs(inline:GetChildren()) do
if c:IsA("UICorner") then c:Destroy() end
end
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = inline
end
end
-- ============ drag: invisible header zone, mobile-aware ============
do
local headerBar = library:create("Frame", {
Parent = main;
Name = "DragZone";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(0, 0, 0, 0);
Size = UDim2.new(1, 0, 0, isMobile and 80 or 56);
Active = true;
ZIndex = 40;
})
local dzCorner = Instance.new("UICorner")
dzCorner.CornerRadius = UDim.new(0, 16)
dzCorner.Parent = headerBar
local dragging = false
local startPos, startScreen
headerBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
dragging = true
startPos = input.Position
startScreen = main.Position
end
end)
headerBar.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
UIS.TouchMoved:Connect(function(touch)
if dragging then
local delta = touch.Position - startPos
main.Position = UDim2.new(0, startScreen.X.Offset + delta.X, 0, startScreen.Y.Offset + delta.Y)
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - startPos
main.Position = UDim2.new(0, startScreen.X.Offset + delta.X, 0, startScreen.Y.Offset + delta.Y)
end
end)
end
-- ============ resize handle (invisible, easy to grab on mobile) ============
do
local handle = library:create("Frame", {
Parent = main;
Name = "ResizeHandle";
BackgroundTransparency = 1;
BorderSizePixel = 0;
Position = UDim2.new(1, -26, 1, -26);
Size = UDim2.new(0, 26, 0, 26);
Active = true;
ZIndex = 60;
})
local resizing = false
local rStart, rSize
handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
resizing = true
rStart = input.Position
rSize = Vector2.new(main.Size.X.Offset, main.Size.Y.Offset)
end
end)
handle.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
resizing = false
end
end)
UIS.TouchMoved:Connect(function(touch)
if resizing then
local delta = touch.Position - rStart
local minW = isMobile and 260 or 400
local maxW = isMobile and (view.X - 20) or 1200
local minH = isMobile and 300 or 350
local maxH = isMobile and (view.Y - 20) or 900
main.Size = UDim2.new(0, math.clamp(rSize.X + delta.X, minW, maxW), 0, math.clamp(rSize.Y + delta.Y, minH, maxH))
end
end)
UIS.InputChanged:Connect(function(input)
if resizing and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - rStart
local minW = isMobile and 260 or 400
local maxW = isMobile and (view.X - 20) or 1200
local minH = isMobile and 300 or 350
local maxH = isMobile and (view.Y - 20) or 900
main.Size = UDim2.new(0, math.clamp(rSize.X + delta.X, minW, maxW), 0, math.clamp(rSize.Y + delta.Y, minH, maxH))
end
end)
end
-- ============ close / open buttons (mobile) ============
do
local closeBtn = library:create("TextButton", {
Parent = main;
Name = "CloseBtn";
BackgroundColor3 = Color3.fromRGB(20, 24, 30);
BackgroundTransparency = 0.15;
BorderSizePixel = 0;
Position = UDim2.new(1, -26, 0, 10);
Size = UDim2.new(0, 20, 0, 20);
Active = true;
ZIndex = 50;
Text = "×";
TextColor3 = MUTED;
TextSize = isMobile and 16 or 18;
Font = Enum.Font.GothamBold;
})
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(1, 0)
closeCorner.Parent = closeBtn
-- open button: floating decal button with visible background circle
local openBtn = library:create("ImageButton", {
Parent = main.Parent;
Name = "OpenBtn";
BackgroundColor3 = Color3.fromRGB(20, 24, 30);
BackgroundTransparency = 0.1;
BorderSizePixel = 0;
Position = UDim2.new(0, 12, 0, 100);
Size = UDim2.new(0, 48, 0, 48);
Active = true;
ZIndex = 50;
Visible = false;
Image = "rbxassetid://90829033870443";
ImageColor3 = TEAL;
})
local openCorner = Instance.new("UICorner")
openCorner.CornerRadius = UDim.new(1, 0)
openCorner.Parent = openBtn
local openStroke = Instance.new("UIStroke")
openStroke.Color = TEAL
openStroke.Thickness = 2
openStroke.Transparency = 0.3
openStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
openStroke.Parent = openBtn
closeBtn.MouseButton1Click:Connect(function()
main.Visible = false
openBtn.Visible = true
end)
openBtn.MouseButton1Click:Connect(function()
main.Visible = true
openBtn.Visible = false
end)
-- drag open button on mobile
local obDragging = false
local obStartPos, obStartScreen
openBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
obDragging = true
obStartPos = input.Position
obStartScreen = openBtn.Position
end
end)
openBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch then
obDragging = false
end
end)
UIS.TouchMoved:Connect(function(touch)
if obDragging then
local delta = touch.Position - obStartPos
openBtn.Position = UDim2.new(0, obStartScreen.X.Offset + delta.X, 0, obStartScreen.Y.Offset + delta.Y)
end
end)
end
-- ============ FPS + game name counter ============
do
local fps = 0
local frames = 0
local lastTime = tick()
RunService.Heartbeat:Connect(function()
frames += 1
local now = tick()
if now - lastTime >= 1 then
fps = frames
frames = 0
lastTime = now
end
end)
local gameName = "Unknown Game"
local ok, info = pcall(function() return MarketplaceService:GetProductInfo(game.PlaceId) end)
if ok and info then gameName = info.Name end
local infoText = infoTextRef
task.spawn(function()
while main and main.Parent do
if infoText then
infoText.Text = string.format('%s %d FPS', gameName, fps)
end
task.wait(1)
end
end)
end
-- ============ final layout pass (init_config adds Configs tab) ============
library:init_config(window)
-- enforce final layout (init_config overrides size/position)
main.Size = UDim2.fromOffset(panelW, panelH)
main.Position = UDim2.new(0, math.max(10, (view.X - panelW) / 2), 0, isMobile and 90 or 100)
main.ClipsDescendants = true
fixTabLayout()
fixPageWidths()
fixDropdowns()
-- re-fix whenever a tab is selected
for _, c in ipairs(window.items["button_holder"]:GetChildren()) do
if c:IsA("TextButton") then
c.MouseButton1Click:Connect(function()
task.wait(0.05)
fixTabLayout()
fixPageWidths()
fixDropdowns()
end)
end
end
-- final enforcement after everything settles
task.delay(0.5, function()
main.Size = UDim2.fromOffset(panelW, panelH)
main.Position = UDim2.new(0, math.max(10, (view.X - panelW) / 2), 0, isMobile and 90 or 100)
main.ClipsDescendants = true
fixTabLayout()
fixPageWidths()
fixDropdowns()
end)