What’s the most resource efficient and fastest way of loading a custom appearance on a player’s character the moment they spawn in? Preferably utilizing the :ApplyDescription() function
Are you just trying to set clothes or something? Because you can do that in the Avatar settings. If you are trying to make a custom character then make it, rename it to StarterCharacter and put it in StarterPlayer
This is what I have been using for my own game for the past half a year and it has never failed me so yeah. This isnt the most efficient way and you can get the appearance id before the character loads but I dont think it would update the character is you change it on the website
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
local Humanoid = char:WaitForChild("Humanoid")
local AppearanceId = Players:GetHumanoidDescriptionFromUserId(player.UserId)
Humanoid:ApplyDescription(AppearanceId)
end)
end)
If you were instead looking for the appearance of a pre-existing character, then you can replace the appearance id variable with
local AppearanceId = {Path to the humanoid of the character}:GetAppliedDescription()
Any other questions id be happy to help!
Clothes, skin color, face and accessories (not those from the catalog)
From my experience, loading a custom HumanoidDescription immediately after CharacterAdded has a 50/50 chance of sometimes applying the description and sometimes not, even with LoadCharacterAppearance and CharacterAutoLoads set to false
The parts that make up the things that are the HumanoidDescription themselves take time to load.
You just need a small pause.. task.wait(0.33) should do it. I just go with a real pause to be sure, and used that here too.. This strips off all Accessories (leaving hair) and adds a shirt and pants (with a tint).
-->SeverScript@ServerScriptService
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)task.wait(3)
local dfp,dfs=character:WaitForChild("Pants"),character:WaitForChild("Shirt")
dfp.PantsTemplate="rbxassetid://12345678";dfp.Color3=Color3.fromRGB(176,208,255)
dfs.ShirtTemplate="rbxassetid://12345678";dfs.Color3=Color3.fromRGB(176,208,255)
for _,a in pairs(character:GetChildren())do if a:IsA("Accessory")then
if a.AccessoryType ~=Enum.AccessoryType.Hair and
a.AccessoryType~=Enum.AccessoryType.Eyelash and
a.AccessoryType~=Enum.AccessoryType.Eyebrow then
a:Destroy()end end
end
end)
end)
frost just needs: char:WaitForChild(“Humanoid”) task.wait(0.33)
Yeah I had this issue, try putting this before the Hunanoid:load apperance
repeat task.wait() until Char.Parent == game.Workspace
In short terms, sometimes the character loaded event fires before the character is parented to the workspace, which is required for the apply description to work. So if you would prefer to use a different method that would wait for that it would be all good (im not on my pc so I cant double check it will work)