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)
