Is there a way to remove packages from an R15 rig?

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!

4 Likes

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:

21 Likes

Thank you! Will definitely try to implement this. :slight_smile:

1 Like

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.

1 Like

It was a lucky guess. I tested it in Studio and the 0s worked a charm.

4 Likes

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.

5 Likes

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. :confused:

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)

1 Like

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.
4 Likes

I see. Thanks for that method, will definitely try it. :slight_smile:

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.

6 Likes