Rainbow Gui V2
Key RequiredUniversal Patched

Rainbow Gui V2

Universal Scriptc0olscriptsc0olscripts 1.8K views 15 executesUpdated Aug 28, 2025
Unrated
00
Lua Script•533 lines (17428 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local GuiService = game:GetService("GuiService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- Определяем тип устройства
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local isPC = not isMobile

-- Настройки по умолчанию
local settings = {
    glowEnabled = false,
    sparkleEnabled = false,
    showFPS = true,
    menuKey = Enum.KeyCode.F5
}

-- Переменные для управления эффектами
local rainbowConnection = nil
local sparkleConnection = nil
local glowEffect = nil
local fpsCounter = nil
local isMenuOpen = false
local mainMenu = nil
local openButton = nil

-- Создаем кнопку для открытия меню (для мобильных устройств)
local function createOpenButton()
    if not isMobile then return end
    
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "OpenMenuButton"
    screenGui.Parent = playerGui
    screenGui.ResetOnSpawn = false
    
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(0, 50, 0, 50)
    button.Position = UDim2.new(0, 20, 0, 20)
    button.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
    button.TextColor3 = Color3.fromRGB(255, 255, 255)
    button.Text = "Меню"
    button.Font = Enum.Font.SourceSansBold
    button.TextSize = 16
    button.Parent = screenGui
    
    openButton = button
    
    button.MouseButton1Click:Connect(function()
        if mainMenu then
            isMenuOpen = not isMenuOpen
            mainMenu.Enabled = isMenuOpen
        end
    end)
end

-- Функция для создания основного меню
local function createMainMenu()
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "AdvancedColorPanel"
    screenGui.Parent = playerGui
    screenGui.ResetOnSpawn = false
    screenGui.Enabled = false

    -- Фон меню (адаптивный размер)
    local background = Instance.new("Frame")
    background.Size = isMobile and UDim2.new(0.95, 0, 0.8, 0) or UDim2.new(0.8, 0, 0.8, 0)
    background.Position = isMobile and UDim2.new(0.025, 0, 0.1, 0) or UDim2.new(0.1, 0, 0.1, 0)
    background.BackgroundColor3 = Color3.fromRGB(240, 240, 240)
    background.BorderSizePixel = 2
    background.BorderColor3 = Color3.fromRGB(100, 100, 100)
    background.Parent = screenGui

    -- Заголовок
    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, 0, 0, 40)
    title.Position = UDim2.new(0, 0, 0, 0)
    title.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.Text = "Advanced Color Panel v2.0"
    title.Font = Enum.Font.SourceSansBold
    title.TextSize = isMobile and 16 or 20
    title.Parent = background

    -- Кнопка закрытия
    local closeButton = Instance.new("TextButton")
    closeButton.Size = UDim2.new(0, 30, 0, 30)
    closeButton.Position = UDim2.new(1, -35, 0, 5)
    closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
    closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    closeButton.Text = "X"
    closeButton.Font = Enum.Font.SourceSansBold
    closeButton.TextSize = 18
    closeButton.Parent = title

    -- Контейнер для настроек
    local settingsFrame = Instance.new("ScrollingFrame")
    settingsFrame.Size = UDim2.new(1, -20, 1, -60)
    settingsFrame.Position = UDim2.new(0, 10, 0, 50)
    settingsFrame.BackgroundTransparency = 1
    settingsFrame.ScrollBarThickness = 8
    settingsFrame.Parent = background

    -- Настройки эффектов
    local yOffset = 10
    
    -- Переключатель блёсток
    local sparkleToggle = Instance.new("TextButton")
    sparkleToggle.Size = UDim2.new(0.9, 0, 0, isMobile and 35 or 30)
    sparkleToggle.Position = UDim2.new(0.05, 0, 0, yOffset)
    sparkleToggle.BackgroundColor3 = settings.sparkleEnabled and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
    sparkleToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
    sparkleToggle.Text = "Sparkles: " .. (settings.sparkleEnabled and "ON" or "OFF")
    sparkleToggle.Font = Enum.Font.SourceSans
    sparkleToggle.TextSize = isMobile and 14 or 16
    sparkleToggle.Parent = settingsFrame
    yOffset = yOffset + (isMobile and 45 or 40)

    -- Переключатель свечения
    local glowToggle = Instance.new("TextButton")
    glowToggle.Size = UDim2.new(0.9, 0, 0, isMobile and 35 or 30)
    glowToggle.Position = UDim2.new(0.05, 0, 0, yOffset)
    glowToggle.BackgroundColor3 = settings.glowEnabled and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
    glowToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
    glowToggle.Text = "Glow Effect: " .. (settings.glowEnabled and "ON" or "OFF")
    glowToggle.Font = Enum.Font.SourceSans
    glowToggle.TextSize = isMobile and 14 or 16
    glowToggle.Parent = settingsFrame
    yOffset = yOffset + (isMobile and 45 or 40)

    -- Переключатель FPS
    local fpsToggle = Instance.new("TextButton")
    fpsToggle.Size = UDim2.new(0.9, 0, 0, isMobile and 35 or 30)
    fpsToggle.Position = UDim2.new(0.05, 0, 0, yOffset)
    fpsToggle.BackgroundColor3 = settings.showFPS and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
    fpsToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
    fpsToggle.Text = "FPS Counter: " .. (settings.showFPS and "ON" or "OFF")
    fpsToggle.Font = Enum.Font.SourceSans
    fpsToggle.TextSize = isMobile and 14 or 16
    fpsToggle.Parent = settingsFrame
    yOffset = yOffset + (isMobile and 45 or 40)

    -- Кнопки цветов
    local colors = {
        {Name = "Red", Color = Color3.fromRGB(255, 0, 0)},
        {Name = "Green", Color = Color3.fromRGB(0, 255, 0)},
        {Name = "Blue", Color = Color3.fromRGB(0, 0, 255)},
        {Name = "Yellow", Color = Color3.fromRGB(255, 255, 0)},
        {Name = "Purple", Color = Color3.fromRGB(255, 0, 255)},
        {Name = "Cyan", Color = Color3.fromRGB(0, 255, 255)},
    }

    for i, colorInfo in ipairs(colors) do
        local colorButton = Instance.new("TextButton")
        colorButton.Size = UDim2.new(0.4, 0, 0, isMobile and 30 or 25)
        colorButton.Position = UDim2.new(i % 2 == 0 and 0.5 or 0.05, 0, 0, yOffset + math.floor((i-1)/2)*40)
        colorButton.BackgroundColor3 = colorInfo.Color
        colorButton.TextColor3 = Color3.fromRGB(255, 255, 255)
        colorButton.Text = colorInfo.Name
        colorButton.Font = Enum.Font.SourceSans
        colorButton.TextSize = isMobile and 12 or 14
        colorButton.Parent = settingsFrame
        
        colorButton.MouseButton1Click:Connect(function()
            applyColor(colorInfo.Color)
            stopRainbow()
        end)
    end
    yOffset = yOffset + 100

    -- Кнопка радуги
    local rainbowButton = Instance.new("TextButton")
    rainbowButton.Size = UDim2.new(0.9, 0, 0, isMobile and 35 or 30)
    rainbowButton.Position = UDim2.new(0.05, 0, 0, yOffset)
    rainbowButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    rainbowButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    rainbowButton.Text = "Toggle Rainbow"
    rainbowButton.Font = Enum.Font.SourceSans
    rainbowButton.TextSize = isMobile and 14 or 16
    rainbowButton.Parent = settingsFrame
    yOffset = yOffset + (isMobile and 45 or 40)

    -- Кнопка сброса
    local resetButton = Instance.new("TextButton")
    resetButton.Size = UDim2.new(0.9, 0, 0, isMobile and 35 or 30)
    resetButton.Position = UDim2.new(0.05, 0, 0, yOffset)
    resetButton.BackgroundColor3 = Color3.fromRGB(100, 0, 0)
    resetButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    resetButton.Text = "Reset All Effects"
    resetButton.Font = Enum.Font.SourceSans
    resetButton.TextSize = isMobile and 14 or 16
    resetButton.Parent = settingsFrame

    -- Устанавливаем размер контента
    settingsFrame.CanvasSize = UDim2.new(0, 0, 0, yOffset + 50)

    -- Обработчики событий
    closeButton.MouseButton1Click:Connect(function()
        screenGui.Enabled = false
        isMenuOpen = false
    end)

    sparkleToggle.MouseButton1Click:Connect(function()
        settings.sparkleEnabled = not settings.sparkleEnabled
        sparkleToggle.BackgroundColor3 = settings.sparkleEnabled and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
        sparkleToggle.Text = "Sparkles: " .. (settings.sparkleEnabled and "ON" or "OFF")
        
        if settings.sparkleEnabled then
            startSparkles()
        else
            stopSparkles()
        end
    end)

    glowToggle.MouseButton1Click:Connect(function()
        settings.glowEnabled = not settings.glowEnabled
        glowToggle.BackgroundColor3 = settings.glowEnabled and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
        glowToggle.Text = "Glow Effect: " .. (settings.glowEnabled and "ON" or "OFF")
        
        if settings.glowEnabled then
            applyGlowEffect()
        else
            removeGlowEffect()
        end
    end)

    fpsToggle.MouseButton1Click:Connect(function()
        settings.showFPS = not settings.showFPS
        fpsToggle.BackgroundColor3 = settings.showFPS and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
        fpsToggle.Text = "FPS Counter: " .. (settings.showFPS and "ON" or "OFF")
        
        if settings.showFPS then
            createFPSCounter()
        else
            removeFPSCounter()
        end
    end)

    rainbowButton.MouseButton1Click:Connect(function()
        if rainbowConnection then
            stopRainbow()
        else
            startRainbow()
        end
    end)

    resetButton.MouseButton1Click:Connect(function()
        resetAllEffects()
        sparkleToggle.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
        sparkleToggle.Text = "Sparkles: OFF"
        glowToggle.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
        glowToggle.Text = "Glow Effect: OFF"
        fpsToggle.BackgroundColor3 = settings.showFPS and Color3.fromRGB(50, 150, 50) or Color3.fromRGB(150, 50, 50)
        fpsToggle.Text = "FPS Counter: " .. (settings.showFPS and "ON" or "OFF")
    end)

    return screenGui
end

-- Функция применения цвета
function applyColor(color)
    local character = player.Character
    if not character then return end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") then
            part.Color = color
            part.Material = Enum.Material.Neon
        end
    end
end

-- Функция сброса цвета
function resetColor()
    local character = player.Character
    if not character then return end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") then
            part.Color = Color3.fromRGB(170, 170, 170)
            part.Material = Enum.Material.Plastic
        end
    end
end

-- Функция радужного эффекта
function startRainbow()
    stopRainbow()
    
    rainbowConnection = RunService.Heartbeat:Connect(function()
        local hue = tick() % 5 / 5
        local color = Color3.fromHSV(hue, 1, 1)
        applyColor(color)
    end)
end

-- Функция остановки радужного эффекта
function stopRainbow()
    if rainbowConnection then
        rainbowConnection:Disconnect()
        rainbowConnection = nil
    end
end

-- Функция эффекта блёсток
function startSparkles()
    stopSparkles()
    
    sparkleConnection = RunService.Heartbeat:Connect(function()
        local character = player.Character
        if not character then return end
        
        for _, part in ipairs(character:GetDescendants()) do
            if part:IsA("BasePart") then
                local sparkle = Instance.new("Sparkles")
                sparkle.Parent = part
                sparkle.SparkleColor = part.Color
                
                game:GetService("Debris"):AddItem(sparkle, 0.5)
            end
        end
    end)
end

-- Функция остановки эффекта блёсток
function stopSparkles()
    if sparkleConnection then
        sparkleConnection:Disconnect()
        sparkleConnection = nil
    end
    
    local character = player.Character
    if not character then return end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") then
            for _, sparkle in ipairs(part:GetChildren()) do
                if sparkle:IsA("Sparkles") then
                    sparkle:Destroy()
                end
            end
        end
    end
end

-- Функция эффекта свечения
function applyGlowEffect()
    removeGlowEffect()
    
    local character = player.Character
    if not character then return end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") then
            local surfaceGui = Instance.new("SurfaceGui")
            surfaceGui.Parent = part
            surfaceGui.Face = Enum.NormalId.Top
            surfaceGui.AlwaysOnTop = true
            
            local frame = Instance.new("Frame")
            frame.Size = UDim2.new(1, 0, 1, 0)
            frame.BackgroundColor3 = part.Color
            frame.BackgroundTransparency = 0.7
            frame.BorderSizePixel = 0
            frame.Parent = surfaceGui
            
            glowEffect = surfaceGui
        end
    end
end

-- Функция удаления эффекта свечения
function removeGlowEffect()
    local character = player.Character
    if not character then return end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") then
            for _, child in ipairs(part:GetChildren()) do
                if child:IsA("SurfaceGui") then
                    child:Destroy()
                end
            end
        end
    end
end

-- Функция создания счётчика FPS
function createFPSCounter()
    removeFPSCounter()
    
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "FPSCounter"
    screenGui.Parent = playerGui
    screenGui.ResetOnSpawn = false
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(0, 100, 0, 30)
    frame.Position = UDim2.new(1, -110, 0, 10)
    frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    frame.BorderSizePixel = 0
    frame.Parent = screenGui
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, 0, 1, 0)
    label.BackgroundTransparency = 1
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.Text = "FPS: 0"
    label.Font = Enum.Font.SourceSansBold
    label.TextSize = 18
    label.Parent = frame
    
    local lastTime = tick()
    local frameCount = 0
    
    RunService.Heartbeat:Connect(function()
        frameCount = frameCount + 1
        local currentTime = tick()
        
        if currentTime - lastTime >= 1 then
            local fps = math.floor(frameCount / (currentTime - lastTime))
            label.Text = "FPS: " .. fps
            
            frameCount = 0
            lastTime = currentTime
        end
    end)
    
    fpsCounter = screenGui
end

-- Функция удаления счётчика FPS
function removeFPSCounter()
    if fpsCounter then
        fpsCounter:Destroy()
        fpsCounter = nil
    end
end

-- Функция сброса всех эффектов
function resetAllEffects()
    stopRainbow()
    stopSparkles()
    removeGlowEffect()
    resetColor()
    
    settings.sparkleEnabled = false
    settings.glowEnabled = false
end

-- Создаем основное меню
mainMenu = createMainMenu()

-- Создаем кнопку для мобильных устройств
createOpenButton()

-- Обработка открытия/закрытия меню по клавише (только для ПК)
if isPC then
    UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        
        if input.KeyCode == settings.menuKey then
            isMenuOpen = not isMenuOpen
            mainMenu.Enabled = isMenuOpen
        end
    end)
end

-- Обработка смены персонажа
player.CharacterAdded:Connect(function(character)
    if settings.sparkleEnabled then
        wait(1)
        startSparkles()
    end
    
    if settings.glowEnabled then
        wait(1)
        applyGlowEffect()
    end
    
    if rainbowConnection then
        wait(1)
        startRainbow()
    end
end)

-- Автозапуск FPS-счётчика если включен
if settings.showFPS then
    createFPSCounter()
end

-- Сообщение для пользователей
if isPC then
    print("Advanced Color Panel v2.0 loaded! Press F5 to open the menu.")
else
    print("Advanced Color Panel v2.0 loaded! Tap the menu button to open the menu.")
end

-- Создаем сообщение для пользователей ПК о том, как открыть меню
local function createHelpMessage()
    if not isPC then return end
    
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "HelpMessage"
    screenGui.Parent = playerGui
    screenGui.ResetOnSpawn = false
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(0, 250, 0, 40)
    frame.Position = UDim2.new(0.5, -125, 0, 10)
    frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    frame.BorderSizePixel = 0
    frame.Parent = screenGui
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, 0, 1, 0)
    label.BackgroundTransparency = 1
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.Text = "Press F5 to open Color Panel"
    label.Font = Enum.Font.SourceSansBold
    label.TextSize = 16
    label.Parent = frame
    
    -- Автоматически скрываем сообщение через 5 секунд
    delay(5, function()
        screenGui:Destroy()
    end)
end

createHelpMessage()

Features & Information

Rainbow Gui V2 By c0olscripts Made ChatGpt (DeepSeek) Wow, DeepSeek is amazing, but... HE'S INTRODUCING A NEW VERSION OF THE HUB!! It added: FPS counter Sparklers (in your color) Glow color (also to match your color)
#visual#cool

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts