local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local Drones = workspace:WaitForChild("Drones") local JammedDroneRemote = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("Weapon"):WaitForChild("Jammer"):WaitForChild("JammedDrone") local espEnabled = false local aimlockEnabled = false local MAX_ESP_DISTANCE = 500000 local COLOR_DANGER = Color3.fromRGB(255, 0, 0) local COLOR_IN_RANGE = Color3.fromRGB(0, 255, 0) local trackedDrones = {} local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "DroneControlGUI" ScreenGui.ResetOnSpawn = false local success, _ = pcall(function() ScreenGui.Parent = game:GetService("CoreGui") end) if not success then ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 200, 0, 150) MainFrame.Position = UDim2.new(0, 20, 0.3, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = true MainFrame.Parent = ScreenGui local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(0, 8) UICorner.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 35) Title.BackgroundTransparency = 1 Title.Text = "Drone Fucker" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextSize = 16 Title.Font = Enum.Font.SourceSansBold Title.Parent = MainFrame local EspButton = Instance.new("TextButton") EspButton.Name = "EspButton" EspButton.Size = UDim2.new(0.85, 0, 0, 35) EspButton.Position = UDim2.new(0.075, 0, 0.28, 0) EspButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) EspButton.Text = "ESP: OFF" EspButton.TextColor3 = Color3.fromRGB(255, 255, 255) EspButton.TextSize = 14 EspButton.Font = Enum.Font.SourceSansSemibold EspButton.Parent = MainFrame local BtnCorner1 = Instance.new("UICorner") BtnCorner1.CornerRadius = UDim.new(0, 6) BtnCorner1.Parent = EspButton local AimlockButton = Instance.new("TextButton") AimlockButton.Name = "AimlockButton" AimlockButton.Size = UDim2.new(0.85, 0, 0, 35) AimlockButton.Position = UDim2.new(0.075, 0, 0.60, 0) AimlockButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) AimlockButton.Text = "Aimlock: OFF" AimlockButton.TextColor3 = Color3.fromRGB(255, 255, 255) AimlockButton.TextSize = 14 AimlockButton.Font = Enum.Font.SourceSansSemibold AimlockButton.Parent = MainFrame local BtnCorner2 = Instance.new("UICorner") BtnCorner2.CornerRadius = UDim.new(0, 6) BtnCorner2.Parent = AimlockButton local function addESP(drone) if trackedDrones[drone] then return end local highlight = Instance.new("Highlight") highlight.Name = "DroneHighlight" highlight.FillColor = COLOR_DANGER highlight.OutlineColor = COLOR_DANGER highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop highlight.Parent = drone local line = Drawing.new("Line") line.Color = COLOR_DANGER line.Thickness = 1.5 line.Transparency = 1 line.Visible = false local text = Drawing.new("Text") text.Color = COLOR_DANGER text.Size = 16 text.Center = true text.Outline = true text.OutlineColor = Color3.fromRGB(0, 0, 0) text.Visible = false trackedDrones[drone] = { Highlight = highlight, Line = line, Text = text } end local function removeESP(drone) local data = trackedDrones[drone] if data then if data.Highlight then data.Highlight:Destroy() end if data.Line then data.Line:Remove() end if data.Text then data.Text:Remove() end trackedDrones[drone] = nil end end local function hideAllESP() for _, data in pairs(trackedDrones) do if data.Highlight then data.Highlight.Enabled = false end if data.Line then data.Line.Visible = false end if data.Text then data.Text.Visible = false end end end for _, child in ipairs(Drones:GetChildren()) do addESP(child) end Drones.ChildAdded:Connect(addESP) Drones.ChildRemoved:Connect(removeESP) local function getJammer() return LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Jammer") or LocalPlayer.Backpack:FindFirstChild("Jammer") end local function getClosestDrone() local closestDrone = nil local shortestDistance = 1000 local character = LocalPlayer.Character local originPos = (character and character:FindFirstChild("HumanoidRootPart")) and character.HumanoidRootPart.Position or Camera.CFrame.Position for _, drone in ipairs(Drones:GetChildren()) do local lifeStatus = drone:FindFirstChild("LifeStatus") if lifeStatus and lifeStatus.Value then local dronePos = drone:GetPivot().Position local distance = (dronePos - originPos).Magnitude if distance < shortestDistance then shortestDistance = distance closestDrone = drone end end end return closestDrone end RunService.RenderStepped:Connect(function() local viewportSize = Camera.ViewportSize local screenBottom = Vector2.new(viewportSize.X / 2, viewportSize.Y) local cameraPos = Camera.CFrame.Position for drone, data in pairs(trackedDrones) do if espEnabled and drone and drone.Parent and drone:IsA("Model") then local dronePos = drone:GetPivot().Position local distance = math.floor((dronePos - cameraPos).Magnitude) if distance <= MAX_ESP_DISTANCE then local screenPos, onScreen = Camera:WorldToViewportPoint(dronePos) if onScreen then local currentColor = (distance <= 1000) and COLOR_IN_RANGE or COLOR_DANGER data.Highlight.Enabled = true data.Highlight.FillColor = currentColor data.Highlight.OutlineColor = currentColor data.Line.Color = currentColor data.Line.From = screenBottom data.Line.To = Vector2.new(screenPos.X, screenPos.Y) data.Line.Visible = true data.Text.Color = currentColor data.Text.Position = Vector2.new(screenPos.X, screenPos.Y - 25) data.Text.Text = string.format("%d Studs", distance) data.Text.Visible = true else data.Highlight.Enabled = false data.Line.Visible = false data.Text.Visible = false end else data.Highlight.Enabled = false data.Line.Visible = false data.Text.Visible = false end else if data.Highlight then data.Highlight.Enabled = false end data.Line.Visible = false data.Text.Visible = false end end if aimlockEnabled then local jammer = getJammer() if jammer and jammer.Parent == LocalPlayer.Character then local targetDrone = getClosestDrone() if targetDrone then local dronePos = targetDrone:GetPivot().Position Camera.CFrame = CFrame.new(Camera.CFrame.Position, dronePos) local fanEvent = jammer:FindFirstChild("Events") and jammer.Events:FindFirstChild("FanEvent") if fanEvent then fanEvent:FireServer(30) end JammedDroneRemote:FireServer(targetDrone, Camera.CFrame) end end end end) EspButton.MouseButton1Click:Connect(function() espEnabled = not espEnabled if espEnabled then EspButton.Text = "ESP: ON" EspButton.BackgroundColor3 = Color3.fromRGB(40, 180, 40) else EspButton.Text = "ESP: OFF" EspButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) hideAllESP() end end) AimlockButton.MouseButton1Click:Connect(function() aimlockEnabled = not aimlockEnabled if aimlockEnabled then AimlockButton.Text = "Aimlock: ON" AimlockButton.BackgroundColor3 = Color3.fromRGB(40, 180, 40) else AimlockButton.Text = "Aimlock: OFF" AimlockButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) end end)