Problems with motor6d welds not replicating animations to server?

Howdy,

So I’ve been doing a bit of work on animations and tooling and such, and I’m attempting to play animations using Motor6D welds and for some reason, the animation plays on clientside, but when other players use said animation it doesn’t allow the arm that the tool is welded to move (see examples below)

From other players
Client Side

Weld script is as follows:

Tool.Equipped:Connect(function()
local Player = Players:GetPlayerFromCharacter(Tool.Parent)
local RightHand = Player.Character.RightHand
            	
local Weld = RightHand:WaitForChild("RightGrip")
            	
if (Weld) then
         local Motor6D = Instance.new("Motor6D")
         Motor6D.Name = "HandleMotor6D"
         Motor6D.Part0 = RightHand
         Motor6D.Part1 = Handle
         Motor6D.C0 = CFrame.new(1.1920929e-07, -0.5009287, -6.86244753e-18, 1, 0, 0, 0, 1, 0, 0, 0, 1)
         Motor6D.Parent = RightHand
         Weld:Destroy()
         end
end)

Any help would be appreciated.

(p.s all animations are set on action priority)

1 Like

RemoteEvents and RemoteFunctions.
Everything that happens on the client (LocalScripts), stays on the client’s side, unless you call a RemoteEvent or Function to do this for all other clients as well.

Alright, so didn’t realise but I did need that, but thanks

Have crossed that bridge, but I’m now having troubles with the animations looping on server side, I’ve set the AnimationTrack.Looped = true as seen in the below script; (Only plays the Idle Animation once and then stops)

event.OnServerEvent:Connect(function(player, Type)
		local Humanoid = workspace:WaitForChild(player.Name):WaitForChild("Humanoid")
		local animation = Tool:WaitForChild("Animations")
		local Idle = Humanoid:LoadAnimation(animation:WaitForChild("Idle"))
		Idle.Looped = true
		Idle.Priority = Enum.AnimationPriority.Action
		local Swing = Humanoid:LoadAnimation(animation:WaitForChild("Swing"))
		Swing.Priority = Enum.AnimationPriority.Action
		
		if Type == "Swing" then
			Idle:Stop()
			Swing:Play()
			wait(Swing.Length)
			Swing:Stop()
			Idle:Play()
		elseif Type == "StopIdle" then
			Idle:Stop()
		elseif Type == "Idle" then
			Idle:Play()
		elseif Type == "StopSwing" then
			Swing:Stop()
		end
	end)

Any help would be appreciated.

Try setting the priority to action in the editor itself as well as any other property. I’ve seen another example of this problem where the animation just cuts of midway in favor of the default action level animations.