Hey again, so I just noticed it’s a bit different on removing body packages from a R15 rig. Just wondered if there’s an easy way to do it, as I’m a bit unfamiliar with how this works. Thanks!
The HumanoidDescription system can be used to change visual traits of a character.
First, we’ll use Humanoid:GetAppliedDescription
, which gets the last HumanoidDescription applied to the Humanoid:
local humanoidDescription = humanoid:GetAppliedDescription()
We can then set all of the body parts of the humanoid description to 0, which is the default body part:
humanoidDescription.Head = 0
humanoidDescription.Torso = 0
humanoidDescription.RightLeg = 0
humanoidDescription.LeftLeg = 0
humanoidDescription.RightArm = 0
humanoidDescription.LeftArm = 0
Finally, we can re-apply the humanoid description to the humanoid:
humanoid:ApplyDescription(humanoidDescription)
This system was added only recently, so there’s little documentation. Here’s the current information about it:
Thank you! Will definitely try to implement this.
Hold up, that works? I was under the impression that R15 BodyParts needed actual Ids over zero values, considering they’re MeshParts. Setting things to 0 has not worked, though I’m mostly basing this off of the Avatar Configuration menu in Game Settings which does not allow you to save with a blanked or zero value. I haven’t really tried it with HumanoidDescriptions yet.
It was a lucky guess. I tested it in Studio and the 0s worked a charm.
That’s whack. I’d really wish that the Avatar Menu would reflect this change and allow zero values, but apparently you need a non-zero value to use that menu. HumanoidDescriptions it is.
Well, after testing this code out and such, it appears after you set a new humanoid description to the humanoid, it overrides the color properties of the player’s body parts, making their colors unable to be changed.
This is a bit of a roadblock for my scenario, are there any other methods to do this? Thanks.
I actually didn’t realize this feature made R15 packages so easy. I’ll definitely be transferring over to this system as my current system is to fetch the MeshParts, make it so the humanoid can’t die, and then replace them all with the new MeshParts of the same name, making sure to port over all Joints. This changes everything lol, thanks!
Hey man, so I mean I know I’ve done this before too, but I mean it’s a bit depressing to see some one reply to your thread only to realize it’s irrelevant to the current scenario, as I’m pretty much at a standstill trying to figure this out before I could work on anything else, pretty much.
But all good.
Are you definitely using Humanoid:GetAppliedDescription
? Are you doing this on Player.CharacterAdded
or Player.CharacterAppearanceLoaded
? If the former, switch to the latter. (may be irrelevant, but worth a shot)
I essentially copied your entire code, and used that in my function where it gets rid of anything on the character, then I call another function to load in that character’s assets. (for a character customizing system.)
Those functions are both called when the player leaves the customizer (via remote event) and are also called every time the player dies or respawns.
The removal of body colours sounds odd and is definitely something you should report if you’re absolutely sure it’s not your fault. The issue does not happen to me when I use the humanoid description system.
Could you, for the time being, look into using Humanoid:ReplaceBodyPartR15
instead? You’d have to have a manually copy all of the default body parts, I believe, which could be done by copying and pasting them from the dummy model.
humanoid:ReplaceBodyPartR15(Enum.BodyPartR15.Head, defaultBodyParts.Head)
humanoid:ReplaceBodyPartR15(Enum.BodyPartR15.UpperTorso, defaultBodyParts.UpperTorso)
-- etc.
I see. Thanks for that method, will definitely try it.
As far as what you were saying about the possible bug, I don’t know what to tell you. From what I’ve noticed, I don’t even think the color of my skin was the same as my default character’s. Nor was it one of the available skintones I have for the customizer. I’d have to double check this, but atleast I think so. What was weird was like, I opened up the Dev Console and typed in some code to change the color of one of my character’s limbs, the code ran, but nothing happened. Very odd.
Thanks!
Ok I’m kinda late but this might help other people. I tested the different options explained here but none was working for me so I came back on the first one and came to this
local players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function PackageRemove(character)
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
error("Error")
end
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Head = 0
descriptionClone.LeftArm = 0
descriptionClone.RightArm = 0
descriptionClone.LeftLeg = 0
descriptionClone.RightLeg = 0
descriptionClone.Torso = 0
humanoid:ApplyDescription(descriptionClone)
end
local function onCharacterAdded(character)
RunService.Stepped:wait()
PackageRemove(character)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
players.PlayerAdded:Connect(onPlayerAdded)
So separating the whole block in different functions and delaying the script seems to avoid unexpected errors.