I’m experiencing some issues with my code for a Shirt Locker System, with this, the ShirtId changes within the player’s character’s shirt but the shirt does not properly appear and makes them go naked.
Please help me.
local event = game.ReplicatedStorage.LockerEvents:WaitForChild("ChangeShirt")
local shirtIdObject = script.Parent:WaitForChild("ShirtID")
script.Parent.MouseButton1Click:Connect(function()
local Id = script.Parent.ShirtID.Value
event:FireServer(Id)
end)
2nd script
local event = game.ReplicatedStorage.LockerEvents:WaitForChild("ChangeShirt")
event.OnServerEvent:Connect(function(player, shirtId)
local character = player.Character
if character then
local Shirt = character:FindFirstChild("Shirt")
if not Shirt then
Shirt = Instance.new("Shirt")
Shirt.Parent = character
warn("[WARNING]: NO SHIRT FOUND, CREATING NEW")
end
Shirt.ShirtTemplate = "rbxassetid://" .. shirtId
else
warn("[WARNING]: NO CHARACTER FOUND")
end
end)
I’ve tried re-coding it multiple times but nothing has been working out. If anyone could help that’d be fantastic.
Make sure your shirtID is the ID of the shirt template and not just the shirt. In Roblox studio, if you past the shirt ID into the ShirtTemplate property of the Shirt instance, it’ll automatically convert the shirt ID to the shirt template’s ID, but in scripting it doesn’t do this.
What I meant was that the clothing doesn’t appear because the shirtID variable in your script is incorrect… and that shirtID variable may be incorrect because you’re using the ID of the shirt and not the shirt template
Sorry if I was confusing. If you want to change the player’s character’s shirt, I suggest using InsertService to insert the shirt, which you can use the ShirtID/ContentID for (this does not use shirt template ID).
Using the method I just described, this was my code for getting a shirt based on ShirtID
--local varaibles that you should change to be specific to your script
local shirtAssetID = --the shirt asset ID
local character = --the player's character
--Using InsertService to get a model that'll contain the shirt. This way we don't have to worry about change Shirt.ShirtTemplate
local model = game:GetService("InsertService"):LoadAsset(shirtAssetId)
local newShirt = model:FindFirstChildOfClass("Shirt")
--Get rid of the player's character's old shirt if there is one
local oldShirt = character:FindFirstChild("Shirt")
if oldShirt then
oldShirt:Destroy()
end
--put on the new shirt onto the character
newShirt.Parent = character
model:Destroy()