Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to change Players looks using a Rig mid-game?

So the explanation is kinda vague because I don't fully know what I'm doing, but I've got a Rig called "StarterCharacter" that is located in the "StarterPlayer" folder and I've got it so that the player's avatar is set to that Rig.

I'm trying to change the players avatar mid-game by editing the Rig and it changes the properties I want, but won't update the player's look.

local gate = script.Parent
local rigshirt = game.StarterPlayer.StarterCharacter.shirt
local rigtrousers = game.StarterPlayer.StarterCharacter.Trousers

gate.Touched:Connect(function()
	rigshirt.ShirtTemplate = "http://www.roblox.com/asset/?id=584017370"
	rigtrousers.PantsTemplate = "http://www.roblox.com/asset/?id=584017819"
end)

Any suggestions are appreciated :)

1 answer

✓ Accepted answer

You're changing the StarterCharacter. This gets put into a players character once they join. To change their shirt and pants. You'd need to find the players character and change it from their Character Model.

Hopefully this code will clear some stuff up. P.S - Put this into a default script. LocalScripts do not execute in Workspace.

Gate = script.Parent

Gate.Touched:Connect(function(hit)

	if hit and hit.Parent:FindFirstChild("Humanoid") then --This checks if the part that touched exists, then checks if it's a Player.

		local Shirt = hit.Parent:FindFirstChild("Shirt") --Finds Shirt.
		if not Shirt then --If there's no shirt. It creates a new one inside of the character. (Debugging)

			local CreateShirt = Instance.new("Shirt") 
			CreateShirt.Parent = hit.Parent
			CreateShirt.Name = "Shirt"
			CreateShirt.ShirtTemplate = "http://www.roblox.com/asset/?id=584017370" --Changes to selected Shirt.

		else --If there is a Shirt, It'll execute the following code.

			Shirt.ShirtTemplate = "http://www.roblox.com/asset/?id=584017370" --Changes to selected Shirt.

		end


		local Pants = hit.Parent:FindFirstChild("Pants") --Finds Pants.
		if not Pants then --If there's no pants. It creates a new one inside of the character. (Debugging)

			local CreatePants = Instance.new("Pants") 
			CreatePants.Parent = hit.Parent
			CreatePants.Name = "Pants"
			CreatePants.PantsTemplate = "http://www.roblox.com/asset/?id=584017819" --Changes to selected Pants.

		else --If there are pants, It'll execute the following code.

			Pants.PantsTemplate = "http://www.roblox.com/asset/?id=584017819" --Changes to selected Pants.

		end
	end

end)

Alternative (Without Debugging Code [If you want concise, fast code]):

Gate = script.Parent

Gate.Touched:Connect(function(hit)
	
	if hit and hit.Parent:FindFirstChild("Humanoid") then --This checks if the part that touched exists, then checks if it's a Player.
		
		local Shirt = hit.Parent:FindFirstChild("Shirt") --Finds Shirt.
		Shirt.ShirtTemplate = "http://www.roblox.com/asset/?id=584017370" --Changes to selected Shirt.

		local Pants = hit.Parent:FindFirstChild("Pants") --Finds Pants.
		Pants.PantsTemplate = "http://www.roblox.com/asset/?id=584017819" --Changes to selected Pants.

	end

end)

This discussion is preserved as it was. New answers, comments, and votes are closed.