This collection of scripts makes the correct bodyparts visible, plays an animation, then fires a raycast and slows down whatever got hit. When I run it, it works fine. But when other people in my team create session run it, the animations are broken and the raycast doesn't fire. Why could this be happening?

Localscript to play animation and fire server event:

local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:wait()
local humanoid = script.Parent:FindFirstChild("Humanoid")
local ammo = script:WaitForChild("Ammo")

local barrel = humanoid.Parent.AnimPistol:WaitForChild("Barrel")
local grip = humanoid.Parent.AnimPistol.GAssembly:WaitForChild("Grip")
local trigger = humanoid.Parent.AnimPistol.GAssembly:WaitForChild("Trigger")
local gun = humanoid.parent.AnimPistol
local arm = humanoid.Parent:WaitForChild("Right Arm")

barrel.Transparency = 1
grip.Transparency = 1
trigger.Transparency = 1

local origin = script.Parent.AnimPistol.Barrel
local bFolder = game.Workspace.Bullets
local bulletFiredEvent = game.ReplicatedStorage.bulletFired

barrel.PointLight.Enabled = false
local canShoot = false
local coolDown = true
local keyBind = "f"

local mouse = player:GetMouse()

mouse.TargetFilter = bFolder

mouse.KeyDown:Connect(function(key)
	
	if key == keyBind then
		
		if ammo.Value ~= 0 and coolDown == true then
			
			canShoot = true
			
		end
		
		if canShoot == true then
			
			canShoot = false
			coolDown = false
			
			local animation = humanoid:LoadAnimation(script.Animation)
			animation:Play()
			
			local function antiTransGun(part)
				
				if part and part:IsA("BasePart") and (part == barrel or part == grip or part == trigger) then 

					part.LocalTransparencyModifier = part.Transparency
					part.Changed:connect(function (property)    

						part.LocalTransparencyModifier = part.Transparency

					end)

				end
				
			end
			
			for _,v in pairs(gun:GetChildren()) do

				antiTransGun(v)

			end
			
			
			arm.LocalTransparencyModifier = 0
			barrel.Transparency = 0
			grip.Transparency = 0
			trigger.Transparency = 0
			
			animation:GetMarkerReachedSignal("Cock"):Connect(function()
				
				--play cocking sound
				
			end)
			
			animation:GetMarkerReachedSignal("GunShot"):Connect(function()
				
				barrel.PointLight.Enabled = true
				barrel.Attachment.Flash.Enabled = true
				barrel.Attachment.Smoke.Enabled = true
				
				local mousePosition = mouse.Hit.p
				local originPosition = origin.Position

				bulletFiredEvent:FireServer(mousePosition, originPosition)
				
				for i = 0, 3 do
					
					local zoom = math.random(70, 90)
					workspace.Camera.FieldOfView = zoom
					wait()
					workspace.Camera.FieldOfView = 70
					
				end
				
				--play shoot sound
				
			end)
			
			animation:GetMarkerReachedSignal("UnFlash"):Connect(function()
				
				barrel.Attachment.Flash.Enabled = false
				barrel.PointLight.Enabled = false
				
				
			end)
			
			animation.Stopped:Connect(function()
				
				barrel.Attachment.Smoke.Enabled = false
				arm.LocalTransparencyModifier = 1
				barrel.Transparency = 1
				grip.Transparency = 1
				trigger.Transparency = 1
				
			end)
			
			ammo.Value -= 1
			
			wait(5)
			coolDown = true
			
		end
		
	end
	
end)

Regular script that handles the raycast

local bulletFiredEvent = game.ReplicatedStorage.bulletFired
local bulletFolder = game.Workspace.Bullets
local debris = game:GetService("Debris")

local range = 999

local function createBeam(origin, direction)
	
	local midpoint = (origin + direction / 2)
	
	local part = Instance.new("Part")
	part.Parent = bulletFolder
	part.Anchored = true
	part.CanCollide = false
	
	part.Material = Enum.Material.Plastic
	part.BrickColor = BrickColor.new("Black")
	
	part.CFrame = CFrame.new(midpoint, origin)
	part.Size = Vector3.new(.075, .075, direction.magnitude)
	
	for i = 0.75, 1, .01 do

		part.Transparency = i
		wait(.1)

	end
	
	debris:AddItem(part, 3)
	
end

bulletFiredEvent.OnServerEvent:Connect(function(player, mousePos, originPos)
	
	local direction = (mousePos - originPos).Unit * range
	
	local result = workspace:Raycast(originPos, direction)
	
	if result then 
		
		local character = result.Instance.Parent
		local humanoid = character:FindFirstChild("Humanoid")
		
		if humanoid and humanoid ~= player.Character.Humanoid then
			
			humanoid.WalkSpeed = 2
			wait(5)
			humanoid.WalkSpeed = 16
			
		end
		
	end
	
	createBeam(originPos, direction)
	
end)

Note that the animation is not created by the group, but rather by myself. Uploading it to the group makes it wonky. I'm trying to figure out why I'm the only person that can get it to work.

1 comment

0

Commit the script