
KeylessUniversal

-- 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!")No comments yet for this script.



