local players = game:GetService("Players") local rs = game:GetService("ReplicatedStorage") local run = game:GetService("RunService") local drone_code, hover, wait_h, wait_t, poll = "pg-7vl", 5, 0.2, 0.2, 0.05 local lp, char = players.LocalPlayer, players.LocalPlayer.Character or players.LocalPlayer.CharacterAdded:Wait() local hrp = char:WaitForChild("HumanoidRootPart") local net = rs:WaitForChild("Network") local create, explode = net:WaitForChild("CreateDrone"), net:WaitForChild("ExplodeDrone") _G.drone_loop = true local function get_target_part(model) if model:IsA("Model") then if model:FindFirstChild("HumanoidRootPart") then return model.HumanoidRootPart elseif model.PrimaryPart then return model.PrimaryPart else for _, p in pairs(model:GetDescendants()) do if p:IsA("BasePart") then return p end end end end return nil end local function nearest() local n, s = nil, math.huge for _, p in pairs(workspace:GetDescendants()) do if p:IsA("BasePart") and not p.Anchored and not p:IsDescendantOf(char) then local is_bot = workspace:FindFirstChild("Bots") and p:IsDescendantOf(workspace.Bots) local is_player = false for _, pl in pairs(players:GetPlayers()) do if pl.Character and p:IsDescendantOf(pl.Character) then is_player = true break end end if not is_bot and not is_player then local d = (hrp.Position - p.Position).Magnitude if d < s then s, n = d, p end end end end return n end local function weighted_target() local player_list = {} for _, p in pairs(players:GetPlayers()) do if p ~= lp and p.Character then local part = get_target_part(p.Character) if part then table.insert(player_list, part) end end end local bot_list = {} if workspace:FindFirstChild("Bots") then for _, b in pairs(workspace.Bots:GetChildren()) do local part = get_target_part(b) if part then table.insert(bot_list, part) end end end if #player_list == 0 and #bot_list > 0 then return bot_list[math.random(1,#bot_list)] elseif #bot_list == 0 and #player_list > 0 then return player_list[math.random(1,#player_list)] elseif #player_list > 0 and #bot_list > 0 then if math.random() < 0.7 then return player_list[math.random(1,#player_list)] else return bot_list[math.random(1,#bot_list)] end end return nil end while _G.drone_loop do local label = lp:WaitForChild("PlayerGui"):WaitForChild("Main"):WaitForChild("ImageLabel"):WaitForChild("droneText") while label.Text=="0/2" do task.wait(0.1) end pcall(function() create:InvokeServer(drone_code) end) task.wait(0.2) local part repeat part=nearest() task.wait(poll) until part print("Controlling:", part:GetFullName()) local hb = run.Heartbeat:Connect(function() if part and part.Parent then part.CFrame = hrp.CFrame + Vector3.new(0, hover, 0) else hb:Disconnect() end end) task.wait(wait_h) hb:Disconnect() local target = weighted_target() if target then part.CFrame = target.CFrame + Vector3.new(0, hover, 0) end task.wait(1) pcall(function() explode:FireServer() end) end