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)