Switch to R15 avatar to play emote

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I want my emotes to play.

  2. What is the issue? Include screenshots / videos if possible!

  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I have tried to change the TextChatService Chat version but it stays the same.

After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!

Player.Chatted:Connect(function(Message)
local Msg = string.lower(Message)
if Msg:sub(1,2) == "/e" then
-- My animations are here --

Please do not ask people to write entire scripts or design entire systems for you. If you can’t answer the three questions above, you should probably pick a different category.

1 Like

You need to make the default avatar for your game R15. You can do this by going to Game Settings > Avatar > Avatar Type > R15

  1. image

  2. image

  3. image

1 Like

My animations are r6 and my game is in r6 not r15 so it’s creating an issue.

1 Like

Created the animations with an R6 rig. You cannot play a R15 animation with a R6 player, as there are 15 roots in R15 as seen and more components to it making it little more complex than an R6 player, you cannot change an R15 animations play for a R6 figure as the R15 animation would require more components and parts and an R6 rig does not. Here is a comparison: R15 has an Upper torso and a lower torso while an R6 rig/player has just a “Torso”. The only way to get your R15 animations to play for an R6 player is to just recreate the animation but with an R6 rig as much accurate as possible.

1 Like

I also do not think it is efficient to switch an R6 player to an R15 player just to play an animation since your game is solely based on R6.

1 Like

Another thing is I wouldn’t use “/e” as a way to call your emotes as when you do that it fetches [NAME] in “/e [NAME]” directly from roblox that could be a reason why your R6 animations aren’t playing. Perhaps change is to something like “:e” or “!e”, not “/e” maybe that can solve your issue.

1 Like

I’m going to test this out later. The animations are r6 animations. Idky I’m running into the change to r15 error. A lot of people said they’ve been getting that error too.

1 Like

Ok, please tell me if it worked, if not I’ll find another solution for you!

Unfortunately it didn’t work! Which is weird because I have other game worlds like that and it works in them.

Hello, this error message in chat is actually designed to be misleading to push r15 as much as possible. The real problem very likely lies in your code.

Player.Chatted:Connect(function(Message)
	local Msg = string.lower(Message)
	if Animations:Animate(false) then
		if Msg:sub(1,2) == "/e" then
			if not MarketPlace:UserOwnsGamePassAsync(Player.UserId, 668747452) then
				MarketPlace:PromptGamePassPurchase(Player, 668747452)
			end
			if Msg == "/e archer" then
				Animations:Emote("Archer")
			elseif Msg == "/e baby" then
				Animations:Emote("Baby")
			elseif Msg == "/e flex" then
				Animations:Emote("Flex")
			elseif Msg == "/e frontflip" then
				Animations:Emote("Frontflip")
			elseif Msg == "/e griddy" then
				Animations:Emote("Griddy")
			elseif Msg == "/e headtap" then
				Animations:Emote("Headtap")
			elseif Msg == "/e folks" then
				Animations:Emote("HitTheFolks")
			elseif Msg == "/e hotfeet" then
				Animations:Emote("HotFeet")
			elseif Msg == "/e lbj" then
				Animations:Emote("LebronJames")
			elseif Msg == "/e ld" then
				Animations:Emote("LockDown")
			elseif Msg == "/e p1" then
				Animations:Emote("Pose1")
			elseif Msg == "/e p2" then
				Animations:Emote("Pose2")
			elseif Msg == "/e p3" then
				Animations:Emote("Pose3")
			elseif Msg == "/e seatbelt" then
				Animations:Emote("Seatbelt")
			elseif Msg == "/e shake" then
				Animations:Emote("ShakeThat")
			elseif Msg == "/e sturdy" then
				Animations:Emote("Sturdy")
			elseif Msg == "/e superman" then
				Animations:Emote("Superman")
			end
		end
	end
end)

Try to “Play” (:Play()) the animations with the player’s humanoid/animator and use player’s moveDirection with magnitude with RunService to check for movement by using game.Players:GetChildren() in a For Loop, then make the animation :Stop() if the animation name is equal to the emote name from the animation object.

Here is a part of code from an animation script from one of my scripts I’ve made:

local players = game.Players
local animationFolder = script.Animations
local runService = game:GetService("RunService")
local animations_ = {"Sit", "RightDress", "Hero"}
runService.Heartbeat:Connect(function()
	for i, child in pairs(players:GetChildren()) do
		local humanoid = child.Character:WaitForChild("Humanoid")
		if (humanoid.MoveDirection).Magnitude > 0 then
			local animator = humanoid:FindFirstChild("Animator")
			for y, animations in pairs(animator:GetPlayingAnimationTracks()) do
				if table.find(animations_, tostring(animations.Name)) ~= nil then
					animations:Stop()
				end
			end
		end
	end
end)

I think it’s just Roblox. It doesn’t happen in any of my other games that had /e then emote previously. So it’s probably the new updates and chat service.

Yep just happened to me. I even replaced the id with the original dance emote that roblox gives you and nothing changed. It’s a roblox issue.