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

How do I make it so a 4 random players are picked, and it changes their clothes, all differently?

assets={}
    assets.Shirt{90415298,114883953,140974162,81050287,112047296,92448971} --Shirts
    assets.Pants{65160698,89224181,67492557 } 
    assets.Hats= game.Lighting.Hats:GetChildren() -- hats go in a model under lighting called Hats

player =  game.Players.LocalPlayer -- gets the player
a = player .Character:GetChildren() -- Gets parts used for cleaning

function Clear() -- Removes hats Character meshes shirts and pants also T-shirts
for xX = 1,#a do
    if a[xX].ClassName=="Hat" or a[xX].ClassName=="CharacterMesh" or a[xX].ClassName=="Shirt" or  a[xX].ClassName=="Pants" or a[xX].ClassName=="ShirtGraphic" then
        a[xX]:Destroy()

    elseif a[xX].ClassName=="Part" and a[xX].Name~="HumanoidRootPart" then a[xX].Transparency = 0 
     end
    end
  end

Clear() -- Cleans the player
wait()
Shirt = Instance.new("Shirt",player.Character) shirts.Name = "Shirts"
pants = Instance.new("Pants",player.Character) pants.Name = "Pants"
hat = assets.Hats[math.random(1,#assets.Hats)]:Clone()
Shirt.ShirtTemplate = "rbxassetid://" .. assets.Shirt[math.random(1,#assets.Shirt)]
pants.PantsTemplate = "rbxassetid://" .. assets.Pants[math.random(1,#assets.Pants)]
hat.Parent = player.Character 

1 answer

PUT THIS SCRIPT IN A NORMAL SCRIPT.

Your main problem is the fact that you're using a localscript, thus affecting every player (assuming that the script is automatically placed in the players).

Another problem was that you used the incorrect variable name at lines 21 ("shirts") and there was a space between the the dot and word player in line 7.

Script order (so you can see what I did where and how): Lines 1 - 6: Creating variables which we will need later. Lines 8 - 16: Creating a function to 'clean' the player. The function parameter is the player, which will be passed to the function when called. Lines: 18 - 36: Creating a function to pick 4 players. The players must have a Character. The function checks if the same person isn't picked twice by repicking if it finds that that person had already been picked before. Lines 38 - 50: Here we just combine our functions and variables to (in order) 1) get the players, 2) 'clean' them, 3) dress them.

local amountOfPlayers = 4 -- how many players will be picked
local assets = {
	["Shirt"] = {90415298,114883953,140974162,81050287,112047296,92448971};
	["Pants"] = {65160698,89224181,67492557 };
	["Hats"] = game.Lighting.Hats:GetChildren();
}

function Clear(x) -- Removes hats Character meshes shirts and pants also T-shirts
	for _,v in pairs(x.Character:GetChildren()) do
		if v:IsA("Hat") or v:IsA("CharacterMesh") or v:IsA("Shirt") or  v:IsA("Pants") or v:IsA("ShirtGraphic") then
			v:Destroy()
		elseif v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then 
			v.Transparency = 0 
		end
	end
end

function pick(amount)
	local players = {}
	local already = false
	repeat 
		wait()
		local player = game:GetService("Players"):GetPlayers()[math.random(1, #game:GetService("Players"):GetPlayers())]
		for _,v in pairs(players) do
			if player == v then
				already = true
				break
			end
		end
		if not already then
			table.insert(players, player)
		end
		already = false
	until #players == amount
	return players
end

local people = pick(amountOfPlayers)
for _,v in pairs (people) do
	Clear(v)
	local Shirt = Instance.new("Shirt", v.Character) 
	Shirt.Name = "Shirt"
	Shirt.ShirtTemplate = "rbxassetid://" .. assets.Shirt[math.random(1, #assets.Shirt)]
	
	local pants = Instance.new("Pants", v.Character) 
	pants.Name = "Pants"
	pants.PantsTemplate = "rbxassetid://" .. assets.Pants[math.random(1, #assets.Pants)]
	
	assets.Hats[math.random(1, #assets.Hats)]:Clone().Parent = v.Character
end

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