I don’t think block limbs have an ID because when you change your avatar, the way you wear block limbs is by having no limbs equipped. But then again, it is its own mesh and must be set to some ID.
All I need is the ID.
local function removeBundles(character)
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
error("Character has no humanoid.")
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
Using a server script, you can execute that function upon a character.
Here is an example:
-- Creates a variable to reference a character.
local someCharacter = game:GetService("Workspace").Character
-- Makes use of the variable to remove a bundle from the character.
removeBundles(someCharacter)
For those who are still unsure on how to force block limbs for all players, try this:
local Players = game:GetService("Players")
function SetHumanoidToBlockLimbs(Humanoid:Humanoid)
local HumanoidDescription = Humanoid:GetAppliedDescription()
HumanoidDescription.Head = 0
HumanoidDescription.LeftArm = 0
HumanoidDescription.RightArm = 0
HumanoidDescription.LeftLeg = 0
HumanoidDescription.RightLeg = 0
HumanoidDescription.Torso = 0
Humanoid:ApplyDescription(HumanoidDescription)
end
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function(Character)
local Humanoid = Character:WaitForChild("Humanoid")
SetHumanoidToBlockLimbs(Humanoid) -- This function will make player body type to block limbs
end)
end)
And you put that code into a server script like this:
The function is called before any IDs get loaded, so I added a wait(0.4) before the function so it actually works, but it doesn’t feel efficient and I imagine in certain particularly laggy conditions it might fail. Though I did add a wait(1) after the function and called the function again as a safeguard. If anyone has any idea how to call the function while any HumanoidDescription parts aren’t 0 that would be appreciated.
I’m not sure what Ids you’re waiting for but the function should not need to wait for anything. You can use it as soon as someone’s character loads. I recommend at least having Character:WaitForChild("Humanoid") as your safeguard but I tested it myself and it works even without that.
In regards to your usage:
You may as well just wait 1.4 seconds and call it once because calling it twice consecutively does nothing helpful. Also wait() is deprecated. You can upgrade your scripts to use task.wait() instead.
The 0.4 seconds makes it look instant, and the 1 second is again a safeguard if the 0.4 was too quick giving it some time. Any longer than 0.4 seconds it looks bad.
It’s the same exact code you’re using, in my testing, the IDs take a tiny amount of time to update from roblox. I don’t know if this is only an issue on my end for some reason but the issue is there.
I came across this which does exactly what is needed:
Updated the code to use it, and it’s flawless.
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function(Character)
local Humanoid = Character:WaitForChild("Humanoid")
Player.CharacterAppearanceLoaded:Wait()
SetHumanoidToBlockLimbs(Humanoid)
end)
end)
I apologize, I didn’t realize you added a wait for visual purposes. Although, I don’t understand why that would be better than using the function as soon as possible, but that’s okay.
I’m still unsure on what you mean by ‘waiting for an Id to load’. My understanding is an Id is just an integer which represents a Roblox asset.
That’s great to hear.
Looks like you’re displaying players’ original avatars before changing the assets. Is this intentional? You don’t need to wait for clothing or accoutrements. You only need the rig to be loaded to use the function.
It’s completely imperceptible. Ideally I wouldn’t have to do this, but your code simply does not work for me. I have no idea why, so I assume it’s some sort of latency issue. This change makes it work though, and it doesn’t seem to have any problems.
I tested my version just to compare and it actually is visible like you brought up with your concern which further leads me to believe it is some sort of latency issue as earlier it really was instant and imperceptible.
Okay I’ve found the issue. It looks like Roblox loads R6 characters differently to R15 which would explain why it works for me and not you.
I did a test with this:
And I saw the same issues you were having.
What you did with CharacterAppearanceLoaded is definitely a good solution.
here are the id-s that u could use for blocky avatar if you use r6 avatars
ngl it looks kinda ugly on r15
I dont suggest using the script as it takes time to morph your avatar.