I’m making something that gives you a suit and a helmet. I’ve already gotten the helmet (as a mesh), but I don’t know how to make it so it would go onto the players head, since there is no property that has some ID that you can change to put a hat on the player.
You would make a mesh part that would store the ID of the helmet. Unanchor and turn can collide off then weld it to the players head
You can place the mesh into a part that is renamed “Handle”, and place that Handle into an Accessory (which you can add from the “Insert Object” menu or by clicking the plus button on a Service such as the Workspace). This will ensure that you don’t need to do any welding and you can instead have it act like an Accessory you get from Roblox’s Catalog/Avatar Shop.
However, keep in mind that adjustments may need to be made to the Handle with Attachments in order to ensure it’s positioned and oriented correctly on the Character. This is much less tedious than welding for Accessories that don’t need much “movement” with the Character, such as something attached to their arm.
From here, you can reference the player’s Character and call :AddAccessory()
on their Humanoid
to apply the Accessory to their Character.
Not sure why, but the MeshId is blank…
You have to set the mesh type to custom I think, then you have to put in the ID
How would I make roblox know which accessory I want to call?
My hierarchy is
and my current script is
game.Workspace.clothgivertest.ClickDetector.MouseClick:connect (function(plr)
local character = plr.Character
character.Shirt.ShirtTemplate = "rbxassetid://112052992"
character.Pants.PantsTemplate = "rbxassetid://762133676"
character:AddAccessory()
end)
Make the helmet just a MeshPart not an accessory.
You’d reference where the Accessory is in the game and add it as a parameter in the parenthesis of :AddAccessory()
:
Example w/the hierarchy you have:
local part = script.Parent
local ClickDetector = part.ClickDetector
local Helmet = part.Helmet -- Ensure that no parts are Anchored in the Accessory
local function addAccessory(player)
local Character = player.Character or player.CharacterAdded:Wait() -- References Character of player who activated ClickDetector
local Humanoid = Character:WaitForChild("Humanoid") -- References their Humanoid
if Character and Humanoid then -- If both exist...
local accessoryCheck = Character:FindFirstChild(Helmet)
if not accessoryCheck then -- Checks if the item already exists in the Character
local clone = Helmet:Clone()
Humanoid:AddAccessory(clone) -- Adds the "clone" into the player's Character
end
end
end
ClickDetector.MouseClick:Connect(addAccessory)
(Normally I do this but I forgot to provide links to the Developer Hub pages this time!)
Developer Hub Resources
Does it matter if the accessory includes multiple things (like unions and parts)?
Nope! So long as those other parts are welded to the centralized one (the Handle) & that none of the parts are Anchored, it should work fine with multiple parts.
Would i need to weld it using a script? I used your code (without the welding) and it wouldn’t work. It would give the clothes but nothing else happened. Also, here’s the full hierarchy
You can weld it manually outside of runtime. For example, you could add a WeldConstraint
into the Handle and change Part0
to Handle and Part1
to another one of the parts in the Accessory & follow that process with the rest of the parts.
Make sure to check the Output for any errors, if it doesn’t end up working after that, too.
It kind of works now, but it’s not oriented very well. How would I make it be in a better position?
edit: nevermind, it works now!