Equip different skins for part in Character

Sorry for the weird title.

  1. What do you want to achieve? What I want to make is an equipping system where you equip different skins. It’s hard to explain but in the roblox-game Pogo Simulator you can see what I mean, if you play it and go to shop you see diffent Pogo’s you can buy and then sit on. That’s what I want to achieve.

  2. What solutions have you tried so far? I searched on DevForum

Any help is appreciated!

It depends on how you set up the player on the pogo, I have a game that has skins and it just replaces the model by trying to find the model by using a string value of it’s name

Step One

Setting up

Create your attribute or string value (you can data store for the player’s next session) and set the current value to the default skin or whichever skin they equipped if you saved it

local skin = Instance.new(StringValue,plr)|
skin.Name = Skin
skin.Value = (default skin or saved skin)

Step Two

Giving the skin

You can use any system you want like a shop, inventory, etc. and set the skin value that you created to whichever skin the player equipped

image Shop

imageShop UI

I set up a button that uses a Local Script to capture the click event then fire a Remote Event to be able to change the skin value to the name of the button (whatever skin it is), so it’s much more efficient via a Server Script

image

script.Parent.RemoteEvent.OnServerEvent:Connect(function(plr)
	plr.Skin.Value = script.Parent.Parent.Name
	plr.Character.Humanoid.Health = 0
end)

Step Three

Equipping the skin

As you saw in the script before, I killed the player,because it’ll fire my racket setting up script that I use when the player loads in, so that I don’t need to make a complicated skin equipping system

game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local Torso = char:WaitForChild("Right Arm")
		local racket0 = game.ServerStorage.Rackets:FindFirstChild(plr.Skin.Value):Clone()
		local grip = racket0:FindFirstChild("Handle")
		racket0.Parent = char
		local Motor6D= Instance.new("Motor6D",Torso)
		Motor6D.Part0 = Torso
		Motor6D.Part1 = grip
		Motor6D.C0 = CFrame.new(0,-1,0)
		if plr:FindFirstChild("ServeType") or plr:FindFirstChild("Power") then
			plr.Power.Value = 1
			plr.ServeType.Value = false
		end
	end)
end)

Final Step: Putting it all together

I will try it later and tell if it works. Looks promising!