Fe Emote Player V1.3
Key RequiredUniversal

Fe Emote Player V1.3

Universal ScriptGazeGaze 56.2K views 18.7K executesUpdated Sep 7, 2025
4.6/ 5(14 votes)
13193% Positive
Lua Script•508 lines (17123 chars)
function missing(t, f, fallback)
    if type(f) == t then return f end
    return fallback 
end

cloneref = missing("function", cloneref, function(...) return ... end)

local Services = setmetatable({}, {
    __index = function(_, name)
        return cloneref(game:GetService(name))
    end
})


local Players = Services.Players
local RunService = Services.RunService
local UserInputService = Services.UserInputService
local TweenService = Services.TweenService

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

player.CharacterAdded:Connect(function(newCharacter)
    character = newCharacter
    humanoid = character:WaitForChild("Humanoid")
end)

--// Settings
local Settings = {}
Settings["Stop On Move"] = true
Settings["Fade In"]     = 0.1
Settings["Fade Out"]    = 0.1
Settings["Weight"]      = 1
Settings["Speed"]       = 1
Settings["Allow Invisible"]    = true
Settings["Time Position"] = 0


local CurrentTrack
local lastPosition = character.PrimaryPart and character.PrimaryPart.Position or Vector3.new()
local function extractIdFromInput(input)
    local num = tonumber(input)
    if num then
        return num
    end
    local assetIdMatch = string.match(input, "rbxassetid://(%d+)")
    if assetIdMatch then
        return tonumber(assetIdMatch)
    end
    local catalogMatch = string.match(input, "roblox%.com/catalog/(%d+)")
    if catalogMatch then
        return tonumber(catalogMatch)
    end
    local libraryMatch = string.match(input, "roblox%.com/library/(%d+)")
    if libraryMatch then
        return tonumber(libraryMatch)
    end
    local assetMatch = string.match(input, "roblox%.com/asset/%?id=(%d+)")
    if assetMatch then
        return tonumber(assetMatch)
    end
    return tonumber(input)
end
local function LoadTrack(id)
    if CurrentTrack then 
        CurrentTrack:Stop(0) 
    end

    local animId
local ok, result = pcall(function()
    return game:GetObjects("rbxassetid://" .. tostring(id))
end)

if ok and result and #result > 0 then
    local anim = result[1]
    if anim:IsA("Animation") then
        animId = anim.AnimationId
    else
        animId = "rbxassetid://" .. tostring(id)
    end
else
    animId = "rbxassetid://" .. tostring(id)
end

    local newAnim = Instance.new("Animation")
    newAnim.AnimationId = animId
    local newTrack = humanoid:LoadAnimation(newAnim)
newTrack.Priority = Enum.AnimationPriority.Action4

    local weight = Settings["Weight"]
if weight == 0 then
    weight = 0.001
end



newTrack:Play(Settings["Fade In"], weight, Settings["Speed"])
    
    CurrentTrack = newTrack
    CurrentTrack.TimePosition = math.clamp(Settings["Time Position"], 0, 1) * CurrentTrack.Length

    return newTrack
end
local function StopTrack()
    if CurrentTrack then
        CurrentTrack:Stop(Settings["Fade Out"])
        CurrentTrack = nil
    end
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SettingsGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = Services.CoreGui
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 340, 0, 200)
mainFrame.Position = UDim2.new(0.3, 0, 0.3, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 10)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 30)
title.BackgroundTransparency = 1
title.Text = "Emote Player"
title.Font = Enum.Font.GothamBold
title.TextSize = 16
title.TextColor3 = Color3.new(1, 1, 1)
title.Parent = mainFrame
local emoteBox = Instance.new("TextBox")
emoteBox.Size = UDim2.new(1, -20, 0, 30)
emoteBox.Position = UDim2.new(0, 10, 0, 35)
emoteBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
emoteBox.Text = ""
emoteBox.PlaceholderText = "Put Emote ID or URL Here..."
emoteBox.TextColor3 = Color3.new(1, 1, 1)
emoteBox.Font = Enum.Font.Gotham
emoteBox.TextSize = 14
emoteBox.ClearTextOnFocus = false
emoteBox.Parent = mainFrame
Instance.new("UICorner", emoteBox).CornerRadius = UDim.new(0, 6)
local buttonContainer = Instance.new("Frame")
buttonContainer.Size = UDim2.new(1, -20, 0, 30)
buttonContainer.Position = UDim2.new(0, 10, 0, 70)
buttonContainer.BackgroundTransparency = 1
buttonContainer.Parent = mainFrame
local playButton = Instance.new("TextButton")
playButton.Size = UDim2.new(0.48, 0, 1, 0)
playButton.Position = UDim2.new(0, 0, 0, 0)
playButton.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
playButton.Text = "▶ Play"
playButton.TextColor3 = Color3.new(1, 1, 1)
playButton.Font = Enum.Font.GothamBold
playButton.TextSize = 14
playButton.Parent = buttonContainer
Instance.new("UICorner", playButton).CornerRadius = UDim.new(0, 6)
local stopButton = Instance.new("TextButton")
stopButton.Size = UDim2.new(0.48, 0, 1, 0)
stopButton.Position = UDim2.new(0.52, 0, 0, 0)
stopButton.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
stopButton.Text = "■ Stop"
stopButton.TextColor3 = Color3.new(1, 1, 1)
stopButton.Font = Enum.Font.GothamBold
stopButton.TextSize = 14
stopButton.Parent = buttonContainer
Instance.new("UICorner", stopButton).CornerRadius = UDim.new(0, 6)

playButton.MouseButton1Click:Connect(function()
    local input = emoteBox.Text
    if input and input ~= "" then
        local id = extractIdFromInput(input)
        if id then
            CurrentTrack = LoadTrack(id)
        else
            warn("Invalid emote ID or URL: " .. input)
        end
    end
end)

stopButton.MouseButton1Click:Connect(function()
    StopTrack()
end)


local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, -20, 1, -120)
scrollFrame.Position = UDim2.new(0, 10, 0, 110)
scrollFrame.BackgroundTransparency = 1
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.ScrollBarThickness = 6
scrollFrame.Parent = mainFrame


RunService.RenderStepped:Connect(function()
    if character.PrimaryPart then
        if Settings["Stop On Move"] and CurrentTrack and CurrentTrack.IsPlaying then
            local moved = (character.PrimaryPart.Position - lastPosition).Magnitude > 0.1
            local jumped = humanoid and humanoid:GetState() == Enum.HumanoidStateType.Jumping
            
            if moved or jumped then
                CurrentTrack:Stop(Settings["Fade Out"])
                CurrentTrack = nil
            end
        end
        lastPosition = character.PrimaryPart.Position
    end
end)

local function lockX()
    scrollFrame.CanvasPosition = Vector2.new(0, scrollFrame.CanvasPosition.Y)
end

scrollFrame:GetPropertyChangedSignal("CanvasPosition"):Connect(lockX)

local listLayout = Instance.new("UIListLayout", scrollFrame)
listLayout.Padding = UDim.new(0, 6)
listLayout.FillDirection = Enum.FillDirection.Vertical
listLayout.SortOrder = Enum.SortOrder.LayoutOrder

listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y + 10)
end)

local function createSlider(name, min, max, default)
    Settings[name] = default or min

    local container = Instance.new("Frame")
    container.Size = UDim2.new(1, 0, 0, 65)
    container.BackgroundTransparency = 1
    container.Parent = scrollFrame

    local bg = Instance.new("Frame")
    bg.Size = UDim2.new(1, 0, 1, 0)
    bg.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    bg.Parent = container
    Instance.new("UICorner", bg).CornerRadius = UDim.new(0, 8)

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.5, -10, 0, 20)
    label.Position = UDim2.new(0, 10, 0, 5)
    label.BackgroundTransparency = 1
    label.Text = string.format("%s: %.2f", name, Settings[name])
    label.TextColor3 = Color3.new(1, 1, 1)
    label.Font = Enum.Font.Gotham
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = bg

    local textBox = Instance.new("TextBox")
    textBox.Size = UDim2.new(0.5, -20, 0, 20)
    textBox.Position = UDim2.new(0.5, 10, 0, 5)
    textBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    textBox.Text = tostring(Settings[name])
    textBox.TextColor3 = Color3.new(1, 1, 1)
    textBox.Font = Enum.Font.Gotham
    textBox.TextSize = 14
    textBox.ClearTextOnFocus = false
    textBox.Parent = bg
    Instance.new("UICorner", textBox).CornerRadius = UDim.new(0, 6)

    local sliderBar = Instance.new("Frame")
    sliderBar.Size = UDim2.new(1, -40, 0, 12)
    sliderBar.Position = UDim2.new(0, 20, 0, 35)
    sliderBar.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
    sliderBar.Parent = bg
    Instance.new("UICorner", sliderBar).CornerRadius = UDim.new(0, 6)

    local sliderFill = Instance.new("Frame")
    sliderFill.Size = UDim2.new(0, 0, 1, 0)
    sliderFill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
    sliderFill.Parent = sliderBar
    Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(0, 6)

    local thumb = Instance.new("Frame")
    thumb.Size = UDim2.new(0, 20, 0, 20)
    thumb.AnchorPoint = Vector2.new(0.5, 0.5)
    thumb.Position = UDim2.new(0, 0, 0.5, 0)
    thumb.BackgroundColor3 = Color3.fromRGB(230, 230, 230)
    thumb.Parent = sliderBar
    Instance.new("UICorner", thumb).CornerRadius = UDim.new(1, 0)

    local function tweenVisual(rel)
        -- Keep the slider visual within bounds (0-1)
        local visualRel = math.clamp(rel, 0, 1)
        TweenService:Create(sliderFill, TweenInfo.new(0.15), {Size = UDim2.new(visualRel, 0, 1, 0)}):Play()
        TweenService:Create(thumb, TweenInfo.new(0.15), {Position = UDim2.new(visualRel, 0, 0.5, 0)}):Play()
    end

    local function applyValue(value)
        Settings[name] = value
        label.Text = string.format("%s: %.2f", name, value)
        textBox.Text = tostring(value)
        
        -- Calculate relative position for slider visualization (clamped to min/max for visual)
        local visualValue = math.clamp(value, min, max)
        local rel = (visualValue - min) / (max - min)
        tweenVisual(rel)

        if CurrentTrack and CurrentTrack.IsPlaying then
    if name == "Speed" then
        CurrentTrack:AdjustSpeed(Settings["Speed"])
    elseif name == "Weight" then
        local weight = Settings["Weight"]
        if weight == 0 then weight = 0.001 end
        CurrentTrack:AdjustWeight(weight)
    elseif name == "Time Position" then
    if CurrentTrack and CurrentTrack.IsPlaying and CurrentTrack.Length > 0 then
        CurrentTrack.TimePosition = math.clamp(value, 0, 1) * CurrentTrack.Length
    end
    end
end
end
   
    local dragging = false
    local function updateFromInput(input)
        local relX = math.clamp((input.Position.X - sliderBar.AbsolutePosition.X) / sliderBar.AbsoluteSize.X, 0, 1)
        local value = math.floor((min + (max - min) * relX) * 100) / 100
        applyValue(value)
    end

    sliderBar.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            updateFromInput(input)
        end
    end)
    thumb.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            updateFromInput(input)
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            updateFromInput(input)
        end
    end)
    UserInputService.InputEnded:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then
            dragging = false
        end
    end)

    textBox.FocusLost:Connect(function(enterPressed)
        if enterPressed then
            local num = tonumber(textBox.Text)
            if num then
                -- Allow values beyond the slider's visual limits
                applyValue(num)
            else
                textBox.Text = tostring(Settings[name])
            end
        end
    end)

    applyValue(Settings[name])
end

--// Toggle Creator
local function createToggle(name)
    local container = Instance.new("Frame")
    container.Size = UDim2.new(1, 0, 0, 40)
    container.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    container.Parent = scrollFrame
    Instance.new("UICorner", container).CornerRadius = UDim.new(0, 6)

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.7, -10, 1, 0)
    label.Position = UDim2.new(0, 10, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.new(1, 1, 1)
    label.Font = Enum.Font.Gotham
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = container

    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 60, 0, 24)
    toggleBtn.Position = UDim2.new(1, -70, 0.5, -12)
    toggleBtn.BackgroundColor3 = Settings[name] and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(200, 0, 0)
    toggleBtn.Text = Settings[name] and "ON" or "OFF"
    toggleBtn.TextColor3 = Color3.new(1, 1, 1)
    toggleBtn.Font = Enum.Font.GothamBold
    toggleBtn.TextSize = 14
    toggleBtn.Parent = container
    Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(1, 0)

    toggleBtn.MouseButton1Click:Connect(function()
        Settings[name] = not Settings[name]
        if Settings[name] then
            toggleBtn.Text = "ON"
            toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
        else
            toggleBtn.Text = "OFF"
            toggleBtn.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
        end
    end)
end

-- Toggles
-- Sliders
createToggle("Stop On Move")
createSlider("Time Position", 0, 1, Settings["Time Position"])
createSlider("Speed", 0, 5, Settings["Speed"])
createSlider("Weight", 0, 1, Settings["Weight"])
createSlider("Fade In", 0, 2, Settings["Fade In"])
createSlider("Fade Out", 0, 2, Settings["Fade Out"])
createToggle("Allow Invisible")

local RunService = Services.RunService
local Players = Services.Players

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")

local originalCollisionStates = {}
local lastFixClipState = Settings and Settings["Allow Invisible"]

local function saveCollisionStates()
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") and part ~= humanoidRootPart then
            originalCollisionStates[part] = part.CanCollide
        end
    end
end

local function disableCollisionsExceptRootPart()
    if not Settings or not Settings["Allow Invisible"] then
        return
    end
    
    for _, part in ipairs(character:GetDescendants()) do
        if part:IsA("BasePart") and part ~= humanoidRootPart then
            part.CanCollide = false
        end
    end
end

local function restoreCollisionStates()
    for part, canCollide in pairs(originalCollisionStates) do
        if part and part.Parent then
            part.CanCollide = canCollide
        end
    end
    originalCollisionStates = {}
end

saveCollisionStates()

local connection
connection = RunService.Stepped:Connect(function()
    if character and character.Parent then
        local currentFixClip = Settings and Settings["Allow Invisible"]
        
        if lastFixClipState ~= currentFixClip then
            if currentFixClip then
                saveCollisionStates()
                disableCollisionsExceptRootPart()
            else
                restoreCollisionStates()
            end
            lastFixClipState = currentFixClip
        elseif currentFixClip then
            disableCollisionsExceptRootPart()
        end
    else
        restoreCollisionStates()
        connection:Disconnect()
    end
end)

player.CharacterAdded:Connect(function(newCharacter)
    restoreCollisionStates()
    character = newCharacter
    humanoidRootPart = character:WaitForChild("HumanoidRootPart")
    
    saveCollisionStates()
    lastFixClipState = Settings and Settings["Allow Invisible"]
    
    if connection then
        connection:Disconnect()
    end
    
    connection = RunService.Stepped:Connect(function()
        if character and character.Parent then
            local currentFixClip = Settings and Settings["Allow Invisible"]
            
            if lastFixClipState ~= currentFixClip then
                if currentFixClip then
                    saveCollisionStates()
                    disableCollisionsExceptRootPart()
                else
                    restoreCollisionStates()
                end
                lastFixClipState = currentFixClip
            elseif currentFixClip then
                disableCollisionsExceptRootPart()
            end
        else
            restoreCollisionStates()
            connection:Disconnect()
        end
    end)
end)

Features & Information

Works with animation ids and catalog emote ids and urls V 1.3 Now you can use emote id to adjust speed and time position etc Chatgpt responses: Okay so hear me out… I was totally gonna flex with some AvatarEditorService:SearchCatalog wizardry, slap together a fancy GUI with an emote grid, buy buttons. y’know… basically like FE Silly emotes but on steroids. I even thought about cooking up my own custom emote system, like, imagine gaze emotes, animation fps chopper (but better), animations no one asked for. Maybe even sprinkle in a few bonus features just to show off. But then my brain hit me with the classic: ‘nah, chief, that’s way too much effort.’ And honestly? It’s right. Like, yeah, it would’ve been legendary, but my motivation bar is literally in the red zone. Negative motivation. If laziness was a stat, I’d be maxed out with prestige levels. At this point I’m just impressed I managed to type this wall of text instead of immediately alt-tabbing into YouTube. So yeah… forgive me, okay? Imagination: 999, effort: -10. Procrastination is undefeated
#Emote

Community Comments (13)

UhrvnsUhrvnsSep 7, 2025

Ty

Replying to @Uhrvns
GazeGazeSep 7, 2025

@Brbrbbrbrbr you're welcome

raptorrealraptorrealSep 9, 2025

thanks babe

Replying to @raptorreal
GazeGazeSep 12, 2025

@sharkboy9922 anytime babe

SmDoriw_198SmDoriw_198Oct 1, 2025

Animation7: 113633503026070 Bug

DiggernickherDiggernickherDec 22, 2025

Is it fe? If not im litterally gonna dig in yo buh, no joke ni-

Replying to @Diggernickher
DiggernickherDiggernickherDec 22, 2025

Btw no I didn't watch the vid, I js searches ts up, pmo 💔💔💔💔💔💔

KauamoreiraconradKauamoreiraconradJan 18, 2026

como pega o scritp?

MagisBradMagisBradJan 24, 2026

guys other peopel can see it btw

WearthOfficialWearthOfficialFeb 1, 2026

PLEASE SCRİPT BRO

kangthirkro17thkangthirkro17thFeb 2, 2026

new animation code for skybox 93224413172183

Replying to @kangthirkro17th
kangthirkro17thkangthirkro17thFeb 2, 2026

try with infinite yield

lubot_367lubot_367Sep 5, 2026

This is good for mm2 fake dead

More Scripts for Universal Scripts