Universal Script – Emote Gui V2 (Speed) - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – Emote Gui V2 (Speed)

Universal ScriptWOLLTHAYWOLLTHAY 3K views 16.9K executesUpdated Oct 18, 2026
Unrated
00
Lua Script•190 lines (5997 chars)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

-- Função para restaurar a velocidade padrão (1) das animações tocando no momento
local function resetAnimSpeed()
	local character = player.Character
	if character then
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		if humanoid then
			local animator = humanoid:FindFirstChildOfClass("Animator")
			if animator then
				for _, track in pairs(animator:GetPlayingAnimationTracks()) do
					track:AdjustSpeed(1)
				end
			end
		end
	end
end

-- Se já existir uma versão anterior rodando, restaura a velocidade ao normal e remove a GUI
local guiAntiga = playerGui:FindFirstChild("AnimSpeedGUI")
if guiAntiga then
	resetAnimSpeed()
	guiAntiga:Destroy()
end

-- Tabela para guardar os IDs das animações de andar, correr, pular e idle
local locomotionIds = {}
local ultimaVelocidade = nil

-- Função para mapear as animações do sistema de movimentação do personagem
local function carregarLocomotionIds(character)
	locomotionIds = {}
	local animateScript = character:WaitForChild("Animate", 5)
	if animateScript then
		local pastasMovimento = {"idle", "walk", "run", "jump", "fall", "climb", "swim", "strafe"}
		for _, nomePasta in ipairs(pastasMovimento) do
			local pasta = animateScript:FindFirstChild(nomePasta)
			if pasta then
				for _, obj in ipairs(pasta:GetChildren()) do
					if obj:IsA("Animation") and obj.AnimationId ~= "" then
						locomotionIds[obj.AnimationId] = true
					end
				end
			end
		end
	end
end

-- Conecta ao personagem para registrar IDs e monitorar novas animações
local function conectarCharacter(character)
	carregarLocomotionIds(character)
	
	local humanoid = character:WaitForChild("Humanoid", 5)
	if not humanoid then return end
	local animator = humanoid:WaitForChild("Animator", 5)
	if not animator then return end

	animator.AnimationPlayed:Connect(function(track)
		task.wait(0.05)
		local animId = track.Animation and track.Animation.AnimationId
		-- Aplica a velocidade salva caso uma nova animação de emote comece
		if not (animId and locomotionIds[animId]) and ultimaVelocidade then
			track:AdjustSpeed(ultimaVelocidade)
		end
	end)
end

if player.Character then
	conectarCharacter(player.Character)
end
player.CharacterAdded:Connect(conectarCharacter)

-- ScreenGui Principal
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AnimSpeedGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

-- Frame Principal Minimalista
local mainFrame = Instance.new("Frame")
mainFrame.Name = "AnimSpeedFrame"
mainFrame.Size = UDim2.new(0, 230, 0, 140)
mainFrame.Position = UDim2.new(0.5, 0, 0.4, 0)
mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
mainFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 10)
frameCorner.Parent = mainFrame

local frameStroke = Instance.new("UIStroke")
frameStroke.Color = Color3.fromRGB(55, 55, 55)
frameStroke.Thickness = 1
frameStroke.Parent = mainFrame

-- Título
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, 0, 0, 32)
title.BackgroundTransparency = 1
title.Text = "Velocidade do emote"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.FredokaOne
title.TextSize = 18
title.Parent = mainFrame

-- Caixa de Entrada (TextBox)
local inputBox = Instance.new("TextBox")
inputBox.Name = "InputBox"
inputBox.Size = UDim2.new(0.85, 0, 0, 35)
inputBox.Position = UDim2.new(0.075, 0, 0.28, 0)
inputBox.PlaceholderText = "Digite a velocidade..."
inputBox.ClearTextOnFocus = false
inputBox.Text = ""
inputBox.TextColor3 = Color3.fromRGB(255, 255, 255)
inputBox.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
inputBox.BorderSizePixel = 0
inputBox.Font = Enum.Font.FredokaOne
inputBox.TextSize = 15
inputBox.Parent = mainFrame

local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 8)
inputCorner.Parent = inputBox

-- Permite APENAS números no campo de texto
inputBox:GetPropertyChangedSignal("Text"):Connect(function()
	local textoFiltrado = inputBox.Text:gsub("[^%d.]", "")
	if inputBox.Text ~= textoFiltrado then
		inputBox.Text = textoFiltrado
	end
end)

-- Botão Submit (Aplicar)
local submitButton = Instance.new("TextButton")
submitButton.Name = "SubmitButton"
submitButton.Size = UDim2.new(0.85, 0, 0, 35)
submitButton.Position = UDim2.new(0.075, 0, 0.62, 0)
submitButton.Text = "Aplicar"
submitButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
submitButton.TextColor3 = Color3.fromRGB(255, 255, 255)
submitButton.Font = Enum.Font.FredokaOne
submitButton.TextSize = 16
submitButton.AutoButtonColor = true
submitButton.Parent = mainFrame

local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 8)
buttonCorner.Parent = submitButton

-- Função para alterar a velocidade dos emotes tocando no momento
local function setAnimSpeed(speed)
	if not speed then return end
	ultimaVelocidade = speed

	local character = player.Character
	if character then
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		if humanoid then
			local animator = humanoid:FindFirstChildOfClass("Animator")
			if animator then
				for _, track in pairs(animator:GetPlayingAnimationTracks()) do
					local animId = track.Animation and track.Animation.AnimationId
					-- Altera a velocidade APENAS se não for uma animação do Animate script (idle/walk/run/jump)
					if not (animId and locomotionIds[animId]) then
						track:AdjustSpeed(speed)
					end
				end
			end
		end
	end
end

-- Função disparada para aplicar a alteração
local function aplicarMudanca()
	local speed = tonumber(inputBox.Text)
	if speed then
		setAnimSpeed(speed)
	end
end

-- Clique no botão de Aplicar
submitButton.MouseButton1Click:Connect(aplicarMudanca)

How to Execute Universal Script – Emote Gui V2 (Speed)

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

WOLLTHAY
WOLLTHAY
Script Creator
View Author Profile

Features & Information

Execute Universal Script – Emote Gui V2 (Speed). Key system required, created by WOLLTHAY, updated Oct 18, 2026. Tested and working on supported executors.

Script Changelog (2)

@WOLLTHAYOct 23, 2026

Update script

@WOLLTHAYOct 18, 2026

Create script V2

Community Comments (2)

WOLLTHAYWOLLTHAYOct 18, 2026

Muito obrigado por apoiar Flashy eu sou novo no scriptbox e estou distribuindo o meu script adaptado para ser o mais jurídico possível com emotes

FlashyStudiosFlashyStudiosOct 18, 2026

AI

Frequently Asked Questions

How do I execute Universal Script – Emote Gui V2 (Speed) in Roblox?

To run Universal Script – Emote Gui V2 (Speed), copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – Emote Gui V2 (Speed) keyless or does it require an access key?

Universal Script – Emote Gui V2 (Speed) requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – Emote Gui V2 (Speed) currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.