Using welds and constraints locally to make a fake Tool equipping animation (Since local animations don't work)

i just read this worth a shot: “If the animation object is instanced locally the animation will only replicate locally, if the animation is instanced by the server but then the animation track is played locally the animation will still replicate to the server.”

so what that means is you should create the animation object by instance.new() in ur local script WORTH A SHOT

1 Like

These is what I have:

repeat task.wait() until game.Workspace:FindFirstChild(game.Players.LocalPlayer.Name)
local toolclone = game.ReplicatedStorage.Tool:Clone()
--toolclone.Parent = game.Players.LocalPlayer.Character
--game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"):FindFirstChildWhichIsA("Animator"):Destroy()
local animator = Instance.new("Animator", game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"))
print("Loaded")
task.wait(5)
print("Equipping")
game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"):EquipTool(toolclone)

Same outcome… Though this gives me an idea…

forget the whole new animator thing what u need to do is instantiate the entire animation objects in ur local script l

you do have each animation stored in sumn like this right:
image

Well I don’t have any animations. Its just the default animations. So like the Default roblox tool equip animation, and the default player animation pack for walking etc.

1 Like

I just tried connecting a remote event and add a new animator locally and on the server → and the behavior is connected to the most recently added animator (Which is nice to know, but doesn’t fix the issue)

i recommend that u ditch the default animation thing for ur tool and as a whole probably the default tool system cause its very limiting i dont think a lot of games use it anymore unless they are really simple it makes custom stuff like this harder you dont want the server to create anything you should look into player animations and then run animations directly on the player fully on the client side that means instantiating the animation instances on the client side and running them on the client side im not sure if it will work because this is a veryyyy rare case it seems but thats my best advice

2 Likes

Ok give me a minute to make a ‘basic’ equipping animation for this test and I’ll let you know my results

@S0MBRX Results are in… They aren’t awesome?..

  1. Result (Without adding a server Animator, Without deleting Old Server Animation & Without adding a server Animator, With deleting Old Server Animation): Same before, Walking Animations break on server, everything else works perfectly on client

  2. Result (With adding a server Animator, Without deleting Old Server Animation & With adding a server Animator, With deleting Old Server Animation): Custom Equip animation Breaks As soon as the server one is added, walking works fine on server, animation for equipping breaks

local script to “add a custom equip Animation” (Removed default Tool Equipping in the Animate script roblox adds):

repeat task.wait() until game.Workspace:FindFirstChild(game.Players.LocalPlayer.Name)
local toolclone = game.ReplicatedStorage.Tool:Clone()
--toolclone.Parent = game.Players.LocalPlayer.Character
--game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"):FindFirstChildWhichIsA("Animator"):Destroy()

local animator = Instance.new("Animator", game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"))
local animation = animator:LoadAnimation(game.ReplicatedStorage.EquipAnimation)
animation.Looped = true

print("Loaded")
task.wait(5)
print("Equipping")
animation:Play()
toolclone.Parent = game.Players.LocalPlayer.Character
game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid"):EquipTool(toolclone)
--game.ReplicatedStorage.MakeANewAnimatior:FireServer()


Is there anyway to make some client animations and some server ones at the same time. Or is this a feature Ima need to request in something like #feature-requests (Which this is a side note, what are the requirements to post in Bug reports and Feature requests, I can’t find that anywhere).

I think you are slightly misinformed:

All animations played on the character on the client are replicated to other clients.
All animations played on non-character objects on the client are not replicated to other clients.

All animations played on the character on the server are replicated to other clients.
All animations played on non-character objects on the server are replicated to other clients.

You should play animations on the client, as there is less delay for starting the animation.

As for the lantern, this needs to be cloned on the server so that it can be seen by all clients.

Huh? I am… There seems be a confusion so let me clear it up. I don’t want them to see the objects they have in their hand.

This is not what I want. I want their hand down in the resting position for other players. That is what I want and trying to make

So to clarify, you don’t want the animation or the lantern to be replicated to other clients?

Yep! If you look above there is some things we have tired and found a part solution, but it breaks the walking animation (and all other movement animations) people have on the server (Right Here )

This is pretty difficult, since otherwise you’re going to need to create a whole new animation engine to manipulate just that sole animation instead of all other animations.
Animation Auto-Replication is the forced default setting because beginner programmers do not want to have to manually replicate animations, which can be very difficult.
You may wish to consider work arounds, such as having the lantern replicated but not illuminate the area (delete light source).

1 Like

Well its not just that. Like for the latern I can, but its a big deal and apart of my game as the reason in this post above quoted here:

I guess let me rephrase my post if it is truely not at all possible:

Is there a way to use welds and constraints locally and position the tool correctly to make a fake Tool equipping animation?

1 Like

That’s rather complicated and doesn’t sound to be worth it… What’s the exact reasoning you don’t want the lantern to be replicated to anyone else?

If you still want to do it, you should use RunService.Stepped and set the Motor6D.Transform of the Motor6D that holds the arm. To be exact, for an R15 character you need to set the Transform property to CFrame.Angles(math.pi / 2, 0, 0) every time RunService.Stepped fires to achieve what I presume you want.

1 Like

Well its all tools. In this posts above, we talked about the tool equipping animation, and the default roblox equipping animation. Animations are serverwide so When using :EquipTool() it was playing the hand animation, Even though there was no tool to go with it (Because the tool is on the client).

In this case I picked the latern but there is other reasons in this post quoted below:

How does the tool model work? Is it a client-sided Handle? If not, you can turn off “RequiresHandle” to stop the animation from playing.

Yes, It has a handle. The goal wasn’t to remove the animation, but to rather remove it on the server, and keep it clientside. (I have removed it functions in the Animate script roblox has) Since that really isn’t possible without making my own animation engine (which Is not happening) I need a way to replicate that effect for tools.