How do I load a custom character onto the player on join?

this is really inefficient, like uri said just clone the character and set the player’s character using Player.Character

Then try the morph script as toadle suggested

Instead of using a StarterCharacter clone the model and set it to be players character manually (basically just make your own spawning function)

That just made me spawn like this

image

Try this script as toadle suggested

Are you in first person or is your character just not there?

You will have to set the character position and parent manually with this method, just:

character.PrimaryPart.Position= --put your spawn position here, if it's on the floor you need a Y offset
character.Parent= workspace 

try practicing Model:PivotTo(CFrame) instead of that

Also works, probably makes more sense too, just force of habit

Not there, Also when you DO move it to the character, its there but its just infront of your character instead of you being the character.

Can you show the piece of code that spawns in the character? I’ve not had that happen

Here (its located in the StarterCharacterScripts so it does that when they spawn)
image

You can’t change the player character from a LocalScript, must be done on a server script

game.Players.PlayerAdded:Connect(function(player)
local newCharacter= --[<code where you get the desired character]]:Clone()

newCharacter.Name= player.Name --Not necessary just for cleanness sake
newCharacter.PrimaryPart.Position= --The spawn position (not the player's old character position)

player.Character= newCharacter
newCharacter.Parent=workspace

end)

This code doesn’t account for when the player dies, for that just wrap it in a function and call the function when the player diea

that was a server script, but ill try this instead

It ended up loading for half a second then reloaded the original character

Also the character in general is unanimated

Ah, i mean it still didn’t work because because instead of setting the player.Character property you had a variable that held the character and then changed it to the newCharacter, you changed the variable instead of changing the actual property

try this

local Players = game:GetService("Players")

local YourCustomCharacter = workspace:FindFirstChild("CustomChar") -- Change with your Character
local CustomHumanoid = YourCustomCharacter:FindFirstChildOfClass("Humanoid")

Players.PlayerAdded:Connect(function(plr)
	local Char = plr.Character or plr.CharacterAdded:Wait()
	
	local Humanoid = Char:FindFirstChildOfClass("Humanoid")
	
	Humanoid:ApplyDescription(CustomHumanoid.HumanoidDescription,Enum.AssetTypeVerification.Default)
end)

make sure your custom character has Humanoid and HumanoidDescription as Humanoid’s Child

Oh yeah, forgot about that, i think you have to go to the Players tab, and tick off CharacterAutoLoads for it to work, because Roblox will spawn the regular character while you’re setting it yourself

image
image
uhh…

Ohh I’ll have to try that one, thanks.