Can you guys add a delta option to Humanoid:ApplyDescription so that it only overwrites values of the Humanoid’s current description if a property of the applied description differs from its default value?
As of right now, loading animation packs from the website as HumanoidDescriptions is picky because it turns your avatar into MrGrey when you apply them.
This change might require the default BodyColor values to be updated to a grey color, but that shouldn’t be a big issue (hopefully… )
Agreed, it’s too unpredictable to use with NPCs, not to mention adding an Animate script to them still does not always work, even when yielding until after the Animate script runs.
There is a weird behavior with the current implementation of the HumanoidDescription. You’re unable to apply descriptions to any humanoid until atleast 1 player has had their character loaded in the workspace. This prevents Developers from applying outfits when game is just starting and first players are still loading.
From the example file we see that Humanoid:ApplyDescription will throw an error and will successfully work when ran again after character is loaded. Is this intended behavior?
I really really really really really want to use this feature however I need the ability to use the assets on my profile in my group game. That’s literally the only thing stopping me. I set everything up using a place on my profile not realizing they wouldn’t work in the group game and it took me hours to upload everything to my profile and get the IDs.
Edit: I’ve turned this into a Feature Request as I feel that will get more traction
We definitely considered doing something along those lines, but at the end, settled on the current implementation to make things simpler and more straightforward. It is up to the developer to handle the delta the way they want, and then apply the final description.
For example, if you want to apply the description from an animation bundle, you should first get the latest applied description to the humanoid, copy the animation ids from the animation bundle into that, and then apply that description. A little more work on your side, but doable.
Alright that shouldn’t be an issue. My concern is more with future compatibility, in case Roblox adds more properties to the HumanoidDescription for any future avatar features.
Since there isn’t any official Reflection Lua API in-engine, I can’t iterate over the property names of the object and check which names have an animation suffix. The best I can do in that regard is to check the information obtained from GetBundleDetailsAsync.
It appears there needs to be an Animate script in order for this to work, even on stagnate NPCs. Trying to use this on hand held communication devices but to no avail.
You can manually read HumanoidDescriptions and apply them yourself using the Insert Service or such. It’s a lengthy function and can be a bit of a hassle to optimize. But it’s possible. Currently my API builds an NPC pretty easily.
local John = NPCService:CreateNPC("John")
John:LoadCharacter()
John:ApplyDescription(HumanoidDescription)
John:LoadCharacterWithHumanoidDescription(HumanoidDescription)