Humanoid:ApplyDescription doesn't works properly

Hey guys, this is my code, and for some reason setting the parts in description to 0 (changing it to standard) still doesn’t remove the mesh from the character, even when running a loop to search and destroy CharacterMesh. Any help? :smiley:

Players.PlayerAdded:Connect(function(Player)
	
	Player.CharacterAppearanceLoaded:Connect(function(Character)
		for i,v in pairs(Character:GetChildren()) do
			if (v:IsA("CharacterMesh")) then
				v:Destroy()
			end
		end

		local Humanoid = Character:WaitForChild("Humanoid")	
		local CurrentDescription = Humanoid:GetAppliedDescription()

		CurrentDescription.Head = 0	
		CurrentDescription.Torso = 0
		CurrentDescription.LeftArm = 0
		CurrentDescription.RightArm  = 0
		CurrentDescription.LeftLeg = 0
		CurrentDescription.RightLeg = 0
		Humanoid:ApplyDescription(CurrentDescription)
	end)
end)

Hmm. Consider using this instead of ApplyDescription() (this is a function of the player, not the humanoid):

https://developer.roblox.com/en-us/api-reference/function/Player/LoadCharacterWithHumanoidDescription

If this does not work, I would suggest creating a NEW HumanoidDescription (using Instance.new) and removing the old one, then using the method you used originally.

this worked of course, had to yeah work it around haha

Glad I was able to provide help to you!

local Run = game:GetService("RunService")
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAppearanceLoaded:Connect(function(Character)
		Run.Stepped:Wait()
		for _, mesh in ipairs(Character:GetChildren()) do
			if (mesh:IsA("CharacterMesh")) then
				mesh:Destroy()
			end
		end
		
		local Humanoid = Character:WaitForChild("Humanoid")	
		local Description = Humanoid:GetAppliedDescription()

		Description.Head = 0	
		Description.Torso = 0
		Description.LeftArm = 0
		Description.RightArm  = 0
		Description.LeftLeg = 0
		Description.RightLeg = 0
		Humanoid:ApplyDescription(Description)
	end)
end)

Your script was fine, you just needed to yield for a single frame after “CharacterAppearanceLoaded” fired to perform any avatar related changes.

No, that doesn’t make a difference. He already yielded for CharacterAppearanceLoaded, which can only true if the Humanoid exists. That is why the topic was marked as solved, because a solution was found.

No, you need to yield for an additional frame after “.CharacterAppearanceLoaded” fires, it’s an awkward convention but the script I provided above works (I tested it).