Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Animation track is not stopping?

Asked by 7 years ago

Hello I have this pretty simple carousel style GUI with 2 buttons which can be used to navigate though a number of animations. Animations are played as soon as the buttons are pressed, Additionally there is another button which resets or stops the current animation using the currentTrack variable.

This is the script I have so far, and it works in some cases but in most cases like when I try to spam click or abuse with it, it gets lost and it doesnt stop the animation.

local Animations = game:GetService("ReplicatedFirst"):FindFirstChild("Animations", true):GetChildren()
local currentIndex = script.Parent:FindFirstChild("currentIndex")
local currentAnim = script.Parent:FindFirstChild("currentAnim")
local currentTrack
local After = script.Parent:FindFirstChild("After")
local Before = script.Parent:FindFirstChild("Before")
local Reset = script.Parent
while not game:GetService("Players").LocalPlayer do game:GetService("Players").Changed:Wait() end
local Player = game:GetService("Players").LocalPlayer

while not Player.Character do Player.CharacterAdded:Wait() end
local Char = Player.Character


while not Char:FindFirstChildOfClass'Humanoid' do Char.ChildAdded:Wait() end
local Hum = Char.Humanoid

local debounce = false

After.MouseButton1Click:Connect(function()
    if not debounce then
        debounce = true
        if Animations[currentIndex.Value + 1] then
            currentIndex.Value = currentIndex.Value + 1
            local animId = Animations[currentIndex.Value]
            if not animId then
                print("OMG NOOOO")
            end
            if animId then
                local Anim = Char:FindFirstChild("DanceAnim")
                if not Anim then
                    Anim = Instance.new("Animation", Char)
                    Anim.Name = "DanceAnim"
                end
                Anim.AnimationId = "rbxassetid://"..animId.Value
                currentTrack = Hum:LoadAnimation(Anim)
                currentTrack:Play()
                currentAnim.Value = animId.Name
            end
        end
        debounce = false
    end
end)


Before.MouseButton1Click:Connect(function()
    if not debounce then
        debounce = true
        if Animations[currentIndex.Value - 1] then
            currentIndex.Value = currentIndex.Value - 1
            local animId = Animations[currentIndex.Value]
            if not animId then
                print("OMG NOOOO")
            end
            if animId then
                local Anim = Char:FindFirstChild("DanceAnim")
                if not Anim then
                    Anim = Instance.new("Animation", Char)
                    Anim.Name = "DanceAnim"
                end
                Anim.AnimationId = "rbxassetid://"..animId.Value
                currentTrack = Hum:LoadAnimation(Anim)
                currentTrack:Play()
                currentAnim.Value = animId.Name
            end
        end
        debounce = false
    end
end)

Reset.MouseButton1Click:Connect(function()
    if currentTrack ~= nil then
        currentTrack:Stop()
        currentTrack = nil
        currentAnim.Value = ''
        currentIndex.Value = 0
    end
end)

Answer this question