This is my server side script. When I shoot the weapon of choice most of the bullets are laggy. if clicking rapidly, bullets fly at set velocity. My question is, am I able to fix this. Also in the firefunction() how would i code in a player holding the mouse, coding that client side and bringing a boolean over to verify if the player is holding the mouse or not simply doesn't work.
local itemstore = require(game:GetService("ServerScriptService"):WaitForChild("Modules"):WaitForChild("ItemDatabase")) local RE = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("GunFiredEvent") local TS = game:GetService("TweenService") local goal = {} local guntype = nil local dmg = nil local firerate = nil local magazine = nil local canfire = nil local velocity = nil RE.OnServerEvent:Connect(function(player, tool, weapon, firing, mousepos) for i,v in pairs(itemstore.Weapons) do print(tostring(i)) if i == weapon then for x,y in pairs(v) do -- gather item statistics if x == "guntype" then guntype = y print("Weapon: "..guntype) end if x == "dmg" then dmg = y print("Damage: "..dmg) end if x == "firerate" then firerate = y/60 print("Firerate (in rounds per second): "..firerate) end if x == "velocity" then velocity = y print("Velocity (in studs per second): "..velocity) end end end end firefunction(player, tool, weapon, firing, mousepos) end) function firefunction(player, tool, weapon, firing, mousepos) --if firing then -- [[Bullethole generation]] -- local ray = Ray() -- print(player.Name.." has fired weapon: "..weapon) -- local x = Instance.new("Part") -- x.Position = mouse -- x.Parent = workspace if firing then --add support for automatic weaponry firing = false local tip = tool:FindFirstChild("Tip") local origin = tip.Position local direction = (mousepos - origin).Unit local result = workspace:Raycast(origin, direction*100) local intersection = result and result.Position or origin + direction*300 local distance = (origin - intersection).Magnitude local bullet = game:GetService("ServerStorage"):WaitForChild("Bullet"):Clone() bullet.CFrame = CFrame.new(origin, intersection)*CFrame.new(0,0,-distance) bullet.Position = tip.Position bullet.Size = Vector3.new(.05,.05,.5) bullet.Anchored = true bullet.Parent = workspace bullet.Touched:Connect(function(hit) if hit.Parent.Name ~= weapon and hit.Parent.Name ~= player and hit.Parent.Parent.Name ~= player then local hum = hit.Parent:FindFirstChild("Humanoid") if hum ~= nil and hum.Parent.Name ~= player then hum:TakeDamage(dmg) end end end) if mousepos ~= nil then goal.Position = mousepos else goal.Position = origin + direction*300 end local bullettime = distance/velocity local tinfo = TweenInfo.new(bullettime) local tween = TS:Create(bullet, tinfo, goal) tween:Play() game:GetService("Debris"):AddItem(bullet, bullettime) firing = true end end