So I have a localscript inside of a tool, the tool goes to the players backpack when they join the game.
This is what is inside of the localscript that is inside of the tool:
local Tool = nil
local animScript = nil
local animId = 6963606877
script.Parent.Equipped:Connect(function()
Tool = script.Parent
animScript = Tool.Parent:WaitForChild("Animate")
local ToolNoneAnim = animScript:WaitForChild("toolnone"):WaitForChild("ToolNoneAnim")
ToolNoneAnim.AnimationId = "rbxassetid://".. animId
end)
script.Parent.Unequipped:Connect(function()
local ToolNoneAnim = animScript:WaitForChild("toolnone"):WaitForChild("ToolNoneAnim")
ToolNoneAnim.AnimationId = "http://www.roblox.com/asset/?id=507768375"
end)
What I’m hoping to achieve with this is when the player equips the tool, it plays the idle animation for this tool, however nothing happens and I even checked the idle animation in the character that it should be changing and it is changing just nothing is happening to the player.
Any help would be greatly appreciated
local tool = script.Parent
local animId = 6963606877
local anim = nil
tool.Equipped:Connect(function()
local character = tool.Parent -- When the tool is equipped, it moves to the player's model.
local humanoid = character:WaitForChild("Humanoid")
local animation = Instance.new("Animation")
anim.AnimationId = "rbxassetid://".. animId
anim = humanoid:LoadAnimation(animation)
anim:Play()
end)
tool.Unequipped:Connect(function()
if anim then
anim:Stop()
anim = nil
end
end)
I thought setting the animation to the characters toolnone animation automatically plays it? And I’ve already tried making the animation play when the character equips the tool using an entirely difference script and that didn’t work, here’s that script.
local player = game.Players.LocalPlayer
player.CharacterAdded:Wait()
local char = player.Character
local anim = script.Parent:WaitForChild("idleAnim")
local animLoad
local hum
script.Parent.Equipped:Connect(function()
hum = char:WaitForChild("Humanoid")
animLoad = hum:LoadAnimation(anim)
anim.Looped = true
animLoad:Play()
end)
script.Parent.Unequipped:Connect(function()
animLoad:Stop()
end)
This did not work whatsoever, that’s why I decided to do it this way. And I’m pretty sure toolnone plays on its own using roblox’s scripts.
Well, in that script you are using :WaitForChild() on something that has already loaded, in this case it is this line:
hum = char:WaitForChild("Humanoid")
Since the humanoid has already loaded into the game this will cause the script to yield infinitely and stop any further code from running. Instead, change it to
hum = char:FindFirstChild("Humanoid")
(If you use your previous code and change what I suggested it should work)