YouTube Social Platform
Key RequiredUniversal

YouTube Social Platform

Universal ScriptSpectravaxISBACKSpectravaxISBACK 818 views 11 executesUpdated Nov 17, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•262 lines (9725 chars)
-- 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!")

Features & Information

It's literally YouTube!
#RobloxScript#Spectravax#Spectravax Hub#Spectravaxy

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts