This script fires everytime the weapon is shot. It works perfectly fine in solo mode but while in a local server, it doesn't. What should I do?
local RepStorage = game:GetService("ReplicatedStorage")
local Remote = RepStorage:WaitForChild("Remote")
local LocalRemote = Remote:WaitForChild("GunRaycast")
LocalRemote.OnServerEvent:connect(function(player, BaseDamage, RayLength, Tool, BarrlePos, aim, raycast)
local function tagHumanoid(humanoid)
local plr=game.Players:playerFromCharacter(Tool.Parent)
if plr~=nil then
local tag=Instance.new("ObjectValue")
tag.Value=plr
tag.Name="creator"
tag.Parent=humanoid
delay(2,function()
if tag~=nil then
tag.Parent=nil
end
end)
end
end
local function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
local Bullet=Instance.new("Part")
Bullet.Name="Bullet"
Bullet.BrickColor=BrickColor.new("Bright orange")
Bullet.Anchored=true
Bullet.CanCollide=false
Bullet.Locked=true
Bullet.Size=Vector3.new(1,1,1)
Bullet.Transparency=0
Bullet.Material = "Neon"
Bullet.formFactor=0
Bullet.TopSurface=0
Bullet.BottomSurface=0
local mesh=Instance.new("SpecialMesh")
mesh.Parent=Bullet
mesh.MeshType="Brick"
mesh.Name="Mesh"
mesh.Scale=Vector3.new(1,1,1)
local bullet = Bullet:Clone()
bullet.BrickColor = BrickColor.Black()
bullet.Name = "Raycast"
local totalDist=0
local Lengthdist=-RayLength/.5
local startpoint=Tool.Handle.CFrame*BarrlePos
local dir=(aim)-startpoint
dir=computeDirection(dir)
local cfrm=CFrame.new(startpoint, dir+startpoint)
local hit,pos,normal,time=raycast(game.Workspace, startpoint, cfrm*Vector3.new(0,0,Lengthdist)-startpoint, function(brick)
if brick.Name=="Glass" then
return true
elseif brick.Name=="Bullet" or brick.Name=="BulletTexture" then
return false
elseif brick:IsDescendantOf(Tool.Parent) then
return false
elseif brick.Name=="Handle" then
if brick.Parent:IsDescendantOf(Tool.Parent) then
return false
else
return true
end
end
return true
end)
if hit~=nil then
local humanoid=hit.Parent.Parent:FindFirstChild("Humanoid") or hit.Parent:FindFirstChild("Humanoid")
if humanoid~=nil then
local damage=math.random(BaseDamage-(BaseDamage*.1),BaseDamage+(BaseDamage*.1))
if humanoid.Health>0 then
local eplr=game.Players:playerFromCharacter(humanoid.Parent)
local plr=game.Players:playerFromCharacter(Tool.Parent)
if eplr~=nil and plr~=nil then
if eplr.TeamColor~=plr.TeamColor or eplr.Neutral or plr.Neutral then
tagHumanoid(humanoid)
humanoid:TakeDamage(damage)
end
else
tagHumanoid(humanoid)
humanoid:TakeDamage(damage)
end
end
end
local distance=(startpoint-pos).magnitude
bullet.CFrame=cfrm*CFrame.new(0,0,-distance/2)
bullet.Mesh.Scale=Vector3.new(.15,.15,distance)
else
bullet.CFrame=cfrm*CFrame.new(0,0,-RayLength/2)
bullet.Mesh.Scale=Vector3.new(.15,.15,RayLength)
end
if pos~=nil then
end
bullet.Parent = workspace
wait(0.1)
bullet:remove()
end)
