Script not changing player's avatar

Try placing the character model in ReplicatedStorage rather than ServerStorage

Alright, I’ll try that and let ya know

Nope, same thing happens. Didn’t work.

Are you getting any errors at all?

Nothing in the console, nothing at all

It may be a problem with the model itself, considering that it’s working fine on my end when using the base of your code on a simple dummy model.

Hm, I’ll try it with a dummy and see if that works. If it does, I know it’s something with the model.

Hm, doesn’t work with the dummy either.

What code did you use for it? Might be how I’m using it.

local Players = game:GetService("Players")
local characterSet = false

--

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		if characterSet then return end
		characterSet = true
		
		local cf = character.PrimaryPart.CFrame
		character:Destroy()

		player.Character = game.ReplicatedStorage.StarterCharacter:Clone()
		player.Character:SetPrimaryPartCFrame(cf)
		player.Character.Parent = workspace
	end)
end)

Hm, just tried it out on a different game, works just fine. Might be how I determine when the player’s team is changed.

But wait, if I have a team change thing, how would I do that without the character constantly changing?

Character constantly changing?

because it’s adding a different character to the player, meaning it would loop.

Just add an if statement to determine whether the character was already set, much like I’ve done above

What about if you reset your character?

Change the state back to false when the player dies

The problem with that is it’s a SERVER script. So it wouldn’t do it for each individual player.

A simple solution would be to store the players with their state inside of a table

e.g when applying this on my above code

local Players = game:GetService("Players")
local characterStates = {}

--

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
        if characterStates[player.Name] then return end
		characterStates[player.Name] = true
		
		local cf = character.PrimaryPart.CFrame
		character:Destroy()

		player.Character = game.ReplicatedStorage.StarterCharacter:Clone()
		player.Character:SetPrimaryPartCFrame(cf)
		player.Character.Parent = workspace

        character:WaitForChild("Humanoid").Died:Connect(function()
            characterStates[player.Name] = false
        end)
	end)
end)

As far as I know, you can’t change an avatar like that (and I may be wrong in here but I also tried this kind of stuff and it is just meh). Deleting a character will cause issues with controls and even more. The character of a player cannot be changed if you do so.

Either try HumanoidDescription and Humanoid:ApplyDescription(HumanoidDescription)
or even weld all the parts of your SCP uniform together to the weld them to the limb that it must be connected to…