--[[ PARTE 1: Estructura base de la GUI "ro-dice v3" Pegar en LocalScript dentro de StarterPlayerScripts. --]] local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") -- SCREEN GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "RodiceGUI" screenGui.ResetOnSpawn = false screenGui.Parent = playerGui -- BOTÓN ABRIR (🎲) - aparece cuando la GUI está cerrada local openButton = Instance.new("TextButton") openButton.Name = "OpenButton_Rodice" openButton.Parent = screenGui openButton.Size = UDim2.new(0, 74, 0, 74) openButton.Position = UDim2.new(0, 16, 1, -92) openButton.AnchorPoint = Vector2.new(0, 0) openButton.Text = "🎲" openButton.TextSize = 44 openButton.Font = Enum.Font.GothamBold openButton.BackgroundColor3 = Color3.fromRGB(30,30,30) openButton.BorderSizePixel = 0 openButton.Visible = false local openCorner = Instance.new("UICorner", openButton) openCorner.CornerRadius = UDim.new(0, 12) -- MARCO PRINCIPAL (ULTRA-PRO) local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame_Rodice" mainFrame.Parent = screenGui mainFrame.Size = UDim2.new(0, 560, 0, 780) -- GRANDE y cómodo mainFrame.Position = UDim2.new(0.04, 0, 0.06, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(24,24,24) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Visible = true -- Esquinas redondeadas y sombra ligera local mainCorner = Instance.new("UICorner", mainFrame) mainCorner.CornerRadius = UDim.new(0, 14) -- Fondo más moderno: UIGradient sutil local bgGradient = Instance.new("UIGradient", mainFrame) bgGradient.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(28,28,28)), ColorSequenceKeypoint.new(1, Color3.fromRGB(20,20,20)) } bgGradient.Rotation = 90 -- Borde RGB animado (UIStroke) local stroke = Instance.new("UIStroke", mainFrame) stroke.Thickness = 3 stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border -- título moderno (alineado a la izquierda) local titleBar = Instance.new("Frame", mainFrame) titleBar.Name = "TitleBar" titleBar.Size = UDim2.new(1, 0, 0, 58) titleBar.Position = UDim2.new(0, 0, 0, 6) titleBar.BackgroundTransparency = 1 local titleLabel = Instance.new("TextLabel", titleBar) titleLabel.Name = "TitleLabel" titleLabel.Size = UDim2.new(1, -24, 1, 0) titleLabel.Position = UDim2.new(0, 12, 0, 0) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "ro-dice v3 gg by Bobi_top" titleLabel.TextColor3 = Color3.fromRGB(245,245,245) titleLabel.Font = Enum.Font.GothamSemibold titleLabel.TextSize = 20 titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.TextYAlignment = Enum.TextYAlignment.Center -- Botón cerrar (X) estilizado local closeBtn = Instance.new("TextButton", titleBar) closeBtn.Name = "CloseButton" closeBtn.Size = UDim2.new(0,36,0,36) closeBtn.Position = UDim2.new(1, -52, 0, 11) closeBtn.AnchorPoint = Vector2.new(0, 0) closeBtn.BackgroundColor3 = Color3.fromRGB(175,28,28) closeBtn.BorderSizePixel = 0 closeBtn.Text = "X" closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 18 closeBtn.TextColor3 = Color3.fromRGB(255,255,255) local closeCorner = Instance.new("UICorner", closeBtn) closeCorner.CornerRadius = UDim.new(0,8) -- AREA: contenedor lateral izquierdo (aquí añadiremos los botones en Parte 2) local sideMenu = Instance.new("ScrollingFrame") sideMenu.Name = "SideMenu" sideMenu.Parent = mainFrame sideMenu.Size = UDim2.new(0, 220, 1, -110) sideMenu.Position = UDim2.new(0, 16, 0, 76) sideMenu.CanvasSize = UDim2.new(0, 0, 1, 0) sideMenu.BackgroundTransparency = 1 sideMenu.BorderSizePixel = 0 sideMenu.ScrollBarThickness = 6 -- Layout para los botones (vertical) local listLayout = Instance.new("UIListLayout", sideMenu) listLayout.SortOrder = Enum.SortOrder.LayoutOrder listLayout.Padding = UDim.new(0, 10) -- Contenedor derecho (espacio de contenido/pro visual) local contentArea = Instance.new("Frame") contentArea.Name = "ContentArea" contentArea.Parent = mainFrame contentArea.Size = UDim2.new(1, -260, 1, -110) contentArea.Position = UDim2.new(0, 244, 0, 76) contentArea.BackgroundColor3 = Color3.fromRGB(18,18,18) contentArea.BorderSizePixel = 0 local contentCorner = Instance.new("UICorner", contentArea) contentCorner.CornerRadius = UDim.new(0,12) -- INFO: placeholder para icono animado e infoBox (los definimos aquí para usarlos en Partes 2/3) local animatedIcon -- será creado/animado en Parte 3 local infoBox -- cuadro blanco que aparece al lado del icono final -- Funciones: mostrar/ocultar GUI local function closeGUI() mainFrame.Visible = false openButton.Visible = true if animatedIcon then animatedIcon.Visible = false end if infoBox then infoBox.Visible = true end -- infoBox seguirá visible junto al 🎲 end local function openGUIFunc() mainFrame.Visible = true openButton.Visible = false if animatedIcon then animatedIcon.Visible = true end if infoBox then infoBox.Visible = true end end closeBtn.MouseButton1Click:Connect(closeGUI) openButton.MouseButton1Click:Connect(openGUIFunc) -- Animación del borde rainbow (en bucle) spawn(function() while true do for i = 0, 1, 0.01 do stroke.Color = Color3.fromHSV(i, 0.9, 1) task.wait(0.01) end end end) -- Nota: Parte 2 añadirá todos los botones y Parte 3 hará aparecer/animar el 🔰 y el infoBox. -- Fin de la PARTE 1.-- 📌 Función para crear botones en el menú lateral local function createButton(name, callback) local btn = Instance.new("TextButton") btn.Parent = sideMenu btn.Size = UDim2.new(1, -10, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.GothamBold btn.TextSize = 14 btn.Text = name btn.BorderSizePixel = 0 local corner = Instance.new("UICorner", btn) corner.CornerRadius = UDim.new(0, 6) btn.MouseButton1Click:Connect(callback) end -- ✅ Botones con scripts: createButton("Tiger X", function() loadstring(game:HttpGet("https://raw.githubusercontent.com/balintTheDevX/Tiger-X-V3/main/Tiger%20X%20V3.5%20Fixed"))() end) createButton("Bomb Kaboom", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Bomb-Vest-56565"))() end) createButton("Executor", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Dex-Notepad-61749"))() end) createButton("Kinda GUI", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-UItimate-Trolling-Gui-62199"))() end) createButton("Gun Suicide", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Suicide-GUN-Script-Xymatekidd-37872"))() end) createButton("Octopuz V2", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Octopuz-YX-v2-proyect-62754"))() end) createButton("Invisible", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-FE-Invisible-62974"))() end) createButton("Skybox", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Mario-exe-skybox-28298"))() end) createButton("C00lifiky", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-C00lkidd-28102"))() end) createButton("Project Ligma", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Project-Ligma-28816"))() end) createButton("Noot Noot", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Noot-noot-fixed-audio-49735"))() end) createButton("Toad Rain", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Toad-roast-script-rework-but-sounds-same-and-works-42986"))() end) createButton("Fly GUI", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Wacx-fly-gui-63824"))() end) createButton("Saturn X FE", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Saturn-X-FE-63532"))() end) createButton("Sonic FE R15", function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-FE-R15-Sonic-exe-63788"))() end) -- 🎵 Music toggle (It’s Raining Tacos) createButton("Music", function() local sound = Instance.new("Sound") sound.Parent = workspace sound.SoundId = "rbxassetid://6403436089" sound.Volume = 5 sound.Looped = false sound:Play() end)-- 🔰 ICONO ANIMADO SOLO 1 VEZ animatedIcon = Instance.new("TextLabel") animatedIcon.Parent = screenGui animatedIcon.Size = UDim2.new(0, 50, 0, 50) animatedIcon.BackgroundTransparency = 1 animatedIcon.Text = "🔰" animatedIcon.TextSize = 40 animatedIcon.Font = Enum.Font.GothamBold animatedIcon.TextColor3 = Color3.fromRGB(255,255,255) animatedIcon.Visible = true -- 📦 CUADRO DE INFORMACIÓN AL LADO DEL ICONO infoBox = Instance.new("TextLabel") infoBox.Parent = screenGui infoBox.Size = UDim2.new(0, 240, 0, 40) infoBox.Position = UDim2.new(0, 80, 1, -100) -- ajustado luego infoBox.BackgroundColor3 = Color3.fromRGB(255,255,255) infoBox.TextColor3 = Color3.fromRGB(30,30,30) infoBox.Text = "ro-dice, created for fun, by bobi_top" infoBox.Font = Enum.Font.GothamBold infoBox.TextSize = 14 infoBox.TextXAlignment = Enum.TextXAlignment.Left infoBox.Visible = false local infoCorner = Instance.new("UICorner", infoBox) infoCorner.CornerRadius = UDim.new(0, 8) -- 📍 Posiciones del recorrido del icono 🔰 local startPos = UDim2.new(0, 10, 0, 10) -- arriba izquierda local middlePos = UDim2.new(0.5, -25, 0.5, -25) -- centro local endPos = UDim2.new(0, 10, 1, -100) -- abajo izquierda final animatedIcon.Position = startPos -- 🌀 ANIMACIÓN SOLO UNA VEZ spawn(function() local tween1 = TweenService:Create(animatedIcon, TweenInfo.new(2, Enum.EasingStyle.Linear), {Position = middlePos}) tween1:Play() tween1.Completed:Wait() local tween2 = TweenService:Create(animatedIcon, TweenInfo.new(2.5, Enum.EasingStyle.Linear), {Position = endPos}) tween2:Play() tween2.Completed:Wait() -- activar cuadro blanco una vez finalizado el recorrido infoBox.Position = UDim2.new(0, animatedIcon.Position.X.Offset + 60, 1, -100) infoBox.Visible = true end) -- 🔄 CERRAR GUI = ocultar 🔰, mantener 🎲 + texto closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false openButton.Visible = true if animatedIcon then animatedIcon.Visible = false end if infoBox then infoBox.Visible = true end end) -- 🔄 ABRIR GUI = mostrar todo otra vez (pero sin reanimar) openButton.MouseButton1Click:Connect(function() mainFrame.Visible = true openButton.Visible = false if animatedIcon then animatedIcon.Visible = true end if infoBox then infoBox.Visible = true end end)