Universal FE Animation Logger
Key RequiredUniversal

Universal FE Animation Logger

Universal Scriptfloppa_scripterfloppa_scripter 8.2K views 82 executesUpdated May 23, 2025
2.5/ 5(2 votes)
1150% Positive
Lua Script•219 lines (6786 chars)
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)

Features & Information

This Script Checks for every animation in game and you can play it. may be useless but its cool

Community Comments (3)

ReactorCoreDevReactorCoreDevMay 24, 2025

the developer who didnt publish it:

Drawn_MeowlDrawn_MeowlJan 18, 2026

dude its cool-

febyp*geeceefebyp*geeceeOct 5, 2026

ai generated

More Scripts for Universal Scripts