local ReplicatedStorage = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Framework = ReplicatedStorage:WaitForChild("Framework") local Modules = Framework:WaitForChild("Modules") local BulletSimulator = require(Modules:WaitForChild("BulletSimulator")) local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera local FOV = 200 local AimPart = "Head" local Teamcheck = true local currentTarget = nil local Tracer = Drawing.new("Line") Tracer.Visible = false Tracer.Color = Color3.fromRGB(255, 255, 255) Tracer.Thickness = 1.5 Tracer.Transparency = 1 local function getClosestTarget() local closest = nil local closestDist = FOV local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then if Teamcheck then local localTeam = LocalPlayer:GetAttribute("Team") local playerTeam = player:GetAttribute("Team") if localTeam ~= nil and playerTeam ~= nil and localTeam == playerTeam then continue end end local humanoid = player.Character:FindFirstChild("Humanoid") if humanoid and humanoid.Health > 0 then local part = player.Character:FindFirstChild(AimPart) or player.Character:FindFirstChild("HumanoidRootPart") if part then local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position) if onScreen then local screenVector = Vector2.new(screenPos.X, screenPos.Y) local dist = (screenVector - center).Magnitude if dist < closestDist then closestDist = dist closest = { player = player, position = part.Position, screenPos = screenVector } end end end end end end return closest end RunService.RenderStepped:Connect(function() currentTarget = getClosestTarget() if currentTarget and currentTarget.screenPos then Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) Tracer.To = currentTarget.screenPos Tracer.Visible = true else Tracer.Visible = false end end) local old = BulletSimulator.Simulate BulletSimulator.Simulate = function(_, muzzleCF, bullet, bulletPool, initialSpeed, bulletType, ...) if currentTarget then local direction = (currentTarget.position - muzzleCF.Position).Unit muzzleCF = CFrame.lookAt(muzzleCF.Position, muzzleCF.Position + direction) initialSpeed = 25000 end return old(_, muzzleCF, bullet, bulletPool, initialSpeed, bulletType, ...) end