FOV Slider With Key System
Key RequiredUniversal

FOV Slider With Key System

Universal Scriptv8mppv8mpp 357 views 6 executesUpdated Nov 23, 2025
Unrated
00
Lua Script•469 lines (15742 chars)
-- FOV Slider GUI for Roblox with Key System
-- Key: fovisbetter

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer
local Camera = workspace.CurrentCamera

-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FOVSliderGui"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local success = pcall(function()
    screenGui.Parent = game:GetService("CoreGui")
end)
if not success then
    screenGui.Parent = player:WaitForChild("PlayerGui")
end

-- Key System
local CORRECT_KEY = "fovisbetter"

-- Create Key System Frame
local function createKeySystem()
    local keyFrame = Instance.new("Frame")
    keyFrame.Name = "KeyFrame"
    keyFrame.Size = UDim2.new(0, 350, 0, 200)
    keyFrame.Position = UDim2.new(0.5, -175, 0.5, -100)
    keyFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
    keyFrame.BorderSizePixel = 0
    keyFrame.ZIndex = 10
    keyFrame.Parent = screenGui

    local keyFrameCorner = Instance.new("UICorner")
    keyFrameCorner.CornerRadius = UDim.new(0, 12)
    keyFrameCorner.Parent = keyFrame

    -- Key Header
    local keyHeader = Instance.new("Frame")
    keyHeader.Size = UDim2.new(1, 0, 0, 50)
    keyHeader.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
    keyHeader.BorderSizePixel = 0
    keyHeader.ZIndex = 11
    keyHeader.Parent = keyFrame

    local keyHeaderCorner = Instance.new("UICorner")
    keyHeaderCorner.CornerRadius = UDim.new(0, 12)
    keyHeaderCorner.Parent = keyHeader

    local keyHeaderTitle = Instance.new("TextLabel")
    keyHeaderTitle.Size = UDim2.new(1, -30, 1, 0)
    keyHeaderTitle.Position = UDim2.new(0, 15, 0, 0)
    keyHeaderTitle.BackgroundTransparency = 1
    keyHeaderTitle.Text = "🔐 Key System"
    keyHeaderTitle.Font = Enum.Font.GothamBold
    keyHeaderTitle.TextSize = 18
    keyHeaderTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
    keyHeaderTitle.TextXAlignment = Enum.TextXAlignment.Left
    keyHeaderTitle.ZIndex = 12
    keyHeaderTitle.Parent = keyHeader

    -- Key Info Text
    local keyInfoText = Instance.new("TextLabel")
    keyInfoText.Size = UDim2.new(1, -30, 0, 40)
    keyInfoText.Position = UDim2.new(0, 15, 0, 60)
    keyInfoText.BackgroundTransparency = 1
    keyInfoText.Text = "Enter the key to access FOV Changer"
    keyInfoText.Font = Enum.Font.Gotham
    keyInfoText.TextSize = 13
    keyInfoText.TextColor3 = Color3.fromRGB(160, 160, 170)
    keyInfoText.TextXAlignment = Enum.TextXAlignment.Left
    keyInfoText.TextWrapped = true
    keyInfoText.ZIndex = 11
    keyInfoText.Parent = keyFrame

    -- Key Input Box
    local keyInputBox = Instance.new("TextBox")
    keyInputBox.Size = UDim2.new(1, -30, 0, 40)
    keyInputBox.Position = UDim2.new(0, 15, 0, 105)
    keyInputBox.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
    keyInputBox.BorderSizePixel = 0
    keyInputBox.Text = ""
    keyInputBox.PlaceholderText = "Enter Key..."
    keyInputBox.Font = Enum.Font.Gotham
    keyInputBox.TextSize = 14
    keyInputBox.TextColor3 = Color3.fromRGB(255, 255, 255)
    keyInputBox.PlaceholderColor3 = Color3.fromRGB(100, 100, 110)
    keyInputBox.ClearTextOnFocus = false
    keyInputBox.ZIndex = 11
    keyInputBox.Parent = keyFrame

    local keyInputCorner = Instance.new("UICorner")
    keyInputCorner.CornerRadius = UDim.new(0, 8)
    keyInputCorner.Parent = keyInputBox

    -- Submit Button
    local submitBtn = Instance.new("TextButton")
    submitBtn.Size = UDim2.new(1, -30, 0, 40)
    submitBtn.Position = UDim2.new(0, 15, 0, 150)
    submitBtn.BackgroundColor3 = Color3.fromRGB(200, 180, 255)
    submitBtn.BorderSizePixel = 0
    submitBtn.Text = "Submit Key"
    submitBtn.Font = Enum.Font.GothamBold
    submitBtn.TextSize = 14
    submitBtn.TextColor3 = Color3.fromRGB(18, 18, 22)
    submitBtn.ZIndex = 11
    submitBtn.Parent = keyFrame

    local submitBtnCorner = Instance.new("UICorner")
    submitBtnCorner.CornerRadius = UDim.new(0, 8)
    submitBtnCorner.Parent = submitBtn

    -- Error Message
    local errorMsg = Instance.new("TextLabel")
    errorMsg.Size = UDim2.new(1, -30, 0, 20)
    errorMsg.Position = UDim2.new(0, 15, 1, -25)
    errorMsg.BackgroundTransparency = 1
    errorMsg.Text = ""
    errorMsg.Font = Enum.Font.GothamBold
    errorMsg.TextSize = 11
    errorMsg.TextColor3 = Color3.fromRGB(255, 100, 100)
    errorMsg.TextXAlignment = Enum.TextXAlignment.Center
    errorMsg.Visible = false
    errorMsg.ZIndex = 11
    errorMsg.Parent = keyFrame

    return keyFrame, keyInputBox, submitBtn, errorMsg
end

-- Create FOV Changer
local function createFOVChanger()
    -- Main Frame
    local mainFrame = Instance.new("Frame")
    mainFrame.Name = "FOVFrame"
    mainFrame.Size = UDim2.new(0, 320, 0, 140)
    mainFrame.Position = UDim2.new(0.5, -160, 0.5, -70)
    mainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
    mainFrame.BorderSizePixel = 0
    mainFrame.ClipsDescendants = false
    mainFrame.Visible = false
    mainFrame.ZIndex = 1
    mainFrame.Parent = screenGui

    local mainCorner = Instance.new("UICorner")
    mainCorner.CornerRadius = UDim.new(0, 12)
    mainCorner.Parent = mainFrame

    -- Header Bar
    local headerBar = Instance.new("Frame")
    headerBar.Size = UDim2.new(1, 0, 0, 40)
    headerBar.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
    headerBar.BorderSizePixel = 0
    headerBar.ZIndex = 2
    headerBar.Parent = mainFrame

    local headerCorner = Instance.new("UICorner")
    headerCorner.CornerRadius = UDim.new(0, 12)
    headerCorner.Parent = headerBar

    -- Header Title
    local headerTitle = Instance.new("TextLabel")
    headerTitle.Size = UDim2.new(1, -120, 1, 0)
    headerTitle.Position = UDim2.new(0, 15, 0, 0)
    headerTitle.BackgroundTransparency = 1
    headerTitle.Text = "⚡ FOV Changer"
    headerTitle.Font = Enum.Font.GothamBold
    headerTitle.TextSize = 16
    headerTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
    headerTitle.TextXAlignment = Enum.TextXAlignment.Left
    headerTitle.ZIndex = 3
    headerTitle.Parent = headerBar

    -- Minimize Button
    local minimizeBtn = Instance.new("TextButton")
    minimizeBtn.Size = UDim2.new(0, 30, 0, 30)
    minimizeBtn.Position = UDim2.new(1, -73, 0, 5)
    minimizeBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
    minimizeBtn.BorderSizePixel = 0
    minimizeBtn.Text = "➖"
    minimizeBtn.Font = Enum.Font.GothamBold
    minimizeBtn.TextSize = 14
    minimizeBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
    minimizeBtn.ZIndex = 3
    minimizeBtn.Parent = headerBar

    local minimizeCorner = Instance.new("UICorner")
    minimizeCorner.CornerRadius = UDim.new(0, 8)
    minimizeCorner.Parent = minimizeBtn

    -- Close Button
    local closeBtn = Instance.new("TextButton")
    closeBtn.Size = UDim2.new(0, 30, 0, 30)
    closeBtn.Position = UDim2.new(1, -38, 0, 5)
    closeBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
    closeBtn.BorderSizePixel = 0
    closeBtn.Text = "×"
    closeBtn.Font = Enum.Font.GothamBold
    closeBtn.TextSize = 18
    closeBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
    closeBtn.ZIndex = 3
    closeBtn.Parent = headerBar

    local closeCorner = Instance.new("UICorner")
    closeCorner.CornerRadius = UDim.new(0, 8)
    closeCorner.Parent = closeBtn

    -- Content Container
    local contentFrame = Instance.new("Frame")
    contentFrame.Name = "Content"
    contentFrame.Size = UDim2.new(1, 0, 1, -40)
    contentFrame.Position = UDim2.new(0, 0, 0, 40)
    contentFrame.BackgroundTransparency = 1
    contentFrame.ZIndex = 2
    contentFrame.Parent = mainFrame

    -- FOV Display
    local fovDisplay = Instance.new("TextLabel")
    fovDisplay.Size = UDim2.new(1, -30, 0, 30)
    fovDisplay.Position = UDim2.new(0, 15, 0, 10)
    fovDisplay.BackgroundTransparency = 1
    fovDisplay.Text = "FOV: 70"
    fovDisplay.Font = Enum.Font.GothamBold
    fovDisplay.TextSize = 18
    fovDisplay.TextColor3 = Color3.fromRGB(200, 180, 255)
    fovDisplay.TextXAlignment = Enum.TextXAlignment.Left
    fovDisplay.ZIndex = 3
    fovDisplay.Parent = contentFrame

    -- Slider Container
    local sliderContainer = Instance.new("Frame")
    sliderContainer.Size = UDim2.new(1, -30, 0, 8)
    sliderContainer.Position = UDim2.new(0, 15, 0, 50)
    sliderContainer.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
    sliderContainer.BorderSizePixel = 0
    sliderContainer.ZIndex = 3
    sliderContainer.Parent = contentFrame

    local sliderCorner = Instance.new("UICorner")
    sliderCorner.CornerRadius = UDim.new(1, 0)
    sliderCorner.Parent = sliderContainer

    -- Slider Fill
    local sliderFill = Instance.new("Frame")
    sliderFill.Size = UDim2.new(0.44, 0, 1, 0)
    sliderFill.BackgroundColor3 = Color3.fromRGB(200, 180, 255)
    sliderFill.BorderSizePixel = 0
    sliderFill.ZIndex = 4
    sliderFill.Parent = sliderContainer

    local fillCorner = Instance.new("UICorner")
    fillCorner.CornerRadius = UDim.new(1, 0)
    fillCorner.Parent = sliderFill

    -- Slider Button
    local sliderButton = Instance.new("TextButton")
    sliderButton.Size = UDim2.new(0, 18, 0, 18)
    sliderButton.Position = UDim2.new(0.44, -9, 0.5, -9)
    sliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    sliderButton.BorderSizePixel = 0
    sliderButton.Text = ""
    sliderButton.ZIndex = 5
    sliderButton.Parent = sliderContainer

    local buttonCorner = Instance.new("UICorner")
    buttonCorner.CornerRadius = UDim.new(1, 0)
    buttonCorner.Parent = sliderButton

    -- Min Label
    local minLabel = Instance.new("TextLabel")
    minLabel.Size = UDim2.new(0, 30, 0, 15)
    minLabel.Position = UDim2.new(0, 15, 0, 65)
    minLabel.BackgroundTransparency = 1
    minLabel.Text = "30"
    minLabel.Font = Enum.Font.Gotham
    minLabel.TextSize = 11
    minLabel.TextColor3 = Color3.fromRGB(100, 100, 110)
    minLabel.TextXAlignment = Enum.TextXAlignment.Left
    minLabel.ZIndex = 3
    minLabel.Parent = contentFrame

    -- Max Label
    local maxLabel = Instance.new("TextLabel")
    maxLabel.Size = UDim2.new(0, 30, 0, 15)
    maxLabel.Position = UDim2.new(1, -45, 0, 65)
    maxLabel.BackgroundTransparency = 1
    maxLabel.Text = "120"
    maxLabel.Font = Enum.Font.Gotham
    maxLabel.TextSize = 11
    maxLabel.TextColor3 = Color3.fromRGB(100, 100, 110)
    maxLabel.TextXAlignment = Enum.TextXAlignment.Right
    maxLabel.ZIndex = 3
    maxLabel.Parent = contentFrame

    return mainFrame, headerBar, minimizeBtn, closeBtn, contentFrame, fovDisplay, sliderContainer, sliderFill, sliderButton
end

-- Create both GUIs
local keyFrame, keyInputBox, submitBtn, errorMsg = createKeySystem()
local mainFrame, headerBar, minimizeBtn, closeBtn, contentFrame, fovDisplay, sliderContainer, sliderFill, sliderButton = createFOVChanger()

-- FOV Functionality
local minFOV = 30
local maxFOV = 120
local currentFOV = 70

local function updateFOV(fov)
    currentFOV = math.clamp(fov, minFOV, maxFOV)
    
    -- Update camera FOV
    if Camera then
        Camera.FieldOfView = currentFOV
    end
    
    -- Update display
    fovDisplay.Text = "FOV: " .. math.floor(currentFOV)
    
    -- Update slider position
    local percent = (currentFOV - minFOV) / (maxFOV - minFOV)
    sliderFill.Size = UDim2.new(percent, 0, 1, 0)
    sliderButton.Position = UDim2.new(percent, -9, 0.5, -9)
end

-- Slider Interaction
local draggingSlider = false

sliderButton.MouseButton1Down:Connect(function()
    draggingSlider = true
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        draggingSlider = false
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if draggingSlider and input.UserInputType == Enum.UserInputType.MouseMovement then
        local mousePos = UserInputService:GetMouseLocation()
        local sliderPos = sliderContainer.AbsolutePosition
        local sliderSize = sliderContainer.AbsoluteSize
        
        local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize.X)
        local percent = relativeX / sliderSize.X
        local newFOV = minFOV + (percent * (maxFOV - minFOV))
        
        updateFOV(newFOV)
    end
end)

sliderContainer.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        local mousePos = UserInputService:GetMouseLocation()
        local sliderPos = sliderContainer.AbsolutePosition
        local sliderSize = sliderContainer.AbsoluteSize
        
        local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize.X)
        local percent = relativeX / sliderSize.X
        local newFOV = minFOV + (percent * (maxFOV - minFOV))
        
        updateFOV(newFOV)
        draggingSlider = true
    end
end)

-- Make Draggable
local dragging, dragInput, dragStart, startPos

local function updateDrag(input)
    local delta = input.Position - dragStart
    mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end

headerBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

headerBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        updateDrag(input)
    end
end)

-- Close Button
closeBtn.MouseButton1Click:Connect(function()
    screenGui:Destroy()
end)

-- Minimize Button
local isMinimized = false
minimizeBtn.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    
    local targetSize
    if isMinimized then
        targetSize = UDim2.new(0, 320, 0, 40)
        contentFrame.Visible = false
    else
        targetSize = UDim2.new(0, 320, 0, 140)
        contentFrame.Visible = true
    end
    
    local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    local tween = TweenService:Create(mainFrame, tweenInfo, {Size = targetSize})
    tween:Play()
end)

-- Key Validation
local function validateKey()
    local enteredKey = keyInputBox.Text
    
    if enteredKey == CORRECT_KEY then
        -- Success animation
        submitBtn.BackgroundColor3 = Color3.fromRGB(100, 255, 150)
        submitBtn.Text = "✓ Access Granted!"
        errorMsg.Visible = false
        
        task.wait(0.5)
        
        -- Destroy key frame and show FOV changer
        keyFrame:Destroy()
        mainFrame.Visible = true
        
        print("FOV Changer unlocked!")
    else
        -- Error animation
        errorMsg.Text = "❌ Incorrect Key!"
        errorMsg.Visible = true
        submitBtn.BackgroundColor3 = Color3.fromRGB(255, 100, 100)
        
        task.wait(0.3)
        submitBtn.BackgroundColor3 = Color3.fromRGB(200, 180, 255)
        submitBtn.Text = "Submit Key"
        
        task.wait(1.5)
        errorMsg.Visible = false
    end
end

submitBtn.MouseButton1Click:Connect(validateKey)

keyInputBox.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        validateKey()
    end
end)

-- Initialize FOV
updateFOV(70)

Features & Information

Key is in the Tags!
#FOV#KEY#IS#fovisbetter

Community Comments (4)

v8mppv8mppNov 23, 2025

This one has a key system but i have another one with out a key btw

VortexVortexNov 23, 2025

key is fovisbetter, try harder next time

Replying to @Vortex
v8mppv8mppNov 24, 2025

@Vortex its in the tags gng, kinda ez

Replying to @v8mpp
VortexVortexNov 24, 2025

@v8mpp didnt see that mb

More Scripts for Universal Scripts