Why wont the accesorry show after respawning?

I’ve made a script which removes all accesories from a player’s model then adds a custom accessory after 5 seconds
when i reset my character it doesnt show up again.

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Wig = ReplicatedStorage:WaitForChild("Wig")
local cloneWig = Wig:Clone()
local Players = game:GetService("Players")
 
local function playerAdded(player)
	player.CharacterAppearanceLoaded:Connect(function(character)
		local humanoid = character:WaitForChild("Humanoid")
 
		
		humanoid:RemoveAccessories()
 
		wait(5)
 
		cloneWig.Parent = player.Character
		
	end)
end
 

for _, player in pairs(Players:GetPlayers()) do 
	playerAdded(player)
end

Players.PlayerAdded:Connect(playerAdded)

You cloned the wig once, so the first player to join will get it. You should instead clone the wig every time they spawn. So, here is the fixed code:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Wig = ReplicatedStorage:WaitForChild("Wig")
local Players = game:GetService("Players")
 
local function playerAdded(player)
	player.CharacterAdded:Connect(function(character)
		local humanoid = character:WaitForChild("Humanoid")
		humanoid:RemoveAccessories()
		wait(5)

		local cloneWig = Wig:Clone()
		cloneWig.Parent = player.Character
	end)
end
 
-- get existing players
for _, player in pairs(Players:GetPlayers()) do 
	playerAdded(player)
end

-- listen for new players
Players.PlayerAdded:Connect(playerAdded)

It didnt remove the accesories from the characters model tho

Remove the accessory on death?

When the players joins the game and when it respawns. Then it should return the “Wig” acessory again

Hmm… try using the native AddAccessory():

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Wig = ReplicatedStorage:WaitForChild("Wig")
local Players = game:GetService("Players")
 
local function playerAdded(player)
	player.CharacterAdded:Connect(function(character)
		local humanoid = character:WaitForChild("Humanoid")
		humanoid:RemoveAccessories()
		wait(5)

		local cloneWig = Wig:Clone()
		character:AddAccessory(cloneWig)
	end)
end
 
-- get existing players
for _, player in pairs(Players:GetPlayers()) do 
	playerAdded(player)
end

-- listen for new players
Players.PlayerAdded:Connect(playerAdded)

it didnt work, got an error from that

Can you be more specific: Can you please copy and paste the error for me?

“AddAccesory” is not a valid memeber of model

this is what i’m talking about

Oh shoot, my bad. It is a humanoid function :laughing:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Wig = ReplicatedStorage:WaitForChild("Wig")
local Players = game:GetService("Players")
 
local function playerAdded(player)
	player.CharacterAdded:Connect(function(character)
		local humanoid = character:WaitForChild("Humanoid")
		humanoid:RemoveAccessories()
		wait(5)

		local cloneWig = Wig:Clone()
		character.Humanoid:AddAccessory(cloneWig)
	end)
end
 
-- get existing players
for _, player in pairs(Players:GetPlayers()) do 
	playerAdded(player)
end

-- listen for new players
Players.PlayerAdded:Connect(playerAdded)

It doesnt really remove accesories but adds the wig after

Hmmm… this seems to be a deeper issue. Why don’t you share the .rblx file, and we will see what’s wrong.

Test.rbxl (60.1 KB)

For some reason, you need to de-sync the code to run the remove accessories function.
Here’s the code, it works now:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Wig = ReplicatedStorage:WaitForChild("Wig")
local Players = game:GetService("Players")
 
local function playerAdded(player)
	player.CharacterAdded:Connect(function(character)
		local humanoid = character:WaitForChild("Humanoid")
		wait()
		humanoid:RemoveAccessories()
		wait(5)
		
		humanoid:AddAccessory(Wig:Clone())
	end)
end
 
-- get existing players
for _, player in pairs(Players:GetPlayers()) do 
	playerAdded(player)
end

-- listen for new players
Players.PlayerAdded:Connect(playerAdded)

Thank you so much for your help!