BLIND SHOT OP
Key RequiredUniversal

BLIND SHOT OP

Universal ScriptK1yroK1yro 893 views 154 executesUpdated Dec 22, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•144 lines (7133 chars)
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera


local ScreenGui = Instance.new("ScreenGui", game.CoreGui)
ScreenGui.Name = "BlindShotFinal"
ScreenGui.ResetOnSpawn = false


local ToggleButton = Instance.new("ImageButton", ScreenGui)
ToggleButton.Size = UDim2.new(0, 60, 0, 60)
ToggleButton.Position = UDim2.new(0, 15, 0.5, -30)
ToggleButton.BackgroundColor3 = Color3.fromRGB(130, 210, 255)
Instance.new("UICorner", ToggleButton).CornerRadius = UDim.new(1, 0)


local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Size = UDim2.new(0, 500, 0, 320)
MainFrame.Position = UDim2.new(0.5, -250, 0.5, -160)
MainFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 150)
MainFrame.BorderSizePixel = 0
local Gradient = Instance.new("UIGradient", MainFrame)
Gradient.Color = ColorSequence.new(Color3.fromRGB(0, 0, 255), Color3.fromRGB(0, 0, 10))
Gradient.Rotation = 90


local Title = Instance.new("TextLabel", MainFrame)
Title.Text = "BLIND SHOT"; Title.Font = Enum.Font.PermanentMarker; Title.TextSize = 35; Title.TextColor3 = Color3.new(1,1,1); Title.Position = UDim2.new(0.05, 0, 0, 10); Title.Size = UDim2.new(0, 200, 0, 50); Title.BackgroundTransparency = 1

local DestroyBtn = Instance.new("TextButton", MainFrame)
DestroyBtn.Text = "X"; DestroyBtn.TextColor3 = Color3.fromRGB(255, 0, 0); DestroyBtn.TextSize = 40; DestroyBtn.BackgroundTransparency = 1; DestroyBtn.Position = UDim2.new(1, -50, 0, 5); DestroyBtn.Size = UDim2.new(0, 40, 0, 40)

local MinimizeBtn = Instance.new("TextButton", MainFrame)
MinimizeBtn.Text = "-"; MinimizeBtn.TextColor3 = Color3.fromRGB(180, 180, 180); MinimizeBtn.TextSize = 50; MinimizeBtn.BackgroundTransparency = 1; MinimizeBtn.Position = UDim2.new(1, -95, 0, 0); MinimizeBtn.Size = UDim2.new(0, 40, 0, 40)


local ContentArea = Instance.new("Frame", MainFrame)
ContentArea.Size = UDim2.new(0, 300, 1, -70); ContentArea.Position = UDim2.new(0, 170, 0, 70); ContentArea.BackgroundTransparency = 1


local States = {ESP = false}
local espConnections = {}
local torsoLines = {}

local function HealthBarLerp(ratio)
    return Color3.fromRGB(math.floor(255 * (1 - ratio)), math.floor(255 * ratio), 0)
end

local function createESP(player)
    -- ESP Drawings (2D)
    local Box = Drawing.new("Square"); Box.Visible = false; Box.Color = Color3.fromRGB(138, 43, 226); Box.Thickness = 1
    local NameText = Drawing.new("Text"); NameText.Visible = false; NameText.Size = 16; NameText.Center = true; NameText.Outline = true; NameText.Color = Color3.new(1,1,1)
    local HealthBar = Drawing.new("Square"); HealthBar.Visible = false; HealthBar.Filled = true


    local linePart = Instance.new("Part")
    linePart.Name = "PermanentGreenLine"
    linePart.Size = Vector3.new(0.15, 0.15, 150) -- Made even longer (150)
    linePart.Transparency = 0.3
    linePart.Material = Enum.Material.Neon
    linePart.Color = Color3.fromRGB(0, 255, 0)
    linePart.CanCollide = false
    linePart.Parent = workspace

    local weld = Instance.new("Weld")
    weld.Part0 = player.Character:WaitForChild("HumanoidRootPart")
    weld.Part1 = linePart
    weld.C0 = CFrame.new(0, 0, -75) -- Centered for 150 length
    weld.Parent = linePart
    
    torsoLines[player] = linePart

    local connection = RunService.RenderStepped:Connect(function()
        -- If ESP is toggled off or player dies, hide everything
        if not States.ESP or not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
            Box.Visible = false; NameText.Visible = false; HealthBar.Visible = false
            if torsoLines[player] then torsoLines[player].Transparency = 1 end
            return
        end
        
        local hrp = player.Character.HumanoidRootPart
        local hum = player.Character:FindFirstChild("Humanoid")
        local screenPos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
        
        -- Always keep the Green Line visible while ESP is ON
        if torsoLines[player] then torsoLines[player].Transparency = 0.3 end

        -- 2D Elements only show when player is on screen
        if onScreen and hum then
            local headPos = Camera:WorldToViewportPoint(hrp.Position + Vector3.new(0, 3, 0))
            local height = math.abs(headPos.Y - screenPos.Y) * 2.2
            local width = height / 1.8

            Box.Size = Vector2.new(width, height); Box.Position = Vector2.new(screenPos.X - width/2, screenPos.Y - height/2); Box.Visible = true
            NameText.Text = player.Name; NameText.Position = Vector2.new(screenPos.X, screenPos.Y - height/2 - 15); NameText.Visible = true
            HealthBar.Size = Vector2.new(2, height * (hum.Health / hum.MaxHealth)); HealthBar.Position = Vector2.new(screenPos.X - width/2 - 5, screenPos.Y - height/2 + (height * (1 - hum.Health/hum.MaxHealth))); HealthBar.Color = HealthBarLerp(hum.Health/hum.MaxHealth); HealthBar.Visible = true
        else
            Box.Visible = false; NameText.Visible = false; HealthBar.Visible = false
        end
    end)
    
    return {Connection = connection, Drawings = {Box, NameText, HealthBar}}
end

local function CleanupESP()
    for player, data in pairs(espConnections) do
        data.Connection:Disconnect()
        for _, draw in pairs(data.Drawings) do draw:Remove() end
    end
    for _, line in pairs(torsoLines) do line:Destroy() end
    espConnections = {}
    torsoLines = {}
end


local ESPToggle = Instance.new("TextButton", ContentArea)
ESPToggle.Size = UDim2.new(1, 0, 0, 50); ESPToggle.Text = "BLIND SHOT ESP: OFF"; ESPToggle.BackgroundColor3 = Color3.fromRGB(0, 0, 40); ESPToggle.TextColor3 = Color3.new(1,1,1)
Instance.new("UICorner", ESPToggle).CornerRadius = UDim.new(0.5, 0)

ESPToggle.MouseButton1Click:Connect(function()
    States.ESP = not States.ESP
    ESPToggle.Text = "BLIND SHOT ESP: " .. (States.ESP and "ON" or "OFF")
    ESPToggle.BackgroundColor3 = States.ESP and Color3.fromRGB(0, 150, 0) or Color3.fromRGB(0, 0, 40)
    if States.ESP then
        for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer then espConnections[p] = createESP(p) end end
    else
        CleanupESP()
    end
end)


local dragging, dragStart, startPos
MainFrame.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true; dragStart = i.Position; startPos = MainFrame.Position end end)
UserInputService.InputChanged:Connect(function(i) if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
    local delta = i.Position - dragStart; MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end end)
UserInputService.InputEnded:Connect(function() dragging = false end)

DestroyBtn.MouseButton1Click:Connect(function() CleanupESP(); ScreenGui:Destroy() end)
MinimizeBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false end)
ToggleButton.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible end)

Features & Information

ESP HIDE / SHOW BUTTON Mobile support PC Support (FREE)
#blind shot#op#free#admin#by kyro

Community Comments (2)

Iwashere67Iwashere67Dec 22, 2025

Nice ai

Replying to @Iwashere67
K1yroK1yroDec 23, 2025

@Iwashere67 its not LOL

More Scripts for Universal Scripts