-- YouTube-like Video Player LocalScript (Executor + CoreGui + Dark Mode + Close & Fullscreen!) -- Genre: Creativity and Safe! | Fully Dark Mode | Close Button | Fullscreen Toggle -- Place in executor - Parents to CoreGui local player = game.Players.LocalPlayer local coreGui = game:GetService("CoreGui") local tweenService = game:GetService("TweenService") -- Create ScreenGui local gui = Instance.new("ScreenGui") gui.Name = "YouTubeLikeGUI" gui.Parent = coreGui -- Your Video Data local videos = { { title = "Disco Dance Party", description = "Get groovy with disco moves!", videoId = "rbxassetid://5608384572", thumbnail = "rbxassetid://86517456974400", lang = {en = "Disco Dance Party", es = "Fiesta de Baile Disco", fr = "Fête de Danse Disco"} }, { title = "Ocean Coastline Relaxation", description = "Peaceful waves and sunset views.", videoId = "rbxassetid://5608268502", thumbnail = "rbxassetid://5220242647", lang = {en = "Ocean Coastline Relaxation", es = "Relajación en la Costa del Océano", fr = "Détente sur la Côte Océanique"} }, { title = "Gym League Training", description = "Train hard and level up!", videoId = "rbxassetid://80903198188888", thumbnail = "rbxassetid://136228817170393", lang = {en = "Gym League Training", es = "Entrenamiento de Liga de Gimnasio", fr = "Entraînement de Ligue de Gym"} }, { title = "Super Bomb Simulator", description = "Explode your way to victory!", videoId = "rbxassetid://5670806798", thumbnail = "rbxassetid://14712184093", lang = {en = "Super Bomb Simulator", es = "Simulador de Súper Bombas", fr = "Simulateur de Super Bombes"} }, { title = "Ban Each Other Loop", description = "Hilarious red vs blue chaos!", videoId = "rbxassetid://5608360493", thumbnail = "rbxassetid://97579781912879", lang = {en = "Ban Each Other Loop", es = "Bucle de Prohibirse Mutuamente", fr = "Boucle d'Interdiction Mutuelle"} }, } -- Language System local currentLang = "en" local languages = {"en", "es", "fr"} -- Fullscreen State local isFullscreen = false -- Main Frame (Dark Mode) local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0.8, 0, 0.8, 0) mainFrame.Position = UDim2.new(0.1, 0, 0.1, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) mainFrame.BorderSizePixel = 0 mainFrame.ClipsDescendants = true mainFrame.Parent = gui -- Top Bar (Search + Lang + Fullscreen + Close) local topBar = Instance.new("Frame") topBar.Size = UDim2.new(1, 0, 0, 50) topBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30) topBar.Parent = mainFrame -- Search Bar local searchBar = Instance.new("TextBox") searchBar.Size = UDim2.new(0.55, 0, 0.7, 0) searchBar.Position = UDim2.new(0.02, 0, 0.15, 0) searchBar.PlaceholderText = "Search for videos..." searchBar.Text = "" searchBar.BackgroundColor3 = Color3.fromRGB(45, 45, 45) searchBar.TextColor3 = Color3.fromRGB(255, 255, 255) searchBar.PlaceholderColor3 = Color3.fromRGB(180, 180, 180) searchBar.Font = Enum.Font.Gotham searchBar.Parent = topBar -- Language Button local langButton = Instance.new("TextButton") langButton.Size = UDim2.new(0.1, 0, 0.7, 0) langButton.Position = UDim2.new(0.6, 0, 0.15, 0) langButton.Text = "EN" langButton.BackgroundColor3 = Color3.fromRGB(220, 20, 60) langButton.TextColor3 = Color3.fromRGB(255, 255, 255) langButton.Font = Enum.Font.GothamBold langButton.Parent = topBar -- Fullscreen Button local fullscreenButton = Instance.new("TextButton") fullscreenButton.Size = UDim2.new(0.08, 0, 0.7, 0) fullscreenButton.Position = UDim2.new(0.73, 0, 0.15, 0) fullscreenButton.Text = "⛶" fullscreenButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) fullscreenButton.TextColor3 = Color3.fromRGB(200, 200, 200) fullscreenButton.Font = Enum.Font.GothamBold fullscreenButton.Parent = topBar -- Close Button (Top-Right Corner) local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0.08, 0, 0.7, 0) closeButton.Position = UDim2.new(0.9, 0, 0.15, 0) closeButton.Text = "x" closeButton.BackgroundColor3 = Color3.fromRGB(200, 40, 40) closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.Font = Enum.Font.GothamBold closeButton.Parent = topBar -- Video List local videoList = Instance.new("ScrollingFrame") videoList.Size = UDim2.new(1, -10, 1, -60) videoList.Position = UDim2.new(0, 5, 0, 55) videoList.BackgroundTransparency = 1 videoList.ScrollBarThickness = 6 videoList.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 100) videoList.Parent = mainFrame -- Player Frame (Overlay) local playerFrame = Instance.new("Frame") playerFrame.Size = UDim2.new(1, 0, 1, 0) playerFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) playerFrame.Visible = false playerFrame.Parent = gui local videoPlayer = Instance.new("VideoFrame") videoPlayer.Size = UDim2.new(0.8, 0, 0.7, 0) videoPlayer.Position = UDim2.new(0.1, 0, 0.15, 0) videoPlayer.BackgroundColor3 = Color3.fromRGB(10, 10, 10) videoPlayer.Parent = playerFrame local backButton = Instance.new("TextButton") backButton.Size = UDim2.new(0.12, 0, 0.07, 0) backButton.Position = UDim2.new(0.05, 0, 0.05, 0) backButton.Text = "Back" backButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50) backButton.TextColor3 = Color3.fromRGB(255, 255, 255) backButton.Font = Enum.Font.GothamBold backButton.Parent = playerFrame -- Update Language local function updateLanguage() langButton.Text = string.upper(currentLang) searchBar.PlaceholderText = currentLang == "en" and "Search for videos..." or currentLang == "es" and "Buscar videos..." or currentLang == "fr" and "Rechercher des vidéos..." or "Search for videos..." backButton.Text = currentLang == "en" and "Back" or currentLang == "es" and "Volver" or currentLang == "fr" and "Retour" or "Back" end -- Populate Videos local function populateVideos(filter) videoList:ClearAllChildren() local y = 0 for _, vid in ipairs(videos) do local title = vid.lang[currentLang] or vid.title if not filter or string.find(string.lower(title), string.lower(filter)) then local item = Instance.new("TextButton") item.Size = UDim2.new(1, -10, 0, 90) item.Position = UDim2.new(0, 5, 0, y) item.BackgroundColor3 = Color3.fromRGB(35, 35, 35) item.Text = "" item.BorderSizePixel = 0 item.Parent = videoList local thumb = Instance.new("ImageLabel") thumb.Size = UDim2.new(0, 120, 1, -10) thumb.Position = UDim2.new(0, 5, 0, 5) thumb.Image = vid.thumbnail thumb.BackgroundTransparency = 1 thumb.ScaleType = Enum.ScaleType.Fit thumb.Parent = item local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, -140, 0.5, 0) titleLabel.Position = UDim2.new(0, 130, 0, 5) titleLabel.Text = title titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.BackgroundTransparency = 1 titleLabel.Font = Enum.Font.GothamSemibold titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.TextTruncate = Enum.TextTruncate.AtEnd titleLabel.Parent = item local descLabel = Instance.new("TextLabel") descLabel.Size = UDim2.new(1, -140, 0.4, 0) descLabel.Position = UDim2.new(0, 130, 0.5, 0) descLabel.Text = vid.description descLabel.TextColor3 = Color3.fromRGB(170, 170, 170) descLabel.BackgroundTransparency = 1 descLabel.Font = Enum.Font.Gotham descLabel.TextXAlignment = Enum.TextXAlignment.Left descLabel.TextTruncate = Enum.TextTruncate.AtEnd descLabel.Parent = item item.MouseButton1Click:Connect(function() mainFrame.Visible = false playerFrame.Visible = true videoPlayer.Video = vid.videoId videoPlayer.Looped = true videoPlayer:Play() end) y = y + 95 end end videoList.CanvasSize = UDim2.new(0, 0, 0, y) end -- Fullscreen Toggle fullscreenButton.MouseButton1Click:Connect(function() isFullscreen = not isFullscreen local targetSize = isFullscreen and UDim2.new(1, 0, 1, 0) or UDim2.new(0.8, 0, 0.8, 0) local targetPos = isFullscreen and UDim2.new(0, 0, 0, 0) or UDim2.new(0.1, 0, 0.1, 0) local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) tweenService:Create(mainFrame, tweenInfo, {Size = targetSize, Position = targetPos}):Play() fullscreenButton.Text = isFullscreen and "⛶" or "⛶" end) -- Close GUI closeButton.MouseButton1Click:Connect(function() gui:Destroy() print("YouTube GUI Closed!") end) -- Events searchBar.FocusLost:Connect(function(enter) if enter then populateVideos(searchBar.Text) end end) langButton.MouseButton1Click:Connect(function() local i = table.find(languages, currentLang) or 1 currentLang = languages[(i % #languages) + 1] updateLanguage() populateVideos(searchBar.Text) end) backButton.MouseButton1Click:Connect(function() videoPlayer:Pause() playerFrame.Visible = false mainFrame.Visible = true end) -- Init populateVideos() updateLanguage() print("Dark Mode YouTube GUI Loaded! | Close: X | Fullscreen: ⛶ | Safe & Creative!")