My script starts off with 12% Activity rate according to the Script Performance screen, but it soon drops down to 3%. Then, as I approach a target, to builds up to nearly 7%. Any way I can optimize the script?
local player = game.Players.LocalPlayer
while game.Workspace:FindFirstChild(player.Name) == nil do
wait(0.1)
end
local cam = workspace.CurrentCamera
for _, i in pairs(workspace.Targets:GetChildren()) do
if i.Name == "Target" then
if i.ForAsset.Value == true then
i.ReleaseSensitivity.Value = 14
else
i.ReleaseSensitivity.Value = 7.5
end
i.Buffer.Value = 71
local Buffer = i.Buffer.Value
local pos = i.Position
local oof = game:GetService("RunService").Heartbeat:Connect(function()
if game.Workspace:FindFirstChild(player.Name) ~= nil and player:DistanceFromCharacter(pos) < Buffer + 18 then
local Distance = player:DistanceFromCharacter(pos)
if Distance < Buffer and i.Wait.Value == false and cam:WorldToScreenPoint(pos).Z > 0 then
if i.Name ~= "HA" then
i.Name = "Beepbeep"
end
if i.Name == "Beepbeep" and workspace.Targets:FindFirstChild("HA") == nil then
script.LockOn:Play()
i.Name = "HA"
end
else
i.Name = "Target"
end
end
end)
end
end
By the way, there are around 70 parts named "Target", so it keeps up with those 70 targets actively.
So what the script does is check for each part named "Target", and then checks to see if you're 71 studs away from it. If you are, it changes the part's name twice (the first one is part of a queue system thought up by yours truly). Then, once you're out of range, it changes the name back to "Target".
