
KeylessUniversal

--[[
Dragonic Team | Brookhaven 🏡 | By Lightbolt_dev
------------------------------------------------
Interface (GUI) para Roblox.
O QUE MUDOU NESTA VERSÃO:
- As categorias (Geral / Info / Jogador / Troll All) agora ficam na
TELA INICIAL do menu (assim que você abre a bolinha), e não mais
dentro da engrenagem.
- A engrenagem (⚙) agora abre só um painel de APARÊNCIA (cor, fonte,
som) — bem mais simples e sem misturar com as categorias.
- Corrigido o bug da "sombra cinza" que aparecia desalinhada ou do
tamanho errado atrás do menu: agora ela é recalculada automaticamente
toda vez que o menu muda de tamanho ou posição.
- Cada categoria agora tem funções reais (não é só um texto de
placeholder):
> Geral: qualidade gráfica (FPS) e zoom da câmera (FOV)
> Jogador: velocidade (WalkSpeed), pulo (JumpPower) e resetar
> Troll All: correr sozinho, confete na tela e som engraçado
(tudo isso só mexe no SEU personagem/tela, nunca no de outros
jogadores sem consentimento)
--]]
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- CONFIGURAÇÕES GERAIS (o painel de aparência mexe nisso aqui)
local Config = {
ThemeColor = Color3.fromRGB(138, 92, 246), -- cor padrão (roxo)
Font = Enum.Font.GothamBold, -- fonte padrão
SoundEnabled = true,
}
-- INFORMAÇÕES DO DISCORD (aba "Info")
local DiscordInfo = {
ServerName = "Dragonic Team",
InviteLink = "https://discord.gg/SEU-LINK-AQUI", -- troque pelo link real do server
IconImage = "", -- ex: "rbxassetid://0000000000"
BannerImage = "", -- banner ainda não criado, deixado em branco de propósito
}
-- INFORMAÇÕES DO CRIADOR / VERSÃO (aba "Info")
local DevInfo = {
Owner = "Lightbolt_dev",
Programmer = "Lightbolt_dev",
LastUpdate = "19/08/2026",
}
-- Troque cada "rbxassetid://..." pelo ID do som que você quiser usar.
local SoundIds = {
Click = "rbxassetid://6042053626",
Open = "rbxassetid://6895079853",
Close = "rbxassetid://6895079853",
Hover = "rbxassetid://6042053693",
Loaded = "rbxassetid://9126066864",
Funny = "rbxassetid://9046192365", -- troque por um som engraçado de sua escolha
}
local Texts = {
Settings = "Configurações",
Appearance = "Aparência da Interface",
Color = "Cor da Interface",
Font = "Fonte do Texto",
Sound = "Som dos Botões",
SoundOn = "Ativado",
SoundOff = "Desativado",
Confirm = "Você realmente quer sair do team Dragonic?",
Yes = "Sim",
No = "Não",
Loading = "Carregando interface...",
TabGeneral = "Geral",
TabInfo = "Info",
TabPlayer = "Jogador",
TabTroll = "Troll All",
Performance = "Desempenho (FPS)",
PerformanceHigh = "Qualidade: Alta",
PerformanceEco = "Qualidade: Economia",
Camera = "Câmera (Zoom / FOV)",
CameraReset = "Padrão",
PlayerStats = "Estatísticas do Jogador",
WalkSpeed = "Velocidade",
JumpPower = "Força do Pulo",
ResetCharacter = "Resetar Personagem",
TrollSection = "Diversão (só no seu personagem)",
AutoRunOn = "Auto-Correr: Ligado",
AutoRunOff = "Auto-Correr: Desligado",
Confetti = "Soltar Confete",
FunnySound = "Tocar Som Engraçado",
Discord = "Discord",
JoinServer = "Entrar no Server",
LinkCopied = "Link copiado!",
NoClipboard = "Copie manualmente",
Owner = "Dono",
Programmer = "Programador",
Platform = "Plataforma",
Update = "Atualização",
PlatformMobile = "Mobile",
PlatformPC = "PC",
PlatformConsole = "Console",
}
local function T(key)
return Texts[key]
end
-- SISTEMA DE SOM
local function playSound(soundName, volume)
if not Config.SoundEnabled and soundName ~= "Loaded" then return end
local id = SoundIds[soundName]
if not id then return end
local sound = Instance.new("Sound")
sound.SoundId = id
sound.Volume = volume or 0.5
sound.Parent = playerGui
sound:Play()
sound.Ended:Connect(function()
sound:Destroy()
end)
end
-- DETECTA A PLATAFORMA DO JOGADOR (Mobile / PC / Console)
local function getPlatformName()
if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled and not UserInputService.MouseEnabled then
return T("PlatformMobile")
elseif UserInputService.GamepadEnabled and not UserInputService.KeyboardEnabled and not UserInputService.TouchEnabled then
return T("PlatformConsole")
else
return T("PlatformPC")
end
end
-- ÍCONES VETORIAIS (feitos só com Frames — sem emoji, sem fonte)
local function createGeneralIcon(parent, size, color)
local icon = Instance.new("Frame")
icon.Name = "GeneralIcon"
icon.Size = UDim2.new(0, size, 0, size)
icon.BackgroundTransparency = 1
icon.Parent = parent
local yPositions = {0.18, 0.5, 0.82}
local dotX = {0.72, 0.28, 0.6}
for i = 1, 3 do
local line = Instance.new("Frame")
line.Name = "Line" .. i
line.Size = UDim2.new(1, 0, 0, 2)
line.Position = UDim2.new(0, 0, yPositions[i], -1)
line.BackgroundColor3 = color
line.BackgroundTransparency = 0.35
line.BorderSizePixel = 0
line.Parent = icon
local dot = Instance.new("Frame")
dot.Name = "Dot" .. i
dot.Size = UDim2.new(0, 5, 0, 5)
dot.AnchorPoint = Vector2.new(0.5, 0.5)
dot.Position = UDim2.new(dotX[i], 0, yPositions[i], 0)
dot.BackgroundColor3 = color
dot.BorderSizePixel = 0
dot.ZIndex = 2
dot.Parent = icon
local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = dot
end
return icon
end
local function createInfoIcon(parent, size, color)
local icon = Instance.new("Frame")
icon.Name = "InfoIcon"
icon.Size = UDim2.new(0, size, 0, size)
icon.BackgroundTransparency = 1
icon.Parent = parent
local circleStroke = Instance.new("UIStroke")
circleStroke.Name = "CircleStroke"
circleStroke.Color = color
circleStroke.Thickness = 1.5
circleStroke.Transparency = 0.25
circleStroke.Parent = icon
local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1, 0)
circleCorner.Parent = icon
local dot = Instance.new("Frame")
dot.Name = "Dot"
dot.Size = UDim2.new(0, 3, 0, 3)
dot.AnchorPoint = Vector2.new(0.5, 0.5)
dot.Position = UDim2.new(0.5, 0, 0.28, 0)
dot.BackgroundColor3 = color
dot.BorderSizePixel = 0
dot.Parent = icon
local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = dot
local stem = Instance.new("Frame")
stem.Name = "Stem"
stem.Size = UDim2.new(0, 3, 0, size * 0.36)
stem.AnchorPoint = Vector2.new(0.5, 0)
stem.Position = UDim2.new(0.5, 0, 0.46, 0)
stem.BackgroundColor3 = color
stem.BorderSizePixel = 0
stem.Parent = icon
local stemCorner = Instance.new("UICorner")
stemCorner.CornerRadius = UDim.new(1, 0)
stemCorner.Parent = stem
return icon
end
local function createPlayerIcon(parent, size, color)
local icon = Instance.new("Frame")
icon.Name = "PlayerIcon"
icon.Size = UDim2.new(0, size, 0, size)
icon.BackgroundTransparency = 1
icon.Parent = parent
local head = Instance.new("Frame")
head.Name = "Head"
head.Size = UDim2.new(0, size * 0.34, 0, size * 0.34)
head.AnchorPoint = Vector2.new(0.5, 0)
head.Position = UDim2.new(0.5, 0, 0.06, 0)
head.BackgroundColor3 = color
head.BorderSizePixel = 0
head.Parent = icon
local headCorner = Instance.new("UICorner")
headCorner.CornerRadius = UDim.new(1, 0)
headCorner.Parent = head
local body = Instance.new("Frame")
body.Name = "Body"
body.Size = UDim2.new(0, size * 0.68, 0, size * 0.42)
body.AnchorPoint = Vector2.new(0.5, 1)
body.Position = UDim2.new(0.5, 0, 1, 0)
body.BackgroundColor3 = color
body.BorderSizePixel = 0
body.Parent = icon
local bodyCorner = Instance.new("UICorner")
bodyCorner.CornerRadius = UDim.new(0, 5)
bodyCorner.Parent = body
return icon
end
local function createTrollIcon(parent, size, color)
local icon = Instance.new("Frame")
icon.Name = "TrollIcon"
icon.Size = UDim2.new(0, size, 0, size)
icon.BackgroundTransparency = 1
icon.Parent = parent
local face = Instance.new("Frame")
face.Name = "Face"
face.Size = UDim2.new(1, 0, 1, 0)
face.BackgroundTransparency = 1
face.Parent = icon
local faceStroke = Instance.new("UIStroke")
faceStroke.Color = color
faceStroke.Thickness = 1.5
faceStroke.Transparency = 0.2
faceStroke.Parent = face
local faceCorner = Instance.new("UICorner")
faceCorner.CornerRadius = UDim.new(1, 0)
faceCorner.Parent = face
local eyeLeft = Instance.new("Frame")
eyeLeft.Name = "EyeLeft"
eyeLeft.Size = UDim2.new(0, 3, 0, 3)
eyeLeft.Position = UDim2.new(0.28, 0, 0.36, 0)
eyeLeft.BackgroundColor3 = color
eyeLeft.BorderSizePixel = 0
eyeLeft.Parent = icon
local eyeLeftCorner = Instance.new("UICorner")
eyeLeftCorner.CornerRadius = UDim.new(1, 0)
eyeLeftCorner.Parent = eyeLeft
local eyeRight = eyeLeft:Clone()
eyeRight.Name = "EyeRight"
eyeRight.Position = UDim2.new(0.66, 0, 0.36, 0)
eyeRight.Parent = icon
local smile = Instance.new("Frame")
smile.Name = "Smile"
smile.Size = UDim2.new(0, size * 0.42, 0, 3)
smile.AnchorPoint = Vector2.new(0.5, 0.5)
smile.Position = UDim2.new(0.5, 0, 0.66, 0)
smile.BackgroundColor3 = color
smile.BorderSizePixel = 0
smile.Parent = icon
local smileCorner = Instance.new("UICorner")
smileCorner.CornerRadius = UDim.new(1, 0)
smileCorner.Parent = smile
return icon
end
-- TELA DE CARREGAMENTO (dura exatamente 5 segundos)
local function showLoadingScreen(onFinished)
local loadingGui = Instance.new("ScreenGui")
loadingGui.Name = "DragonicLoadingGui"
loadingGui.ResetOnSpawn = false
loadingGui.IgnoreGuiInset = true
loadingGui.Parent = playerGui
local background = Instance.new("Frame")
background.Size = UDim2.new(1, 0, 1, 0)
background.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
background.BackgroundTransparency = 0
background.Parent = loadingGui
local title = Instance.new("TextLabel")
title.Size = UDim2.new(0, 500, 0, 45)
title.Position = UDim2.new(0.5, -250, 0.42, -60)
title.BackgroundTransparency = 1
title.Text = "DRAGONIC TEAM"
title.TextColor3 = Config.ThemeColor
title.Font = Enum.Font.GothamBlack
title.TextSize = 34
title.Parent = background
local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(0, 500, 0, 20)
subtitle.Position = UDim2.new(0.5, -250, 0.42, -15)
subtitle.BackgroundTransparency = 1
subtitle.Text = "Brookhaven 🏡 | By Lightbolt_dev"
subtitle.TextColor3 = Color3.fromRGB(170, 170, 178)
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 14
subtitle.Parent = background
local barBackground = Instance.new("Frame")
barBackground.Size = UDim2.new(0, 320, 0, 8)
barBackground.Position = UDim2.new(0.5, -160, 0.42, 30)
barBackground.BackgroundColor3 = Color3.fromRGB(32, 32, 38)
barBackground.Parent = background
local barBgCorner = Instance.new("UICorner")
barBgCorner.CornerRadius = UDim.new(1, 0)
barBgCorner.Parent = barBackground
local barFill = Instance.new("Frame")
barFill.Size = UDim2.new(0, 0, 1, 0)
barFill.BackgroundColor3 = Config.ThemeColor
barFill.Parent = barBackground
local barFillCorner = Instance.new("UICorner")
barFillCorner.CornerRadius = UDim.new(1, 0)
barFillCorner.Parent = barFill
local percentLabel = Instance.new("TextLabel")
percentLabel.Size = UDim2.new(0, 320, 0, 18)
percentLabel.Position = UDim2.new(0.5, -160, 0.42, 44)
percentLabel.BackgroundTransparency = 1
percentLabel.Text = T("Loading") .. " 0%"
percentLabel.TextColor3 = Color3.fromRGB(200, 200, 205)
percentLabel.Font = Enum.Font.Gotham
percentLabel.TextSize = 12
percentLabel.Parent = background
local fillTween = TweenService:Create(
barFill,
TweenInfo.new(5, Enum.EasingStyle.Linear),
{Size = UDim2.new(1, 0, 1, 0)}
)
fillTween:Play()
local rgbRunning = true
task.spawn(function()
local hue = 0
while rgbRunning do
hue = (hue + 0.01) % 1
local rgbColor = Color3.fromHSV(hue, 0.85, 1)
title.TextColor3 = rgbColor
barFill.BackgroundColor3 = rgbColor
task.wait(0.03)
end
end)
task.spawn(function()
local startTime = os.clock()
while os.clock() - startTime < 5 do
local pct = math.clamp((os.clock() - startTime) / 5, 0, 1)
percentLabel.Text = T("Loading") .. " " .. math.floor(pct * 100) .. "%"
task.wait(0.03)
end
percentLabel.Text = T("Loading") .. " 100%"
end)
task.wait(5)
rgbRunning = false
playSound("Loaded", 0.6)
local fadeOut = TweenService:Create(background, TweenInfo.new(0.4), {BackgroundTransparency = 1})
TweenService:Create(title, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
TweenService:Create(subtitle, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
TweenService:Create(percentLabel, TweenInfo.new(0.4), {TextTransparency = 1}):Play()
fadeOut:Play()
fadeOut.Completed:Wait()
loadingGui:Destroy()
onFinished()
end
-- FUNÇÃO PRINCIPAL: monta toda a interface depois do loading
local function buildInterface()
local fontTargets = {}
local function trackFont(obj)
table.insert(fontTargets, obj)
return obj
end
-- 1) SCREENGUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DragonicClientUI"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = playerGui
-- 2) BOLINHA (botão flutuante lateral)
local toggleButton = Instance.new("ImageButton")
toggleButton.Name = "ToggleButton"
toggleButton.Size = UDim2.new(0, 0, 0, 0)
toggleButton.Position = UDim2.new(0, 10, 0.5, -31)
toggleButton.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
toggleButton.BackgroundTransparency = 0.2
toggleButton.Image = ""
toggleButton.AutoButtonColor = false
toggleButton.Parent = screenGui
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(1, 0)
toggleCorner.Parent = toggleButton
local toggleStroke = Instance.new("UIStroke")
toggleStroke.Color = Config.ThemeColor
toggleStroke.Transparency = 0.3
toggleStroke.Thickness = 2
toggleStroke.Parent = toggleButton
TweenService:Create(
toggleButton,
TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Size = UDim2.new(0, 62, 0, 62)}
):Play()
task.spawn(function()
while toggleButton.Parent do
TweenService:Create(toggleStroke, TweenInfo.new(1.2, Enum.EasingStyle.Sine), {Transparency = 0.8}):Play()
task.wait(1.2)
TweenService:Create(toggleStroke, TweenInfo.new(1.2, Enum.EasingStyle.Sine), {Transparency = 0.2}):Play()
task.wait(1.2)
end
end)
-- 3) JANELA PRINCIPAL (dark, translúcida, com sombra)
local WINDOW_WIDTH = 460
local WINDOW_HEIGHT = 380
-- ---- SOMBRA (corrigida) ----
-- Antes, a sombra tinha um tamanho e posição fixos, calculados só uma
-- vez. Isso fazia ela aparecer "grudada" no tamanho final do menu
-- mesmo enquanto ele ainda estava abrindo/fechando (o "bagulho cinza"
-- fora do menu). Agora ela é recalculada automaticamente toda vez que
-- o tamanho ou a posição real do mainFrame mudam — inclusive durante
-- as animações e o arrastar — então ela sempre acompanha o menu certinho.
local shadow = Instance.new("Frame")
shadow.Name = "MainShadow"
shadow.BackgroundTransparency = 1
shadow.BorderSizePixel = 0
shadow.ZIndex = 0
shadow.Visible = false
shadow.Parent = screenGui
local shadowCorner = Instance.new("UICorner")
shadowCorner.CornerRadius = UDim.new(0, 20)
shadowCorner.Parent = shadow
for i = 1, 4 do
local layer = Instance.new("Frame")
layer.Name = "ShadowLayer" .. i
layer.AnchorPoint = Vector2.new(0.5, 0.5)
layer.Position = UDim2.new(0.5, 0, 0.5, 0)
layer.Size = UDim2.new(1, -i * 10, 1, -i * 10)
layer.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
layer.BackgroundTransparency = 0.65 + (i * 0.06)
layer.BorderSizePixel = 0
layer.ZIndex = 0
layer.Parent = shadow
local layerCorner = Instance.new("UICorner")
layerCorner.CornerRadius = UDim.new(0, 16 - i)
layerCorner.Parent = layer
end
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, WINDOW_WIDTH, 0, WINDOW_HEIGHT)
mainFrame.Position = UDim2.new(0.5, -WINDOW_WIDTH / 2, 0.5, -WINDOW_HEIGHT / 2)
mainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
mainFrame.BackgroundTransparency = 0.15
mainFrame.Visible = false
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local SHADOW_MARGIN = 20
local function syncShadow()
shadow.Size = UDim2.new(
0, mainFrame.AbsoluteSize.X + SHADOW_MARGIN * 2,
0, mainFrame.AbsoluteSize.Y + SHADOW_MARGIN * 2
)
shadow.Position = UDim2.new(
0, mainFrame.AbsolutePosition.X - SHADOW_MARGIN,
0, mainFrame.AbsolutePosition.Y - SHADOW_MARGIN
)
end
mainFrame:GetPropertyChangedSignal("AbsoluteSize"):Connect(syncShadow)
mainFrame:GetPropertyChangedSignal("AbsolutePosition"):Connect(syncShadow)
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame
local mainStroke = Instance.new("UIStroke")
mainStroke.Color = Config.ThemeColor
mainStroke.Transparency = 0.6
mainStroke.Thickness = 1.5
mainStroke.Parent = mainFrame
local mainGradient = Instance.new("UIGradient")
mainGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(28, 28, 34)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(14, 14, 18)),
})
mainGradient.Rotation = 90
mainGradient.Parent = mainFrame
-- 4) BARRA DE TÍTULO
local topBar = Instance.new("Frame")
topBar.Name = "TopBar"
topBar.Size = UDim2.new(1, 0, 0, 40)
topBar.BackgroundColor3 = Color3.fromRGB(12, 12, 16)
topBar.BackgroundTransparency = 0.1
topBar.Parent = mainFrame
local topBarCorner = Instance.new("UICorner")
topBarCorner.CornerRadius = UDim.new(0, 10)
topBarCorner.Parent = topBar
local topBarFix = Instance.new("Frame")
topBarFix.Size = UDim2.new(1, 0, 0, 10)
topBarFix.Position = UDim2.new(0, 0, 1, -10)
topBarFix.BackgroundColor3 = topBar.BackgroundColor3
topBarFix.BackgroundTransparency = topBar.BackgroundTransparency
topBarFix.BorderSizePixel = 0
topBarFix.ZIndex = 0
topBarFix.Parent = topBar
local accentLine = Instance.new("Frame")
accentLine.Name = "AccentLine"
accentLine.Size = UDim2.new(1, 0, 0, 2)
accentLine.Position = UDim2.new(0, 0, 1, 0)
accentLine.BackgroundColor3 = Config.ThemeColor
accentLine.BorderSizePixel = 0
accentLine.ZIndex = 3
accentLine.Parent = topBar
local titleLabel = trackFont(Instance.new("TextLabel"))
titleLabel.Name = "TitleLabel"
titleLabel.Size = UDim2.new(1, -110, 1, 0)
titleLabel.Position = UDim2.new(0, 15, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Dragonic Team | Brookhaven 🏡 | By Lightbolt_dev"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Font = Config.Font
titleLabel.TextSize = 14
titleLabel.TextTruncate = Enum.TextTruncate.AtEnd
titleLabel.Parent = topBar
local function createTopButton(name, text, xOffset)
local btn = Instance.new("TextButton")
btn.Name = name
btn.Size = UDim2.new(0, 28, 0, 28)
btn.Position = UDim2.new(1, xOffset, 0.5, -14)
btn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
btn.BackgroundTransparency = 0.2
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 14
btn.AutoButtonColor = false
btn.Parent = topBar
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = btn
btn.MouseEnter:Connect(function()
playSound("Hover", 0.25)
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(45, 45, 55)}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(30, 30, 36)}):Play()
end)
return btn
end
local closeButton = createTopButton("CloseButton", "X", -35)
local minimizeButton = createTopButton("MinimizeButton", "-", -70)
local settingsButton = createTopButton("SettingsButton", "⚙", -105)
local function createSectionLabel(text, yPos, parent)
local label = trackFont(Instance.new("TextLabel"))
label.Size = UDim2.new(1, 0, 0, 16)
label.Position = UDim2.new(0, 0, 0, yPos)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Color3.fromRGB(180, 180, 185)
label.Font = Enum.Font.Gotham
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = parent
return label
end
-- TELA INICIAL (contentFrame) — agora com as categorias
local contentFrame = Instance.new("Frame")
contentFrame.Name = "ContentFrame"
contentFrame.Size = UDim2.new(1, -20, 1, -55)
contentFrame.Position = UDim2.new(0, 10, 0, 48)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame
local tabBar = Instance.new("Frame")
tabBar.Name = "TabBar"
tabBar.Size = UDim2.new(1, 0, 0, 34)
tabBar.BackgroundTransparency = 1
tabBar.Parent = contentFrame
local tabLayout = Instance.new("UIListLayout")
tabLayout.FillDirection = Enum.FillDirection.Horizontal
tabLayout.Padding = UDim.new(0, 8)
tabLayout.SortOrder = Enum.SortOrder.LayoutOrder
tabLayout.Parent = tabBar
local tabButtons = {}
local function createTabButton(nameKey, iconBuilder, layoutOrder)
local tab = Instance.new("TextButton")
tab.Name = "Tab_" .. nameKey
tab.Size = UDim2.new(0, 100, 1, 0)
tab.BackgroundColor3 = Color3.fromRGB(26, 26, 32)
tab.BackgroundTransparency = 0.15
tab.AutoButtonColor = false
tab.Text = ""
tab.LayoutOrder = layoutOrder
tab.Parent = tabBar
local tabCorner = Instance.new("UICorner")
tabCorner.CornerRadius = UDim.new(0, 8)
tabCorner.Parent = tab
local underline = Instance.new("Frame")
underline.Name = "Underline"
underline.Size = UDim2.new(1, -20, 0, 2)
underline.Position = UDim2.new(0, 10, 1, -3)
underline.BackgroundColor3 = Config.ThemeColor
underline.BackgroundTransparency = 1
underline.BorderSizePixel = 0
underline.Parent = tab
local iconHolder = Instance.new("Frame")
iconHolder.Name = "IconHolder"
iconHolder.Size = UDim2.new(0, 16, 0, 16)
iconHolder.Position = UDim2.new(0, 12, 0.5, -8)
iconHolder.BackgroundTransparency = 1
iconHolder.Parent = tab
iconBuilder(iconHolder, 16, Color3.fromRGB(200, 200, 205))
local label = trackFont(Instance.new("TextLabel"))
label.Name = "Label"
label.Size = UDim2.new(1, -38, 1, 0)
label.Position = UDim2.new(0, 34, 0, 0)
label.BackgroundTransparency = 1
label.Text = T(nameKey)
label.TextColor3 = Color3.fromRGB(200, 200, 205)
label.Font = Enum.Font.GothamBold
label.TextSize = 13
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = tab
tab.MouseEnter:Connect(function()
playSound("Hover", 0.2)
end)
table.insert(tabButtons, {key = nameKey, button = tab, underline = underline, label = label})
return tab
end
local function createPage(name, canvasHeight)
local page = Instance.new("ScrollingFrame")
page.Name = name
page.Size = UDim2.new(1, 0, 1, -42)
page.Position = UDim2.new(0, 0, 0, 42)
page.BackgroundTransparency = 1
page.BorderSizePixel = 0
page.ScrollBarThickness = 4
page.ScrollBarImageColor3 = Config.ThemeColor
page.CanvasSize = UDim2.new(0, 0, 0, canvasHeight)
page.Visible = false
page.Parent = contentFrame
return page
end
local generalPage = createPage("GeneralPage", 220)
local infoPage = createPage("InfoPage", 380)
local playerPage = createPage("PlayerPage", 220)
local trollPage = createPage("TrollPage", 220)
local generalTab = createTabButton("TabGeneral", createGeneralIcon, 1)
local infoTab = createTabButton("TabInfo", createInfoIcon, 2)
local playerTab = createTabButton("TabPlayer", createPlayerIcon, 3)
local trollTab = createTabButton("TabTroll", createTrollIcon, 4)
local function selectTab(key)
generalPage.Visible = (key == "TabGeneral")
infoPage.Visible = (key == "TabInfo")
playerPage.Visible = (key == "TabPlayer")
trollPage.Visible = (key == "TabTroll")
for _, tabInfo in ipairs(tabButtons) do
local active = tabInfo.key == key
tabInfo.underline.BackgroundTransparency = active and 0 or 1
tabInfo.label.TextColor3 = active and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(200, 200, 205)
tabInfo.button.BackgroundTransparency = active and 0 or 0.15
end
end
generalTab.MouseButton1Click:Connect(function() playSound("Click"); selectTab("TabGeneral") end)
infoTab.MouseButton1Click:Connect(function() playSound("Click"); selectTab("TabInfo") end)
playerTab.MouseButton1Click:Connect(function() playSound("Click"); selectTab("TabPlayer") end)
trollTab.MouseButton1Click:Connect(function() playSound("Click"); selectTab("TabTroll") end)
selectTab("TabGeneral")
-- FUNÇÕES REAIS DE CADA CATEGORIA
-- (tudo aqui só afeta o SEU personagem/tela — nada disso manda
-- comandos ou efeitos para outros jogadores)
-- ---- GERAL: desempenho (FPS) + câmera ----
createSectionLabel(T("Performance"), 4, generalPage)
local perfToggle = Instance.new("TextButton")
perfToggle.Size = UDim2.new(0, 180, 0, 28)
perfToggle.Position = UDim2.new(0, 0, 0, 24)
perfToggle.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
perfToggle.Text = T("PerformanceHigh")
perfToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
perfToggle.Font = Enum.Font.GothamBold
perfToggle.TextSize = 12
perfToggle.AutoButtonColor = false
perfToggle.Parent = generalPage
local perfCorner = Instance.new("UICorner")
perfCorner.CornerRadius = UDim.new(0, 6)
perfCorner.Parent = perfToggle
perfToggle.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
perfToggle.MouseButton1Click:Connect(function()
playSound("Click")
local ok, gameSettings = pcall(function()
return UserSettings():GetService("UserGameSettings")
end)
if not ok then return end
if gameSettings.SavedQualityLevel == Enum.SavedQualitySetting.QualityLevel1 then
gameSettings.SavedQualityLevel = Enum.SavedQualitySetting.Automatic
perfToggle.Text = T("PerformanceHigh")
else
gameSettings.SavedQualityLevel = Enum.SavedQualitySetting.QualityLevel1
perfToggle.Text = T("PerformanceEco")
end
end)
createSectionLabel(T("Camera"), 66, generalPage)
local function createCameraButton(text, xPos, onClick)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 56, 0, 28)
btn.Position = UDim2.new(0, xPos, 0, 86)
btn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 13
btn.AutoButtonColor = false
btn.Parent = generalPage
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = btn
btn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
btn.MouseButton1Click:Connect(function()
playSound("Click")
onClick()
end)
return btn
end
local function setFOV(fov)
local camera = workspace.CurrentCamera
if camera then
camera.FieldOfView = math.clamp(fov, 50, 120)
end
end
createCameraButton("-5°", 0, function()
local camera = workspace.CurrentCamera
setFOV((camera and camera.FieldOfView or 70) - 5)
end)
createCameraButton(T("CameraReset"), 62, function()
setFOV(70)
end)
createCameraButton("+5°", 156, function()
local camera = workspace.CurrentCamera
setFOV((camera and camera.FieldOfView or 70) + 5)
end)
-- ---- Estado local do jogador (velocidade, pulo, auto-correr) ----
local PlayerState = {
WalkSpeed = 16,
JumpPower = 50,
AutoRun = false,
}
local function getHumanoid()
local character = player.Character
return character and character:FindFirstChildOfClass("Humanoid")
end
local function applyPlayerStats(humanoid)
humanoid.WalkSpeed = PlayerState.WalkSpeed
humanoid.UseJumpPower = true
humanoid.JumpPower = PlayerState.JumpPower
if PlayerState.AutoRun then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
applyPlayerStats(humanoid)
end)
if player.Character then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then applyPlayerStats(humanoid) end
end
-- ---- JOGADOR: velocidade, pulo, resetar ----
local function createStatRow(labelText, yPos, getValue, onChange, parent)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 30)
row.Position = UDim2.new(0, 0, 0, yPos)
row.BackgroundTransparency = 1
row.Parent = parent
local label = trackFont(Instance.new("TextLabel"))
label.Size = UDim2.new(0, 110, 1, 0)
label.BackgroundTransparency = 1
label.Text = labelText
label.TextColor3 = Color3.fromRGB(200, 200, 205)
label.Font = Enum.Font.Gotham
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = row
local minusBtn = Instance.new("TextButton")
minusBtn.Size = UDim2.new(0, 26, 0, 26)
minusBtn.Position = UDim2.new(0, 116, 0, 2)
minusBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
minusBtn.Text = "-"
minusBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minusBtn.Font = Enum.Font.GothamBold
minusBtn.TextSize = 16
minusBtn.AutoButtonColor = false
minusBtn.Parent = row
local mc = Instance.new("UICorner"); mc.CornerRadius = UDim.new(0, 6); mc.Parent = minusBtn
local valueLabel = Instance.new("TextLabel")
valueLabel.Size = UDim2.new(0, 50, 1, 0)
valueLabel.Position = UDim2.new(0, 148, 0, 0)
valueLabel.BackgroundTransparency = 1
valueLabel.Text = tostring(getValue())
valueLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
valueLabel.Font = Enum.Font.GothamBold
valueLabel.TextSize = 13
valueLabel.TextXAlignment = Enum.TextXAlignment.Center
valueLabel.Parent = row
local plusBtn = Instance.new("TextButton")
plusBtn.Size = UDim2.new(0, 26, 0, 26)
plusBtn.Position = UDim2.new(0, 200, 0, 2)
plusBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
plusBtn.Text = "+"
plusBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
plusBtn.Font = Enum.Font.GothamBold
plusBtn.TextSize = 16
plusBtn.AutoButtonColor = false
plusBtn.Parent = row
local pc = Instance.new("UICorner"); pc.CornerRadius = UDim.new(0, 6); pc.Parent = plusBtn
minusBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
plusBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
minusBtn.MouseButton1Click:Connect(function()
playSound("Click")
onChange(-1)
valueLabel.Text = tostring(getValue())
end)
plusBtn.MouseButton1Click:Connect(function()
playSound("Click")
onChange(1)
valueLabel.Text = tostring(getValue())
end)
return row
end
createSectionLabel(T("PlayerStats"), 4, playerPage)
createStatRow(T("WalkSpeed"), 24, function() return PlayerState.WalkSpeed end, function(dir)
PlayerState.WalkSpeed = math.clamp(PlayerState.WalkSpeed + dir * 4, 8, 100)
local humanoid = getHumanoid()
if humanoid then humanoid.WalkSpeed = PlayerState.WalkSpeed end
end, playerPage)
createStatRow(T("JumpPower"), 60, function() return PlayerState.JumpPower end, function(dir)
PlayerState.JumpPower = math.clamp(PlayerState.JumpPower + dir * 10, 20, 200)
local humanoid = getHumanoid()
if humanoid then
humanoid.UseJumpPower = true
humanoid.JumpPower = PlayerState.JumpPower
end
end, playerPage)
local resetBtn = Instance.new("TextButton")
resetBtn.Size = UDim2.new(0, 180, 0, 30)
resetBtn.Position = UDim2.new(0, 0, 0, 104)
resetBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
resetBtn.Text = T("ResetCharacter")
resetBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
resetBtn.Font = Enum.Font.GothamBold
resetBtn.TextSize = 13
resetBtn.AutoButtonColor = false
resetBtn.Parent = playerPage
local resetCorner = Instance.new("UICorner")
resetCorner.CornerRadius = UDim.new(0, 6)
resetCorner.Parent = resetBtn
resetBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
resetBtn.MouseButton1Click:Connect(function()
playSound("Click")
player:LoadCharacter()
end)
-- ---- TROLL ALL: só brincadeiras no seu próprio personagem/tela ----
createSectionLabel(T("TrollSection"), 4, trollPage)
local autoRunBtn = Instance.new("TextButton")
autoRunBtn.Size = UDim2.new(0, 200, 0, 30)
autoRunBtn.Position = UDim2.new(0, 0, 0, 24)
autoRunBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
autoRunBtn.Text = T("AutoRunOff")
autoRunBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
autoRunBtn.Font = Enum.Font.GothamBold
autoRunBtn.TextSize = 13
autoRunBtn.AutoButtonColor = false
autoRunBtn.Parent = trollPage
local autoRunCorner = Instance.new("UICorner")
autoRunCorner.CornerRadius = UDim.new(0, 6)
autoRunCorner.Parent = autoRunBtn
autoRunBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
autoRunBtn.MouseButton1Click:Connect(function()
playSound("Click")
PlayerState.AutoRun = not PlayerState.AutoRun
autoRunBtn.Text = PlayerState.AutoRun and T("AutoRunOn") or T("AutoRunOff")
local humanoid = getHumanoid()
if humanoid then
if PlayerState.AutoRun then
humanoid:Move(Vector3.new(0, 0, -1), true)
else
humanoid:Move(Vector3.new(0, 0, 0), true)
end
end
end)
local function playConfetti()
local confettiColors = {
Color3.fromRGB(255, 90, 90),
Color3.fromRGB(255, 200, 60),
Color3.fromRGB(90, 180, 255),
Color3.fromRGB(140, 255, 140),
Color3.fromRGB(240, 90, 170),
}
for i = 1, 30 do
local piece = Instance.new("Frame")
piece.Size = UDim2.new(0, math.random(4, 8), 0, math.random(4, 8))
piece.Position = UDim2.new(math.random(10, 90) / 100, 0, 0, -20)
piece.BackgroundColor3 = confettiColors[math.random(1, #confettiColors)]
piece.BorderSizePixel = 0
piece.ZIndex = 100
piece.Rotation = math.random(0, 360)
piece.Parent = screenGui
local duration = math.random(15, 25) / 10
local fall = TweenService:Create(
piece,
TweenInfo.new(duration, Enum.EasingStyle.Linear),
{
Position = UDim2.new(piece.Position.X.Scale, 0, 1, 20),
Rotation = piece.Rotation + math.random(180, 720),
}
)
fall:Play()
fall.Completed:Connect(function()
piece:Destroy()
end)
end
end
local confettiBtn = Instance.new("TextButton")
confettiBtn.Size = UDim2.new(0, 200, 0, 30)
confettiBtn.Position = UDim2.new(0, 0, 0, 62)
confettiBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
confettiBtn.Text = T("Confetti")
confettiBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
confettiBtn.Font = Enum.Font.GothamBold
confettiBtn.TextSize = 13
confettiBtn.AutoButtonColor = false
confettiBtn.Parent = trollPage
local confettiCorner = Instance.new("UICorner")
confettiCorner.CornerRadius = UDim.new(0, 6)
confettiCorner.Parent = confettiBtn
confettiBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
confettiBtn.MouseButton1Click:Connect(function()
playSound("Click")
playConfetti()
end)
local funnySoundBtn = Instance.new("TextButton")
funnySoundBtn.Size = UDim2.new(0, 200, 0, 30)
funnySoundBtn.Position = UDim2.new(0, 0, 0, 100)
funnySoundBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
funnySoundBtn.Text = T("FunnySound")
funnySoundBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
funnySoundBtn.Font = Enum.Font.GothamBold
funnySoundBtn.TextSize = 13
funnySoundBtn.AutoButtonColor = false
funnySoundBtn.Parent = trollPage
local funnySoundCorner = Instance.new("UICorner")
funnySoundCorner.CornerRadius = UDim.new(0, 6)
funnySoundCorner.Parent = funnySoundBtn
funnySoundBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
funnySoundBtn.MouseButton1Click:Connect(function()
playSound("Funny", 0.6)
end)
-- CONTEÚDO DA ABA "INFO"
local discordCard = Instance.new("Frame")
discordCard.Name = "DiscordCard"
discordCard.Size = UDim2.new(1, 0, 0, 130)
discordCard.Position = UDim2.new(0, 0, 0, 0)
discordCard.BackgroundColor3 = Color3.fromRGB(26, 26, 32)
discordCard.BackgroundTransparency = 0.1
discordCard.ClipsDescendants = true
discordCard.Parent = infoPage
local discordCardCorner = Instance.new("UICorner")
discordCardCorner.CornerRadius = UDim.new(0, 10)
discordCardCorner.Parent = discordCard
local discordBanner = Instance.new("ImageLabel")
discordBanner.Name = "DiscordBanner"
discordBanner.Size = UDim2.new(1, 0, 0, 60)
discordBanner.BackgroundColor3 = Color3.fromRGB(38, 38, 46)
discordBanner.BackgroundTransparency = 0
discordBanner.Image = DiscordInfo.BannerImage
discordBanner.ScaleType = Enum.ScaleType.Crop
discordBanner.Parent = discordCard
local discordIcon = Instance.new("ImageLabel")
discordIcon.Name = "DiscordIcon"
discordIcon.Size = UDim2.new(0, 48, 0, 48)
discordIcon.Position = UDim2.new(0, 14, 0, 36)
discordIcon.BackgroundColor3 = Color3.fromRGB(45, 45, 54)
discordIcon.Image = DiscordInfo.IconImage
discordIcon.ZIndex = 2
discordIcon.Parent = discordCard
local discordIconCorner = Instance.new("UICorner")
discordIconCorner.CornerRadius = UDim.new(1, 0)
discordIconCorner.Parent = discordIcon
local discordIconStroke = Instance.new("UIStroke")
discordIconStroke.Color = Color3.fromRGB(26, 26, 32)
discordIconStroke.Thickness = 3
discordIconStroke.Parent = discordIcon
local discordNameLabel = trackFont(Instance.new("TextLabel"))
discordNameLabel.Name = "DiscordName"
discordNameLabel.Size = UDim2.new(1, -80, 0, 20)
discordNameLabel.Position = UDim2.new(0, 72, 0, 66)
discordNameLabel.BackgroundTransparency = 1
discordNameLabel.Text = DiscordInfo.ServerName
discordNameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
discordNameLabel.Font = Enum.Font.GothamBold
discordNameLabel.TextSize = 15
discordNameLabel.TextXAlignment = Enum.TextXAlignment.Left
discordNameLabel.Parent = discordCard
local discordSubLabel = trackFont(Instance.new("TextLabel"))
discordSubLabel.Name = "DiscordSub"
discordSubLabel.Size = UDim2.new(1, -80, 0, 16)
discordSubLabel.Position = UDim2.new(0, 72, 0, 86)
discordSubLabel.BackgroundTransparency = 1
discordSubLabel.Text = T("Discord")
discordSubLabel.TextColor3 = Color3.fromRGB(160, 160, 168)
discordSubLabel.Font = Enum.Font.Gotham
discordSubLabel.TextSize = 12
discordSubLabel.TextXAlignment = Enum.TextXAlignment.Left
discordSubLabel.Parent = discordCard
local joinButton = Instance.new("TextButton")
joinButton.Name = "JoinServerButton"
joinButton.Size = UDim2.new(1, -24, 0, 30)
joinButton.Position = UDim2.new(0, 12, 1, -40)
joinButton.BackgroundColor3 = Config.ThemeColor
joinButton.Text = T("JoinServer")
joinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
joinButton.Font = Enum.Font.GothamBold
joinButton.TextSize = 13
joinButton.AutoButtonColor = false
joinButton.Parent = discordCard
local joinButtonCorner = Instance.new("UICorner")
joinButtonCorner.CornerRadius = UDim.new(0, 6)
joinButtonCorner.Parent = joinButton
joinButton.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
joinButton.MouseButton1Click:Connect(function()
playSound("Click")
local ok = false
if typeof(setclipboard) == "function" then
ok = pcall(setclipboard, DiscordInfo.InviteLink)
end
local originalText = T("JoinServer")
joinButton.Text = ok and T("LinkCopied") or T("NoClipboard")
task.delay(1.6, function()
joinButton.Text = originalText
end)
end)
local function createInfoRow(labelKey, valueText, yPos)
local row = trackFont(Instance.new("TextLabel"))
row.Size = UDim2.new(1, 0, 0, 20)
row.Position = UDim2.new(0, 0, 0, yPos)
row.BackgroundTransparency = 1
row.RichText = true
row.Text = "<b>" .. T(labelKey) .. ":</b> " .. valueText
row.TextColor3 = Color3.fromRGB(210, 210, 215)
row.Font = Enum.Font.Gotham
row.TextSize = 13
row.TextXAlignment = Enum.TextXAlignment.Left
row.Parent = infoPage
return row
end
createInfoRow("Owner", DevInfo.Owner, 144)
createInfoRow("Programmer", DevInfo.Programmer, 170)
createInfoRow("Platform", getPlatformName(), 196)
createInfoRow("Update", DevInfo.LastUpdate, 222)
-- PAINEL DE APARÊNCIA (aberto pela engrenagem)
-- Só cor / fonte / som — as categorias NÃO ficam mais aqui.
local settingsFrame = Instance.new("ScrollingFrame")
settingsFrame.Name = "SettingsFrame"
settingsFrame.Size = UDim2.new(1, -20, 1, -55)
settingsFrame.Position = UDim2.new(0, 10, 0, 48)
settingsFrame.BackgroundTransparency = 1
settingsFrame.BorderSizePixel = 0
settingsFrame.ScrollBarThickness = 4
settingsFrame.ScrollBarImageColor3 = Config.ThemeColor
settingsFrame.CanvasSize = UDim2.new(0, 0, 0, 420)
settingsFrame.Visible = false
settingsFrame.Parent = mainFrame
local settingsTitle = trackFont(Instance.new("TextLabel"))
settingsTitle.Name = "SettingsTitle"
settingsTitle.Size = UDim2.new(1, 0, 0, 22)
settingsTitle.BackgroundTransparency = 1
settingsTitle.Text = T("Appearance")
settingsTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
settingsTitle.Font = Enum.Font.GothamBold
settingsTitle.TextSize = 16
settingsTitle.TextXAlignment = Enum.TextXAlignment.Left
settingsTitle.Parent = settingsFrame
local colorSectionLabel = createSectionLabel(T("Color"), 30, settingsFrame)
local themeColors = {
Color3.fromRGB(138, 92, 246), Color3.fromRGB(220, 50, 50),
Color3.fromRGB(45, 140, 240), Color3.fromRGB(40, 180, 110),
Color3.fromRGB(240, 150, 30), Color3.fromRGB(240, 90, 170),
Color3.fromRGB(250, 220, 40), Color3.fromRGB(30, 210, 210),
Color3.fromRGB(120, 220, 60), Color3.fromRGB(160, 100, 255),
Color3.fromRGB(255, 255, 255), Color3.fromRGB(90, 90, 100),
Color3.fromRGB(200, 30, 90), Color3.fromRGB(10, 80, 200),
Color3.fromRGB(255, 130, 60), Color3.fromRGB(60, 60, 255),
}
local colorGrid = Instance.new("Frame")
colorGrid.Name = "ColorGrid"
colorGrid.Size = UDim2.new(1, 0, 0, 60)
colorGrid.Position = UDim2.new(0, 0, 0, 48)
colorGrid.BackgroundTransparency = 1
colorGrid.Parent = settingsFrame
local colorLayout = Instance.new("UIGridLayout")
colorLayout.CellSize = UDim2.new(0, 26, 0, 26)
colorLayout.CellPadding = UDim2.new(0, 6, 0, 6)
colorLayout.Parent = colorGrid
local colorButtons = {}
local function getLuminance(color)
return (0.299 * color.R + 0.587 * color.G + 0.114 * color.B)
end
local function applyTheme(color)
Config.ThemeColor = color
toggleStroke.Color = color
mainStroke.Color = color
accentLine.BackgroundColor3 = color
settingsFrame.ScrollBarImageColor3 = color
generalPage.ScrollBarImageColor3 = color
infoPage.ScrollBarImageColor3 = color
playerPage.ScrollBarImageColor3 = color
trollPage.ScrollBarImageColor3 = color
joinButton.BackgroundColor3 = color
for _, tabInfo in ipairs(tabButtons) do
tabInfo.underline.BackgroundColor3 = color
end
for _, swatch in ipairs(colorButtons) do
local selected = swatch:GetAttribute("SwatchColor") == color:ToHex()
swatch.SelectedDot.Visible = selected
end
end
for i, color in ipairs(themeColors) do
local swatch = Instance.new("TextButton")
swatch.Name = "ColorSwatch" .. i
swatch.BackgroundColor3 = color
swatch.Text = ""
swatch.AutoButtonColor = false
swatch:SetAttribute("SwatchColor", color:ToHex())
swatch.LayoutOrder = i
swatch.Parent = colorGrid
local swatchCorner = Instance.new("UICorner")
swatchCorner.CornerRadius = UDim.new(1, 0)
swatchCorner.Parent = swatch
local swatchStroke = Instance.new("UIStroke")
swatchStroke.Name = "UIStroke"
swatchStroke.Color = Color3.fromRGB(0, 0, 0)
swatchStroke.Thickness = 1
swatchStroke.Transparency = 0.55
swatchStroke.Parent = swatch
local selectedDot = Instance.new("Frame")
selectedDot.Name = "SelectedDot"
selectedDot.Size = UDim2.new(0, 8, 0, 8)
selectedDot.AnchorPoint = Vector2.new(0.5, 0.5)
selectedDot.Position = UDim2.new(0.5, 0, 0.5, 0)
selectedDot.BorderSizePixel = 0
selectedDot.Visible = false
selectedDot.ZIndex = 2
selectedDot.BackgroundColor3 = getLuminance(color) > 0.6
and Color3.fromRGB(20, 20, 24)
or Color3.fromRGB(255, 255, 255)
selectedDot.Parent = swatch
local selectedDotCorner = Instance.new("UICorner")
selectedDotCorner.CornerRadius = UDim.new(1, 0)
selectedDotCorner.Parent = selectedDot
swatch.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
swatch.MouseButton1Click:Connect(function()
playSound("Click")
applyTheme(color)
end)
table.insert(colorButtons, swatch)
end
local fontSectionLabel = createSectionLabel(T("Font"), 120, settingsFrame)
local fontOptions = {
{name = "Gotham", font = Enum.Font.Gotham},
{name = "GothamBold", font = Enum.Font.GothamBold},
{name = "GothamBlack", font = Enum.Font.GothamBlack},
{name = "GothamMedium", font = Enum.Font.GothamMedium},
{name = "SourceSans", font = Enum.Font.SourceSans},
{name = "SourceSansBold", font = Enum.Font.SourceSansBold},
{name = "SourceSansLight", font = Enum.Font.SourceSansLight},
{name = "SourceSansItalic", font = Enum.Font.SourceSansItalic},
{name = "Code", font = Enum.Font.Code},
{name = "Highway", font = Enum.Font.Highway},
{name = "Fantasy", font = Enum.Font.Fantasy},
{name = "Antique", font = Enum.Font.Antique},
{name = "Cartoon", font = Enum.Font.Cartoon},
{name = "Bangers", font = Enum.Font.Bangers},
{name = "Creepster", font = Enum.Font.Creepster},
{name = "FredokaOne", font = Enum.Font.FredokaOne},
{name = "PatrickHand", font = Enum.Font.PatrickHand},
{name = "PermanentMarker", font = Enum.Font.PermanentMarker},
{name = "Oswald", font = Enum.Font.Oswald},
{name = "Roboto", font = Enum.Font.Roboto},
{name = "RobotoMono", font = Enum.Font.RobotoMono},
{name = "Sarpanch", font = Enum.Font.Sarpanch},
}
local fontGrid = Instance.new("Frame")
fontGrid.Name = "FontGrid"
fontGrid.Size = UDim2.new(1, 0, 0, 190)
fontGrid.Position = UDim2.new(0, 0, 0, 140)
fontGrid.BackgroundTransparency = 1
fontGrid.Parent = settingsFrame
local fontLayout = Instance.new("UIGridLayout")
fontLayout.CellSize = UDim2.new(0, 88, 0, 26)
fontLayout.CellPadding = UDim2.new(0, 6, 0, 6)
fontLayout.Parent = fontGrid
local fontButtons = {}
local function applyFont(font)
Config.Font = font
for _, obj in ipairs(fontTargets) do
obj.Font = font
end
end
for i, option in ipairs(fontOptions) do
local fontBtn = Instance.new("TextButton")
fontBtn.Name = "FontOption" .. i
fontBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
fontBtn.Text = option.name
fontBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
fontBtn.Font = option.font
fontBtn.TextSize = 11
fontBtn.TextTruncate = Enum.TextTruncate.AtEnd
fontBtn.AutoButtonColor = false
fontBtn.LayoutOrder = i
fontBtn.Parent = fontGrid
local fontCorner = Instance.new("UICorner")
fontCorner.CornerRadius = UDim.new(0, 6)
fontCorner.Parent = fontBtn
local fontStroke = Instance.new("UIStroke")
fontStroke.Name = "UIStroke"
fontStroke.Color = Config.ThemeColor
fontStroke.Thickness = 1.5
fontStroke.Transparency = 1
fontStroke.Parent = fontBtn
fontBtn.MouseEnter:Connect(function() playSound("Hover", 0.2) end)
fontBtn.MouseButton1Click:Connect(function()
playSound("Click")
applyFont(option.font)
for _, b in ipairs(fontButtons) do
b.UIStroke.Transparency = 1
end
fontStroke.Transparency = 0
end)
table.insert(fontButtons, fontBtn)
end
local soundSectionLabel = createSectionLabel(T("Sound"), 345, settingsFrame)
local soundToggleBtn = Instance.new("TextButton")
soundToggleBtn.Name = "SoundToggle"
soundToggleBtn.Size = UDim2.new(0, 110, 0, 26)
soundToggleBtn.Position = UDim2.new(0, 0, 0, 365)
soundToggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
soundToggleBtn.Text = Config.SoundEnabled and T("SoundOn") or T("SoundOff")
soundToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
soundToggleBtn.Font = Enum.Font.GothamBold
soundToggleBtn.TextSize = 12
soundToggleBtn.AutoButtonColor = false
soundToggleBtn.Parent = settingsFrame
local soundToggleCorner = Instance.new("UICorner")
soundToggleCorner.CornerRadius = UDim.new(0, 6)
soundToggleCorner.Parent = soundToggleBtn
soundToggleBtn.MouseButton1Click:Connect(function()
Config.SoundEnabled = not Config.SoundEnabled
soundToggleBtn.Text = Config.SoundEnabled and T("SoundOn") or T("SoundOff")
playSound("Click")
end)
-- OVERLAY DE CONFIRMAÇÃO (aparece ao clicar no X)
local confirmOverlay = Instance.new("Frame")
confirmOverlay.Name = "ConfirmOverlay"
confirmOverlay.Size = UDim2.new(1, 0, 1, 0)
confirmOverlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
confirmOverlay.BackgroundTransparency = 1
confirmOverlay.Visible = false
confirmOverlay.ZIndex = 50
confirmOverlay.Parent = mainFrame
local confirmCorner = Instance.new("UICorner")
confirmCorner.CornerRadius = UDim.new(0, 10)
confirmCorner.Parent = confirmOverlay
local confirmText = Instance.new("TextLabel")
confirmText.Name = "ConfirmText"
confirmText.Size = UDim2.new(1, -40, 0, 50)
confirmText.Position = UDim2.new(0, 20, 0.35, 0)
confirmText.BackgroundTransparency = 1
confirmText.Text = T("Confirm")
confirmText.TextWrapped = true
confirmText.TextColor3 = Color3.fromRGB(255, 255, 255)
confirmText.Font = Enum.Font.GothamBold
confirmText.TextSize = 16
confirmText.ZIndex = 51
confirmText.Parent = confirmOverlay
local yesButton = Instance.new("TextButton")
yesButton.Name = "YesButton"
yesButton.Size = UDim2.new(0, 90, 0, 32)
yesButton.Position = UDim2.new(0.5, -100, 0.6, 0)
yesButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
yesButton.Text = T("Yes")
yesButton.TextColor3 = Color3.fromRGB(255, 255, 255)
yesButton.Font = Enum.Font.GothamBold
yesButton.TextSize = 14
yesButton.AutoButtonColor = false
yesButton.ZIndex = 51
yesButton.Parent = confirmOverlay
local yesCorner = Instance.new("UICorner")
yesCorner.CornerRadius = UDim.new(0, 6)
yesCorner.Parent = yesButton
local noButton = Instance.new("TextButton")
noButton.Name = "NoButton"
noButton.Size = UDim2.new(0, 90, 0, 32)
noButton.Position = UDim2.new(0.5, 10, 0.6, 0)
noButton.BackgroundColor3 = Color3.fromRGB(45, 45, 52)
noButton.Text = T("No")
noButton.TextColor3 = Color3.fromRGB(255, 255, 255)
noButton.Font = Enum.Font.GothamBold
noButton.TextSize = 14
noButton.AutoButtonColor = false
noButton.ZIndex = 51
noButton.Parent = confirmOverlay
local noCorner = Instance.new("UICorner")
noCorner.CornerRadius = UDim.new(0, 6)
noCorner.Parent = noButton
-- 5) ANIMAÇÕES DE ABRIR / FECHAR / MINIMIZAR
local isOpen = false
local isMinimized = false
local openSize = UDim2.new(0, WINDOW_WIDTH, 0, WINDOW_HEIGHT)
local closedSize = UDim2.new(0, WINDOW_WIDTH, 0, 0)
local minimizedSize = UDim2.new(0, WINDOW_WIDTH, 0, 40)
local function playFireworks(originPosition)
local colors = {
Color3.fromRGB(255, 90, 90), Color3.fromRGB(255, 200, 60),
Color3.fromRGB(90, 180, 255), Color3.fromRGB(140, 255, 140),
Config.ThemeColor,
}
for i = 1, 14 do
local particle = Instance.new("Frame")
particle.Size = UDim2.new(0, 6, 0, 6)
particle.Position = originPosition
particle.BackgroundColor3 = colors[math.random(1, #colors)]
particle.BorderSizePixel = 0
particle.ZIndex = 100
particle.Parent = screenGui
local pCorner = Instance.new("UICorner")
pCorner.CornerRadius = UDim.new(1, 0)
pCorner.Parent = particle
local angle = math.random(0, 360)
local distance = math.random(60, 140)
local radians = math.rad(angle)
local offsetX = math.cos(radians) * distance
local offsetY = math.sin(radians) * distance
local tween = TweenService:Create(
particle,
TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{
Position = UDim2.new(
originPosition.X.Scale, originPosition.X.Offset + offsetX,
originPosition.Y.Scale, originPosition.Y.Offset + offsetY
),
BackgroundTransparency = 1,
Size = UDim2.new(0, 2, 0, 2),
}
)
tween:Play()
tween.Completed:Connect(function()
particle:Destroy()
end)
end
end
local function openMenu()
mainFrame.Visible = true
mainFrame.Size = closedSize
shadow.Visible = true
syncShadow()
TweenService:Create(
mainFrame,
TweenInfo.new(0.35, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Size = openSize}
):Play()
playSound("Open")
playFireworks(toggleButton.Position)
isOpen = true
end
local function closeMenu()
local tween = TweenService:Create(
mainFrame,
TweenInfo.new(0.25, Enum.EasingStyle.Quint, Enum.EasingDirection.In),
{Size = closedSize}
)
playSound("Close")
tween:Play()
tween.Completed:Wait()
mainFrame.Visible = false
shadow.Visible = false
isOpen = false
end
local function toggleMinimize()
isMinimized = not isMinimized
local targetSize = isMinimized and minimizedSize or openSize
TweenService:Create(
mainFrame,
TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Size = targetSize}
):Play()
if isMinimized then
settingsFrame.Visible = false
contentFrame.Visible = false
else
contentFrame.Visible = true
end
end
local toggleWasDragged = false
toggleButton.MouseButton1Click:Connect(function()
if toggleWasDragged then
toggleWasDragged = false
return
end
playSound("Click")
if isOpen then
closeMenu()
else
openMenu()
end
end)
settingsButton.MouseButton1Click:Connect(function()
playSound("Click")
settingsFrame.Visible = not settingsFrame.Visible
contentFrame.Visible = not settingsFrame.Visible
end)
minimizeButton.MouseButton1Click:Connect(function()
playSound("Click")
toggleMinimize()
end)
local function showConfirm()
confirmOverlay.Visible = true
TweenService:Create(confirmOverlay, TweenInfo.new(0.2), {BackgroundTransparency = 0.15}):Play()
end
local function hideConfirm()
local tween = TweenService:Create(confirmOverlay, TweenInfo.new(0.2), {BackgroundTransparency = 1})
tween:Play()
tween.Completed:Connect(function()
confirmOverlay.Visible = false
end)
end
closeButton.MouseButton1Click:Connect(function()
playSound("Click")
showConfirm()
end)
noButton.MouseButton1Click:Connect(function()
playSound("Click")
hideConfirm()
end)
yesButton.MouseButton1Click:Connect(function()
playSound("Click")
hideConfirm()
closeMenu()
local shrinkTween = TweenService:Create(
toggleButton,
TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.In),
{Size = UDim2.new(0, 0, 0, 0)}
)
shrinkTween:Play()
shrinkTween.Completed:Connect(function()
screenGui:Destroy()
shadow:Destroy()
end)
end)
-- 6A) SEGURAR A BOLINHA POR 3s -> MOVER A BOLINHA
local HOLD_TIME_BALL = 3
toggleButton.InputBegan:Connect(function(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then
return
end
local held = true
local dragging = false
local startTime = os.clock()
local dragStart = input.Position
local startPos = toggleButton.Position
task.spawn(function()
while held do
if os.clock() - startTime >= HOLD_TIME_BALL then
dragging = true
toggleWasDragged = true
break
end
task.wait(0.05)
end
end)
local moveConn
moveConn = UserInputService.InputChanged:Connect(function(moveInput)
if not dragging then return end
if moveInput.UserInputType == Enum.UserInputType.MouseMovement or moveInput.UserInputType == Enum.UserInputType.Touch then
local delta = moveInput.Position - dragStart
toggleButton.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
held = false
dragging = false
if moveConn then
moveConn:Disconnect()
end
end
end)
end)
-- 6B) DRAG DO MENU (a sombra se ajusta sozinha via syncShadow)
local function startInstantDrag(triggerObject, targetFrame)
triggerObject.InputBegan:Connect(function(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then
return
end
local dragStart = input.Position
local startPos = targetFrame.Position
local dragging = true
local moveConn
moveConn = UserInputService.InputChanged:Connect(function(moveInput)
if not dragging then return end
if moveInput.UserInputType == Enum.UserInputType.MouseMovement or moveInput.UserInputType == Enum.UserInputType.Touch then
local delta = moveInput.Position - dragStart
targetFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
if moveConn then
moveConn:Disconnect()
end
end
end)
end)
end
local function startHoldDrag(triggerObject, targetFrame, holdTime)
triggerObject.InputBegan:Connect(function(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then
return
end
local held = true
local dragging = false
local startTime = os.clock()
local dragStart = input.Position
local startPos = targetFrame.Position
task.spawn(function()
while held do
if os.clock() - startTime >= holdTime then
dragging = true
break
end
task.wait(0.05)
end
end)
local moveConn
moveConn = UserInputService.InputChanged:Connect(function(moveInput)
if not dragging then return end
if moveInput.UserInputType == Enum.UserInputType.MouseMovement or moveInput.UserInputType == Enum.UserInputType.Touch then
local delta = moveInput.Position - dragStart
targetFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
held = false
dragging = false
if moveConn then
moveConn:Disconnect()
end
end
end)
end)
end
startInstantDrag(topBar, mainFrame)
local BORDER_THICKNESS = 6
local HOLD_TIME_BORDER = 2
local function createBorderZone(name, size, position)
local zone = Instance.new("Frame")
zone.Name = name
zone.Size = size
zone.Position = position
zone.BackgroundTransparency = 1
zone.ZIndex = 5
zone.Parent = mainFrame
return zone
end
local borderTop = createBorderZone("BorderTop", UDim2.new(1, 0, 0, BORDER_THICKNESS), UDim2.new(0, 0, 0, 0))
local borderBottom = createBorderZone("BorderBottom", UDim2.new(1, 0, 0, BORDER_THICKNESS), UDim2.new(0, 0, 1, -BORDER_THICKNESS))
local borderLeft = createBorderZone("BorderLeft", UDim2.new(0, BORDER_THICKNESS, 1, 0), UDim2.new(0, 0, 0, 0))
local borderRight = createBorderZone("BorderRight", UDim2.new(0, BORDER_THICKNESS, 1, 0), UDim2.new(1, -BORDER_THICKNESS, 0, 0))
for _, border in ipairs({borderTop, borderBottom, borderLeft, borderRight}) do
startHoldDrag(border, mainFrame, HOLD_TIME_BORDER)
end
applyTheme(Config.ThemeColor)
end
-- INICIALIZAÇÃO
showLoadingScreen(buildInterface)No comments yet for this script.



