local Players = game:GetService("Players") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "AnimationLogger" ScreenGui.Parent = PlayerGui local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0.3, 0, 0.6, 0) MainFrame.Position = UDim2.new(0.05, 0, 0.2, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0.08, 0) Title.Text = "ANIMATION LOGGER" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.BackgroundColor3 = Color3.fromRGB(50, 50, 50) Title.Font = Enum.Font.GothamBold Title.TextSize = 16 Title.Parent = MainFrame local RefreshButton = Instance.new("TextButton") RefreshButton.Size = UDim2.new(0.15, 0, 0.08, 0) RefreshButton.Position = UDim2.new(0.85, 0, 0, 0) RefreshButton.Text = "🔃" RefreshButton.TextSize = 18 RefreshButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) RefreshButton.Parent = MainFrame local ScrollFrame = Instance.new("ScrollingFrame") ScrollFrame.Size = UDim2.new(1, 0, 0.92, 0) ScrollFrame.Position = UDim2.new(0, 0, 0.08, 0) ScrollFrame.BackgroundTransparency = 1 ScrollFrame.ScrollBarThickness = 6 ScrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y ScrollFrame.Parent = MainFrame local UIListLayout = Instance.new("UIListLayout") UIListLayout.Padding = UDim.new(0, 5) UIListLayout.Parent = ScrollFrame local AnimationTracker = { ActiveAnimations = {}, TrackedAnimations = {} } function AnimationTracker:ScanForAnimations() self.TrackedAnimations = {} for _, humanoid in ipairs(workspace:GetDescendants()) do if humanoid:IsA("Humanoid") then local animator = humanoid:FindFirstChildOfClass("Animator") if animator then for _, track in ipairs(animator:GetPlayingAnimationTracks()) do table.insert(self.TrackedAnimations, { Animation = track.Animation, Track = track }) end end end end for _, animController in ipairs(workspace:GetDescendants()) do if animController:IsA("AnimationController") then local animator = animController:FindFirstChildOfClass("Animator") if animator then for _, track in ipairs(animator:GetPlayingAnimationTracks()) do table.insert(self.TrackedAnimations, { Animation = track.Animation, Track = track }) end end end end for _, animation in ipairs(game:GetDescendants()) do if animation:IsA("Animation") then local alreadyTracked = false for _, tracked in ipairs(self.TrackedAnimations) do if tracked.Animation == animation then alreadyTracked = true break end end if not alreadyTracked then table.insert(self.TrackedAnimations, { Animation = animation, Track = nil }) end end end return self.TrackedAnimations end function AnimationTracker:PlayAnimation(animationData) local humanoid = Player.Character and Player.Character:FindFirstChildOfClass("Humanoid") if not humanoid then return false end local animator = humanoid:FindFirstChildOfClass("Animator") if not animator then return false end if self.ActiveAnimations[animationData.Animation.AnimationId] then self.ActiveAnimations[animationData.Animation.AnimationId]:Stop() self.ActiveAnimations[animationData.Animation.AnimationId] = nil return false else local newTrack = animator:LoadAnimation(animationData.Animation) newTrack:Play() self.ActiveAnimations[animationData.Animation.AnimationId] = newTrack return true end end local function createAnimationButton(animationData) local buttonFrame = Instance.new("Frame") buttonFrame.Size = UDim2.new(0.95, 0, 0, 60) buttonFrame.Position = UDim2.new(0.025, 0, 0, 0) buttonFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) buttonFrame.BorderSizePixel = 0 buttonFrame.Parent = ScrollFrame local nameLabel = Instance.new("TextLabel") nameLabel.Size = UDim2.new(0.7, 0, 0.5, 0) nameLabel.Position = UDim2.new(0, 10, 0, 5) nameLabel.Text = animationData.Animation.Name ~= "" and animationData.Animation.Name or "Unnamed Animation" nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255) nameLabel.TextXAlignment = Enum.TextXAlignment.Left nameLabel.BackgroundTransparency = 1 nameLabel.Font = Enum.Font.Gotham nameLabel.TextSize = 14 nameLabel.Parent = buttonFrame local idLabel = Instance.new("TextLabel") idLabel.Size = UDim2.new(0.7, 0, 0.5, 0) idLabel.Position = UDim2.new(0, 10, 0.5, -5) idLabel.Text = "ID: " .. string.sub(animationData.Animation.AnimationId, 1, 20) .. "..." idLabel.TextColor3 = Color3.fromRGB(180, 180, 180) idLabel.TextXAlignment = Enum.TextXAlignment.Left idLabel.TextSize = 12 idLabel.BackgroundTransparency = 1 idLabel.Font = Enum.Font.Gotham idLabel.Parent = buttonFrame local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(0.2, 0, 0.6, 0) toggleButton.Position = UDim2.new(0.75, 0, 0.2, 0) toggleButton.Text = "OFF" toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) toggleButton.Font = Enum.Font.GothamBold toggleButton.TextSize = 14 toggleButton.Parent = buttonFrame local function updateButtonState(isPlaying) if isPlaying then toggleButton.Text = "ON" toggleButton.BackgroundColor3 = Color3.fromRGB(80, 200, 80) buttonFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 80) else toggleButton.Text = "OFF" toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) buttonFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) end end toggleButton.MouseButton1Click:Connect(function() local isPlaying = AnimationTracker:PlayAnimation(animationData) updateButtonState(isPlaying) end) if AnimationTracker.ActiveAnimations[animationData.Animation.AnimationId] then updateButtonState(true) end end local function updateAnimationList() for _, child in ipairs(ScrollFrame:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end local animations = AnimationTracker:ScanForAnimations() for _, animData in ipairs(animations) do createAnimationButton(animData) end end updateAnimationList() RefreshButton.MouseButton1Click:Connect(updateAnimationList) Player.CharacterAdded:Connect(function(character) for _, track in pairs(AnimationTracker.ActiveAnimations) do track:Stop() end AnimationTracker.ActiveAnimations = {} for _, child in ipairs(ScrollFrame:GetChildren()) do if child:IsA("Frame") then local toggleButton = child:FindFirstChildOfClass("TextButton") if toggleButton then toggleButton.Text = "OFF" toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) child.BackgroundColor3 = Color3.fromRGB(40, 40, 40) end end end end)