--[[ FULL LUA SCRIPT FOR DELTA EXECUTOR WITH ESP, AIMBOT, FOV CHANGER, AND PERSISTENT GUI Created by: lua This version fixes the issue of the GUI disappearing on respawn. ]]-- --------------------------------------------------------------------------------- -- SETTINGS -- --------------------------------------------------------------------------------- -- A table to hold our ESP settings local esp_settings = { enabled = false, box = true, corner_box = false, _3d_box = false, skeleton = false, circle_head = false, name = true, health = true, tracer = false, distance = true, rainbow_mode = false, -- Visual filters team_check = true, -- Aimbot settings aimbot_enabled = false, aimbot_fov = 120, } --------------------------------------------------------------------------------- -- GUI LOGIC -- --------------------------------------------------------------------------------- local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local camera = workspace.CurrentCamera -- Create a top-level ScreenGui instance and parent it to CoreGui local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "ESPPanelGui" ScreenGui.Parent = CoreGui -- Create the main GUI frame (non-movable) local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0.4, 0, 0.95, 0) MainFrame.Position = UDim2.new(0.3, 0, 0.025, 0) MainFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui -- Use a ScrollingFrame for more options local ScrollingFrame = Instance.new("ScrollingFrame") ScrollingFrame.Size = UDim2.new(1, 0, 1, 0) ScrollingFrame.BackgroundTransparency = 1 ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 715) ScrollingFrame.ScrollBarImageColor3 = Color3.new(0.2, 0.2, 0.2) ScrollingFrame.Parent = MainFrame -- Create the hide/show button outside the main frame local toggle_button = Instance.new("TextButton") toggle_button.Size = UDim2.new(0, 100, 0, 30) toggle_button.Position = UDim2.new(0.05, 0, 0.05, 0) toggle_button.Text = "Show GUI" toggle_button.Font = Enum.Font.SourceSans toggle_button.TextSize = 14 toggle_button.TextColor3 = Color3.new(1, 1, 1) toggle_button.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15) toggle_button.Parent = ScreenGui toggle_button.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible if MainFrame.Visible then toggle_button.Text = "Hide GUI" else toggle_button.Text = "Show GUI" end end) local function create_toggle(name, key, default_state, y_pos) local button = Instance.new("TextButton") button.Size = UDim2.new(1, -20, 0, 40) button.Position = UDim2.new(0, 10, 0, y_pos) button.Text = name .. " (" .. tostring(default_state) .. ")" button.Font = Enum.Font.SourceSansBold button.TextSize = 18 button.TextColor3 = Color3.new(1, 1, 1) button.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2) button.Parent = ScrollingFrame button.MouseButton1Click:Connect(function() local newState = not esp_settings[key] esp_settings[key] = newState button.Text = name .. " (" .. tostring(newState) .. ")" end) end local function create_label(text, y_pos) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -20, 0, 30) label.Position = UDim2.new(0, 10, 0, y_pos) label.Text = text label.Font = Enum.Font.SourceSansBold label.TextSize = 20 label.TextColor3 = Color3.new(1, 1, 1) label.BackgroundTransparency = 1 label.Parent = ScrollingFrame return label end local function create_fov_control(y_pos) local fov_label = create_label("FOV: " .. tostring(esp_settings.aimbot_fov), y_pos) local button_frame = Instance.new("Frame") button_frame.Size = UDim2.new(1, -20, 0, 40) button_frame.Position = UDim2.new(0, 10, 0, y_pos + 40) button_frame.BackgroundTransparency = 1 button_frame.Parent = ScrollingFrame local minus_button = Instance.new("TextButton") minus_button.Size = UDim2.new(0.3, 0, 1, 0) minus_button.Position = UDim2.new(0, 0, 0, 0) minus_button.Text = "-5" minus_button.Font = Enum.Font.SourceSansBold minus_button.TextSize = 18 minus_button.TextColor3 = Color3.new(1,1,1) minus_button.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3) minus_button.Parent = button_frame local plus_button = Instance.new("TextButton") plus_button.Size = UDim2.new(0.3, 0, 1, 0) plus_button.Position = UDim2.new(0.7, 0, 0, 0) plus_button.Text = "+5" plus_button.Font = Enum.Font.SourceSansBold plus_button.TextSize = 18 plus_button.TextColor3 = Color3.new(1,1,1) plus_button.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3) plus_button.Parent = button_frame minus_button.MouseButton1Click:Connect(function() esp_settings.aimbot_fov = math.max(0, esp_settings.aimbot_fov - 5) fov_label.Text = "FOV: " .. tostring(esp_settings.aimbot_fov) end) plus_button.MouseButton1Click:Connect(function() esp_settings.aimbot_fov = math.min(1000, esp_settings.aimbot_fov + 5) fov_label.Text = "FOV: " .. tostring(esp_settings.aimbot_fov) end) end -- Visuals Heading create_label("Visuals", 10) create_toggle("ESP Enabled", "enabled", esp_settings.enabled, 55) create_toggle("Box ESP", "box", esp_settings.box, 100) create_toggle("Corner Box", "corner_box", esp_settings.corner_box, 145) create_toggle("3D Box", "_3d_box", esp_settings._3d_box, 190) create_toggle("Skeleton", "skeleton", esp_settings.skeleton, 235) create_toggle("Circle Head", "circle_head", esp_settings.circle_head, 280) create_toggle("Name ESP", "name", esp_settings.name, 325) create_toggle("Health ESP", "health", esp_settings.health, 370) create_toggle("Tracer ESP", "tracer", esp_settings.tracer, 415) create_toggle("Distance ESP", "distance", esp_settings.distance, 460) create_toggle("Rainbow Mode", "rainbow_mode", esp_settings.rainbow_mode, 505) -- Visuals Filters Heading create_label("Filters", 550) create_toggle("Team Check", "team_check", esp_settings.team_check, 595) -- Aimbot Heading create_label("Aimbot", 640) create_toggle("Aimbot Enabled", "aimbot_enabled", esp_settings.aimbot_enabled, 685) create_fov_control(730) --------------------------------------------------------------------------------- -- ESP LOGIC -- --------------------------------------------------------------------------------- local Drawing = Drawing local visuals_frame = Instance.new("Frame") visuals_frame.Name = "ESPVisuals" visuals_frame.Size = UDim2.new(1, 0, 1, 0) visuals_frame.BackgroundTransparency = 1 visuals_frame.Parent = ScreenGui visuals_frame.ZIndex = 100 local esp_drawings = {} -- Helper Functions local function is_teammate(player) return player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team end local function is_visible(target_part) local ray_params = RaycastParams.new() ray_params.FilterDescendantsInstances = {LocalPlayer.Character} ray_params.FilterType = Enum.RaycastFilterType.Exclude local ray_result = workspace:Raycast(camera.CFrame.Position, (target_part.Position - camera.CFrame.Position).unit * 500, ray_params) return ray_result and ray_result.Instance.Parent == target_part.Parent end local function create_line(pos1, pos2, color, thickness, parent) local line = Drawing.new("Line") line.Color = color line.Thickness = thickness line.From = pos1 line.To = pos2 line.Visible = true table.insert(parent, line) end local function create_circle(pos, radius, color, thickness, fill, parent) local circle = Drawing.new("Circle") circle.Position = pos circle.Radius = radius circle.Color = color circle.Thickness = thickness circle.Filled = fill circle.Visible = true table.insert(parent, circle) end local function create_text(pos, text, size, color, parent) local text_draw = Drawing.new("Text") text_draw.Position = pos text_draw.Text = text text_draw.Size = size text_draw.Color = color text_draw.Outline = true text_draw.OutlineColor = Color3.new(0, 0, 0) text_draw.Visible = true table.insert(parent, text_draw) end local function clear_drawings() for _, drawing in ipairs(esp_drawings) do drawing:Remove() end esp_drawings = {} end local function draw_player_esp(player) local character = player.Character local humanoid = character:FindFirstChild("Humanoid") local humanoid_root_part = character:FindFirstChild("HumanoidRootPart") if not character or not humanoid or humanoid.Health <= 0 or not humanoid_root_part then return end local head_pos, head_on_screen = camera:WorldToViewportPoint(character.Head.Position) local root_pos, root_on_screen = camera:WorldToViewportPoint(humanoid_root_part.Position) local is_visible_check = is_visible(humanoid_root_part) local esp_color = Color3.new(1, 0, 0) -- Default Red for Enemy local tracer_color = esp_color if esp_settings.team_check and is_teammate(player) then return end if esp_settings.rainbow_mode then esp_color = Color3.fromHSV(tick() % 1, 1, 1) else if is_teammate(player) then esp_color = Color3.new(0, 0, 1) -- Blue for Teammate elseif is_visible_check then esp_color = Color3.new(0, 1, 0) -- Green for Visible Enemy end end tracer_color = esp_color if not head_on_screen and not root_on_screen then return end local head_vector = Vector2.new(head_pos.X, head_pos.Y) local root_vector = Vector2.new(root_pos.X, root_pos.Y) local dist_from_cam = (LocalPlayer.Character.Head.Position - character.Head.Position).Magnitude -- Visuals Proportional to Character local character_screen_height = math.abs(head_vector.Y - root_vector.Y) local box_height = math.max(60, character_screen_height) local box_width = box_height * 0.6 -- Health, Name, and Distance if esp_settings.health then local health_percent = humanoid.Health / humanoid.MaxHealth local health_color = Color3.fromHSV(0.35 * health_percent, 1, 1) create_line(Vector2.new(root_vector.X - box_width / 2 - 5, root_vector.Y), Vector2.new(root_vector.X - box_width / 2 - 5, root_vector.Y + (head_vector.Y - root_vector.Y) * health_percent), health_color, 4, esp_drawings) end if esp_settings.name then create_text(Vector2.new(head_vector.X, head_vector.Y - 15), player.Name, 12, Color3.new(1,1,1), esp_drawings) end if esp_settings.distance then create_text(Vector2.new(root_vector.X, root_vector.Y + 10), math.floor(dist_from_cam) .. "m", 12, Color3.new(1,1,1), esp_drawings) end -- Visuals if esp_settings.box or esp_settings.corner_box then local box_x1 = root_vector.X - box_width / 2 local box_y1 = head_vector.Y local box_x2 = root_vector.X + box_width / 2 local box_y2 = root_vector.Y if esp_settings.box then create_line(Vector2.new(box_x1, box_y1), Vector2.new(box_x2, box_y1), esp_color, 1.5, esp_drawings) -- Top create_line(Vector2.new(box_x1, box_y2), Vector2.new(box_x2, box_y2), esp_color, 1.5, esp_drawings) -- Bottom create_line(Vector2.new(box_x1, box_y1), Vector2.new(box_x1, box_y2), esp_color, 1.5, esp_drawings) -- Left create_line(Vector2.new(box_x2, box_y1), Vector2.new(box_x2, box_y2), esp_color, 1.5, esp_drawings) -- Right elseif esp_settings.corner_box then local corner_size = box_width * 0.2 -- Top Left create_line(Vector2.new(box_x1, box_y1), Vector2.new(box_x1, box_y1 + corner_size), esp_color, 1.5, esp_drawings) create_line(Vector2.new(box_x1, box_y1), Vector2.new(box_x1 + corner_size, box_y1), esp_color, 1.5, esp_drawings) -- Top Right create_line(Vector2.new(box_x2, box_y1), Vector2.new(box_x2, box_y1 + corner_size), esp_color, 1.5, esp_drawings) create_line(Vector2.new(box_x2, box_y1), Vector2.new(box_x2 - corner_size, box_y1), esp_color, 1.5, esp_drawings) -- Bottom Left create_line(Vector2.new(box_x1, box_y2), Vector2.new(box_x1, box_y2 - corner_size), esp_color, 1.5, esp_drawings) create_line(Vector2.new(box_x1, box_y2), Vector2.new(box_x1 + corner_size, box_y2), esp_color, 1.5, esp_drawings) -- Bottom Right create_line(Vector2.new(box_x2, box_y2), Vector2.new(box_x2, box_y2 - corner_size), esp_color, 1.5, esp_drawings) create_line(Vector2.new(box_x2, box_y2), Vector2.new(box_x2 - corner_size, box_y2), esp_color, 1.5, esp_drawings) end end if esp_settings._3d_box then local CFrame = humanoid_root_part.CFrame local size = humanoid_root_part.Size local x = size.X / 2 local y = size.Y / 2 local z = size.Z / 2 local corners = { CFrame * CFrame.new(x, y, z).p, CFrame * CFrame.new(x, y, -z).p, CFrame * CFrame.new(x, -y, z).p, CFrame * CFrame.new(x, -y, -z).p, CFrame * CFrame.new(-x, y, z).p, CFrame * CFrame.new(-x, y, -z).p, CFrame * CFrame.new(-x, -y, z).p, CFrame * CFrame.new(-x, -y, -z).p, } local function draw_line_between_corners(a, b) local pos1, on_screen1 = camera:WorldToViewportPoint(corners[a]) local pos2, on_screen2 = camera:WorldToViewportPoint(corners[b]) if on_screen1 and on_screen2 then create_line(Vector2.new(pos1.X, pos1.Y), Vector2.new(pos2.X, pos2.Y), esp_color, 1.5, esp_drawings) end end draw_line_between_corners(1,2) draw_line_between_corners(1,3) draw_line_between_corners(1,5) draw_line_between_corners(2,4) draw_line_between_corners(2,6) draw_line_between_corners(3,4) draw_line_between_corners(3,7) draw_line_between_corners(4,8) draw_line_between_corners(5,6) draw_line_between_corners(5,7) draw_line_between_corners(6,8) draw_line_between_corners(7,8) end if esp_settings.skeleton then local parts = { Head = character:FindFirstChild("Head"), Torso = character:FindFirstChild("Torso"), HumanoidRootPart = humanoid_root_part, UpperTorso = character:FindFirstChild("UpperTorso"), LowerTorso = character:FindFirstChild("LowerTorso"), LeftUpperArm = character:FindFirstChild("LeftUpperArm"), LeftLowerArm = character:FindFirstChild("LeftLowerArm"), LeftHand = character:FindFirstChild("LeftHand"), RightUpperArm = character:FindFirstChild("RightUpperArm"), RightLowerArm = character:FindFirstChild("RightLowerArm"), RightHand = character:FindFirstChild("RightHand"), LeftUpperLeg = character:FindFirstChild("LeftUpperLeg"), LeftLowerLeg = character:FindFirstChild("LeftLowerLeg"), LeftFoot = character:FindFirstChild("LeftFoot"), RightUpperLeg = character:FindFirstChild("RightUpperLeg"), RightLowerLeg = character:FindFirstChild("RightLowerLeg"), RightFoot = character:FindFirstChild("RightFoot") } local function draw_bone(p1_name, p2_name) local p1 = parts[p1_name] local p2 = parts[p2_name] if p1 and p2 then local pos1, on_screen1 = camera:WorldToViewportPoint(p1.Position) local pos2, on_screen2 = camera:WorldToViewportPoint(p2.Position) if on_screen1 and on_screen2 then create_line(Vector2.new(pos1.X, pos1.Y), Vector2.new(pos2.X, pos2.Y), esp_color, 1.5, esp_drawings) end end end -- R6 SKELETON if parts.Torso then draw_bone("Head", "Torso") draw_bone("Torso", "LeftArm") draw_bone("Torso", "RightArm") draw_bone("Torso", "LeftLeg") draw_bone("Torso", "RightLeg") draw_bone("LeftArm", "LeftHand") draw_bone("RightArm", "RightHand") draw_bone("LeftLeg", "LeftFoot") draw_bone("RightLeg", "RightFoot") end -- R15 SKELETON if parts.UpperTorso then draw_bone("Head", "UpperTorso") draw_bone("UpperTorso", "LowerTorso") draw_bone("UpperTorso", "LeftUpperArm") draw_bone("LeftUpperArm", "LeftLowerArm") draw_bone("LeftLowerArm", "LeftHand") draw_bone("UpperTorso", "RightUpperArm") draw_bone("RightUpperArm", "RightLowerArm") draw_bone("RightLowerArm", "RightHand") draw_bone("LowerTorso", "LeftUpperLeg") draw_bone("LeftUpperLeg", "LeftLowerLeg") draw_bone("LeftLowerLeg", "LeftFoot") draw_bone("LowerTorso", "RightUpperLeg") draw_bone("RightUpperLeg", "RightLowerLeg") draw_bone("RightLowerLeg", "RightFoot") end end if esp_settings.circle_head then local head_pos = character:FindFirstChild("Head") if head_pos then local pos, on_screen = camera:WorldToViewportPoint(head_pos.Position) if on_screen then create_circle(Vector2.new(pos.X, pos.Y), 10, esp_color, 1.5, false, esp_drawings) end end end if esp_settings.tracer then create_line(Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y), root_vector, tracer_color, 1.5, esp_drawings) end end local function main_loop() clear_drawings() local best_target = nil local smallest_fov = esp_settings.aimbot_fov local screen_center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2) -- Aimbot Logic if esp_settings.aimbot_enabled then for _, player in ipairs(Players:GetPlayers()) do local character = player.Character if player ~= LocalPlayer and character and character:FindFirstChild("Humanoid") and character:FindFirstChild("Head") then local humanoid = character.Humanoid local head_pos = character.Head if humanoid and humanoid.Health > 0 and not (esp_settings.team_check and is_teammate(player)) then local head_on_screen, head_in_viewport = camera:WorldToViewportPoint(head_pos.Position) if head_in_viewport then local fov_dist = (Vector2.new(head_on_screen.X, head_on_screen.Y) - screen_center).Magnitude if fov_dist < smallest_fov then if is_visible(head_pos) then smallest_fov = fov_dist best_target = head_pos end end end end end end if best_target then camera.CFrame = CFrame.new(camera.CFrame.Position, best_target.Position) end end -- ESP Logic if esp_settings.enabled then for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then