To not bore you people with the details, I'm working on a gun system with a server sided script in server-script-service. The issue is that traces occasionally just refuse to appear. The way the gun system works is that there is a single remote-event in replicated-storage, that event is fired by all the guns when being shot. Also, bare with me because I'm somewhat new.
Also, keep in mind that the server-sided script in server-script-service handles the shooting, damage handling and playing audio when reloading, which is why you see the "If not IsReloading then" line is there.
So, basically, my question is what are some ways of optimizing the gun system.
Example of the remote:
ShootRemote.OnServerEvent:Connect(function(player, tool, traceColor, mousepos, position)
if not IsReloading then
local ShootSound = tool.Handle:WaitForChild("Shoot")
local MuzzleFlash = tool.Hole:WaitForChild("MuzzleEffect")
local Hole = tool:WaitForChild("Hole")
ShootSound:Play()
MuzzleFlash.Enabled = true
local trace = Instance.new("Part")
trace.Anchored = true
trace.CanCollide = false
trace.Transparency = 0.8
trace.BrickColor = traceColor
trace.Material = Enum.Material.Neon
local distance = (Hole.CFrame.p - position).magnitude
trace.Size = Vector3.new(0, 0, distance - 2)
trace.CFrame = CFrame.new(Hole.CFrame.p, mousepos) * CFrame.new(0, 0, - distance/2)
trace.Parent = workspace
wait(0.05)
MuzzleFlash.Enabled = false
end
end)
