How Do I make a startercharacter gamepass

Hello, so basically I wanted to make a starter character gamepass but I don’t know how to. I tried finding other posts and tutorials but can’t seem to find what I’m looking for. I’ve tried multiple things but can’t seem to get the result I’m trying to get.

Hi! Please let me know if this doesn’t work. :slight_smile:

  • First of you have to turn off so characters doesn’t automatically load in. (Do that under “Players”)
  • Now, add a playerAdded event in a serverScript in ServerScriptService.
  • Make a custom character and place it inside ReplicatedStorage (this will be our Gamepass character)
  • In that event check if they own the gamepass, if they do, clone the character we just made through scripting, assign the player’s Character to be that new clone, and put the clone in workspace
  • Make sure to add so if Humanoid.Died, connect a function that will spawn them again.
2 Likes

Thanks for the help. I’ll try doing this. I’ll reply if I’m facing issues.

Sorry I’m not very familiar with startercharacter but i tried this script and it wouldn’t work

local MarketPlaceService = game:GetService("MarketplaceService")
local PassID = 40131216 

game.Players.PlayerAdded:Connect(function(player)
	
	if MarketPlaceService:UserOwnsGamePassAsync(player.UserId, PassID) == false then
		
		game.ServerStorage.StarterCharacter:Clone().Parent  = player:WaitForChild("StarterCharacter")
	end
end)

Take a look at this thread! :slight_smile: How to make a certain roblox player will spawn as custom character when joined? - #14 by Jackscarlett

Edit: Just adapt it to your gamepass approach.

1 Like

Sorry, but I think you misunderstood what I’m trying to achieve. I’m trying to make a starter character for a person who owns a gamepass. I appreciate your efforts.

I edited your script a bit and this should work.

(You have to place the character into ReplicatedStorage and make sure its called StarterCharacter)

local MarketPlaceService = game:GetService("MarketplaceService")
local PassID = 40131216 
local StartChar = game:FindFirstChild("StarterCharacter")

game.Players.PlayerAdded:Connect(function(player)
	
	if MarketPlaceService:UserOwnsGamePassAsync(player.UserId, PassID) == true then
		
	local StartCharClone = StartChat:Clone()
	StartCharClone.Parent = game.StarterPlayer
	
	end
end)

Please let me know if you have problems

1 Like

It seems like you have a typo at

local StartCharClone = StartChat:Clone()

also it still doesn’t work btw the game has two models named startercharacter one in replicated storage and one in starterplayer but even though i tried removing the one in starterplayer it still doesn’t seem to work

Misusing StarterCharacter to change a single character’s appearance is both bootleg and bad practice. Please see other threads asking about the same topic:

Change the character model or appearance itself instead of relying on StarterCharacter. StarterCharacter should only be used if you need to change the way everyone’s character rig is constructed and initialised.

3 Likes

Sorry for the typos. I also didn’t define StartChar properly. I tried writing it in the actual DevForum which was the reason.

Are you getting any errors related to the script in Output? If so could you please put them inside here,

Also, make sure that this is a ServerScript preferably in ServerScriptService, and that the only StarterCharacter is in ReplicatedStorage.

This should be working but the player does have to reset for it to work:

local MarketPlaceService = game:GetService("MarketplaceService")
local PassID = 40131216 -- The Gamepass ID
local StartChar = game.ReplicatedStorage:WaitForChild("StarterCharacter") -- Defines the Morph/StarterCharacter

game.Players.PlayerAdded:Connect(function(Player)
	
	if MarketPlaceService:UserOwnsGamePassAsync(Player.UserId, PassID) == true then -- If the user has the Gamepass then

		local StartCharClone = StartChar:Clone() -- Clones the StarterCharacter
		StartCharClone.Parent = game.StarterPlayer -- Moves it into StarterPlayer
		
	end
end)

I have also included some notes to help you better understand what is happening

1 Like

So this does work and i appreciate your efforts and yes i do understand the script without the note so this doesn’t work for 2 Startercharacter so i did a minor edit to fix this here’s the full fixed script

local MarketPlaceService = game:GetService("MarketplaceService")
local PassID = 40131216 -- The Gamepass ID
local StartChar = game.ReplicatedStorage:WaitForChild("StarterCharacter") -- Defines the Morph/StarterCharacter
local StarterCharacter = game.StarterPlayer.StarterCharacter

game.Players.PlayerAdded:Connect(function(Player)
	

	if MarketPlaceService:UserOwnsGamePassAsync(Player.UserId, PassID) == true then -- If the user has the Gamepass then
		
		local StartCharacterDestroy = StarterCharacter:Destroy()--If the player Owns the gamepass then it deletes the startercharacter and replaces it with the gamepass startercharacter
		
		local StartCharClone = StartChar:Clone() -- Clones the StarterCharacter
		StartCharClone.Parent = game.StarterPlayer -- Moves it into StarterPlayer

	end
end)