--[[ 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 = "" .. T(labelKey) .. ": " .. 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)