local player = game.Players.LocalPlayer local function setup(char) local humanoid = char:WaitForChild("Humanoid") local animator = humanoid:WaitForChild("Animator") -- stop default animate script local animate = char:FindFirstChild("Animate") if animate then animate.Disabled = true end -- stop all existing tracks for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do track:Stop() end -- animation IDs local IDLE = "rbxassetid://115339997830808" local WALK = "rbxassetid://126540738694429" local RUN = "rbxassetid://126540738694429" -- load animations ONCE local idleAnim = Instance.new("Animation") idleAnim.AnimationId = IDLE local idleTrack = animator:LoadAnimation(idleAnim) idleTrack.Looped = true local walkAnim = Instance.new("Animation") walkAnim.AnimationId = WALK local walkTrack = animator:LoadAnimation(walkAnim) walkTrack.Looped = true local runAnim = Instance.new("Animation") runAnim.AnimationId = RUN local runTrack = animator:LoadAnimation(runAnim) runTrack.Looped = true local current = nil local function play(track) if current == track then return end if current then current:Stop() end current = track current:Play() end humanoid.Running:Connect(function(speed) if speed < 1 then play(idleTrack) elseif speed < 16 then play(walkTrack) else play(runTrack) end end) play(idleTrack) end player.CharacterAdded:Connect(setup) if player.Character then setup(player.Character) end local player = game.Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "CombatGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local player = game.Players.LocalPlayer local animations = { WAVE = "rbxassetid://YOUR_WAVE_ID", CLICK = "rbxassetid://YOUR_CLICK_ID", SLAM = "rbxassetid://YOUR_SLAM_ID" } local currentTrack local function playAnimation(animId) local character = player.Character if not character then return end local humanoid = character:FindFirstChild("Humanoid") if not humanoid then return end -- Stop previous emote only if currentTrack then currentTrack:Stop() currentTrack:Destroy() end local animation = Instance.new("Animation") animation.AnimationId = animId currentTrack = humanoid:LoadAnimation(animation) currentTrack.Priority = Enum.AnimationPriority.Action4 currentTrack.Looped = true currentTrack:Play() end local gui = Instance.new("ScreenGui") gui.Name = "EmoteGui" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0,170,0,190) frame.Position = UDim2.new(1,-190,0.5,-140) -- higher on right side frame.BackgroundColor3 = Color3.fromRGB(20,20,20) frame.BorderSizePixel = 2 frame.BorderColor3 = Color3.fromRGB(255,0,0) frame.Parent = gui local corner = Instance.new("UICorner") corner.Parent = frame local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0,10) layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout.VerticalAlignment = Enum.VerticalAlignment.Center layout.Parent = frame for name, id in pairs(animations) do local button = Instance.new("TextButton") button.Size = UDim2.new(0,150,0,45) button.Text = name button.TextScaled = true button.BackgroundColor3 = Color3.fromRGB(140,0,0) button.TextColor3 = Color3.new(1,1,1) button.Parent = frame local buttonCorner = Instance.new("UICorner") buttonCorner.Parent = button button.MouseButton1Click:Connect(function() playAnimation(id) end) end local player = game.Players.LocalPlayer local animations = { WAVE = "rbxassetid://77304386644418", FLICK = "rbxassetid://88992279344579", SLAM = "rbxassetid://80401959620185" } local currentTrack local gui = Instance.new("ScreenGui") gui.Name = "Emotes" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0,180,0,200) frame.Position = UDim2.new(1,-200,0.5,-150) frame.BackgroundColor3 = Color3.fromRGB(15,15,15) frame.BorderSizePixel = 2 frame.BorderColor3 = Color3.fromRGB(255,0,0) frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0,10) local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0,10) layout.HorizontalAlignment = Enum.HorizontalAlignment.Center layout.VerticalAlignment = Enum.VerticalAlignment.Center layout.Parent = frame local function playEmote(animId) local character = player.Character if not character then return end local humanoid = character:FindFirstChildOfClass("Humanoid") if not humanoid then return end if currentTrack then currentTrack:Stop() currentTrack:Destroy() currentTrack = nil end local animation = Instance.new("Animation") animation.AnimationId = animId local track = humanoid:LoadAnimation(animation) track.Priority = Enum.AnimationPriority.Action4 track.Looped = false currentTrack = track track:Play() track.Stopped:Connect(function() if currentTrack == track then currentTrack = nil end end) end for _, name in ipairs({"WAVE","FLICK","SLAM"}) do local button = Instance.new("TextButton") button.Size = UDim2.new(0,160,0,45) button.BackgroundColor3 = Color3.fromRGB(170,0,0) button.TextColor3 = Color3.new(1,1,1) button.TextScaled = true button.Text = name button.Parent = frame Instance.new("UICorner", button).CornerRadius = UDim.new(0,8) button.MouseButton1Click:Connect(function() playEmote(animations[name]) end) end