local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer -- Remove old GUI if you execute it twice if CoreGui:FindFirstChild("FE_Emote_Hub") then CoreGui.FE_Emote_Hub:Destroy() end -- Official Roblox Animation IDs (Replicates FE to all players) local Emotes = { { Name = "Wave", R6 = "128777973", R15 = "507770239", Loop = false }, { Name = "Point", R6 = "128853357", R15 = "507770453", Loop = false }, { Name = "Cheer", R6 = "129423030", R15 = "507770677", Loop = false }, { Name = "Laugh", R6 = "129423131", R15 = "507770818", Loop = false }, { Name = "Dance 1", R6 = "182435998", R15 = "507771019", Loop = true }, { Name = "Dance 2", R6 = "182436842", R15 = "507776043", Loop = true }, { Name = "Dance 3", R6 = "182436935", R15 = "507777268", Loop = true }, { Name = "Salute", R6 = "128777973", R15 = "3360689775", Loop = false }, { Name = "Stadium", R6 = "129423030", R15 = "3360686498", Loop = false }, { Name = "Tilt", R6 = "182435998", R15 = "3360692915", Loop = false } } local currentTrack = nil local activeMode = nil local modeConnection = nil local spinAngle = 0 local floatY = nil local function stopAll() -- Stop animations if currentTrack then currentTrack:Stop() currentTrack:Destroy() currentTrack = nil end -- Disconnect active physics loops if modeConnection then modeConnection:Disconnect() modeConnection = nil end activeMode = nil floatY = nil -- Reset character state local character = LocalPlayer.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") if humanoid then humanoid.PlatformStand = false humanoid.Sit = false end end local function playEmote(emoteData) stopAll() local character = LocalPlayer.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local animator = humanoid and humanoid:FindFirstChildOfClass("Animator") if not humanoid or not animator then return end local animId = (humanoid.RigType == Enum.HumanoidRigType.R15) and emoteData.R15 or emoteData.R6 local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. animId currentTrack = animator:LoadAnimation(anim) currentTrack.Priority = Enum.AnimationPriority.Action currentTrack.Looped = emoteData.Loop currentTrack:Play() end local function toggleMode(modeName) if activeMode == modeName then stopAll() return end stopAll() activeMode = modeName local character = LocalPlayer.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local rootPart = character and character:FindFirstChild("HumanoidRootPart") if not humanoid or not rootPart then return end if modeName == "Sit" then humanoid.Sit = true return end if modeName == "Float" then floatY = rootPart.Position.Y + 4 -- Lifts you 4 studs into the air end modeConnection = RunService.Heartbeat:Connect(function() local char = LocalPlayer.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local root = char and char:FindFirstChild("HumanoidRootPart") if not hum or not root then return end if activeMode == "Carpet" then hum.PlatformStand = true local pos = root.Position local look = workspace.CurrentCamera.CFrame.LookVector local flatLook = Vector3.new(look.X, 0, look.Z).Unit if flatLook.Magnitude > 0 then root.CFrame = CFrame.new(pos, pos + flatLook) * CFrame.Angles(math.rad(-90), 0, 0) end if hum.MoveDirection.Magnitude > 0 then root.AssemblyLinearVelocity = Vector3.new( hum.MoveDirection.X * 24, root.AssemblyLinearVelocity.Y, hum.MoveDirection.Z * 24 ) end elseif activeMode == "Spin" then spinAngle = (spinAngle + 25) % 360 local pos = root.Position root.CFrame = CFrame.new(pos) * CFrame.Angles(0, math.rad(spinAngle), 0) elseif activeMode == "Float" then local pos = root.Position root.CFrame = CFrame.new(pos.X, floatY, pos.Z) * (root.CFrame - root.CFrame.Position) root.AssemblyLinearVelocity = Vector3.new(root.AssemblyLinearVelocity.X, 0, root.AssemblyLinearVelocity.Z) end end) end -- Build Draggable GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "FE_Emote_Hub" screenGui.ResetOnSpawn = false screenGui.Parent = CoreGui local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 210, 0, 380) mainFrame.Position = UDim2.new(0.02, 0, 0.25, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 8) uiCorner.Parent = mainFrame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 32) title.BackgroundColor3 = Color3.fromRGB(35, 35, 45) title.Text = "FE Emotes & Tricks" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.Font = Enum.Font.GothamBold title.TextSize = 14 title.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 8) titleCorner.Parent = title local specialModes = { { Name = "Carpet (Floor Slide)", Mode = "Carpet" }, { Name = "Spin (Fast)", Mode = "Spin" }, { Name = "Float (Air Walk)", Mode = "Float" }, { Name = "Sit Anywhere", Mode = "Sit" } } local totalButtons = #specialModes + #Emotes local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(1, -12, 1, -80) scroll.Position = UDim2.new(0, 6, 0, 38) scroll.BackgroundTransparency = 1 scroll.ScrollBarThickness = 4 scroll.CanvasSize = UDim2.new(0, 0, 0, totalButtons * 34) scroll.Parent = mainFrame local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0, 4) layout.Parent = scroll -- Create Special Trick Buttons for _, item in ipairs(specialModes) do local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -6, 0, 30) btn.BackgroundColor3 = Color3.fromRGB(60, 90, 160) btn.Text = item.Name btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.GothamBold btn.TextSize = 13 btn.Parent = scroll local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 6) btnCorner.Parent = btn btn.MouseButton1Click:Connect(function() toggleMode(item.Mode) end) end -- Create Emote Buttons for _, emote in ipairs(Emotes) do local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -6, 0, 30) btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55) btn.Text = emote.Name btn.TextColor3 = Color3.fromRGB(235, 235, 235) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.Parent = scroll local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 6) btnCorner.Parent = btn btn.MouseButton1Click:Connect(function() playEmote(emote) end) end -- Stop All Button at the bottom local stopBtn = Instance.new("TextButton") stopBtn.Size = UDim2.new(1, -12, 0, 30) stopBtn.Position = UDim2.new(0, 6, 1, -36) stopBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50) stopBtn.Text = "Stop / Reset All" stopBtn.TextColor3 = Color3.fromRGB(255, 255, 255) stopBtn.Font = Enum.Font.GothamBold stopBtn.TextSize = 13 stopBtn.Parent = mainFrame local stopCorner = Instance.new("UICorner") stopCorner.CornerRadius = UDim.new(0, 6) stopCorner.Parent = stopBtn stopBtn.MouseButton1Click:Connect(stopAll)