How do I make so that the script the player different random morph from each forder each time they respawn for each team

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    To make it so that the player have different morph variant, making each player looking unique
  2. What is the issue? Include screenshots / videos if possible!
    Screenshot 2023-10-02 183222
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I have tried math.random(Character) but it didn’t work (The error is below), so I has to undo it. I haven’t found any solution yet
    After that, you should more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
    Here’s the script!
local Morphs = game:GetService('ServerStorage'):WaitForChild('Morphs') -- Looks for the "Morph" folder you've created earlier.
local visible = false
local recol = ''

function morph(plr, part, location, model, test)
	if plr ~= nil then
		if test == 'Morph' then
			if plr:FindFirstChild('Morph') == nil then
				local Folder = Instance.new('Folder')
				Folder.Name = 'Morph'
				Folder.Parent = plr
			end
		elseif test == 'Coat' then -- The "Coat" and "Pauld" statements can be completely ignored or removed without harming the script.
			if plr:FindFirstChild('Coat') == nil then
				local Folder = Instance.new('Folder')
				Folder.Name = 'Coat'
				Folder.Parent = plr
			end
		elseif test == 'Add' then
			if plr:FindFirstChild('Add') == nil then
				local Folder = Instance.new('Folder')
				Folder.Name = 'Add'
				Folder.Parent = plr
			end
		elseif test == 'Pauld' then
			if plr:FindFirstChild('Pauld') == nil then
				local Folder = Instance.new('Folder')
				Folder.Name = 'Pauld'
				Folder.Parent = plr
			end
		end
		local Folder = (test == 'Morph' and plr:FindFirstChild('Morph')
			or test == 'Coat' and plr:FindFirstChild('Coat')
			or test == 'Add' and plr:FindFirstChild('Add')
			or test == 'Pauld' and plr:FindFirstChild('Pauld'))
		if Folder:FindFirstChild(model) == nil then
			local g = location[model]:Clone()
			g.Parent = Folder
			for i, v in ipairs(g:GetChildren()) do
				if v:IsA("BasePart") then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = v
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse() * CJ
					local C1 = v.CFrame:inverse() * CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
				local Y = Instance.new("Weld")
				Y.Part0 = plr:FindFirstChild(part)
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, 0, 0)
				Y.Parent = Y.Part0
			end
			local h = g:GetChildren()
			for i = 1, # h do
				if h[i].className == "Part" or  h[i].className == "UnionOperation" or  h[i].className == "MeshPart" or  h[i].className == "WedgePart" then  
					h[i].Anchored = false
					h[i].CanCollide = false
				end
			end
		end
	end
end
local function RunThings(char,Model, test)
	pcall(function()
		if Model:findFirstChild("Head") then
			morph(char, 'Head', Model, "Head",test)

		end
		if Model:findFirstChild("Torso") then -- Looks for the body part models placed inside of the named folder you made.
			morph(char, 'Torso', Model, "Torso",test)
		end
	    if Model:findFirstChild("LeftArm") then
			morph(char, 'LeftArm', Model, "LeftArm",test)
		end
		if Model:findFirstChild("RightArm") then
			morph(char, 'RightArm', Model, "RightArm",test)
		end
		if Model:findFirstChild("LeftLeg") then
			morph(char, 'LeftLeg', Model, "LeftLeg",test)
		end
		if Model:findFirstChild("RightLeg") then
			morph(char, 'RightLeg', Model, "RightLeg",test)
		end
	end)
end

local function MorphUser(User,Team,Class,Morph,name)
	local MorphRoot = Morphs[Team][Class]:WaitForChild(Morph)					
	local Model = MorphRoot:Clone()
	local char = User.Character
	RunThings(char,Model,name)
end
local function Body(depth,height,width,Char)
	for _,v in pairs(Char.Humanoid:GetChildren()) do
		if v.ClassName == 'NumberValue' then
			if v.Name == 'BodyDepthScale' then -- Looks for any changes made to the depth, height and width variables.
				v.Value = depth
			elseif v.Name == 'BodyHeightScale' then
				v.Value = height
			elseif v.Name == 'BodyWidthScale' then					
				v.Value = width
			end
		end
	end
end
local function Finale(Char)
	for i,v in pairs(Char:GetChildren()) do
		if v:IsA('Accessory') or v:IsA('Hat') then
			v:Destroy()
		end
	end
end


Players.PlayerAdded:connect(function(Player)
	Player.CharacterAdded:connect(function(Character)
		wait(2)
		visible = false


		if Player.Team.Name == "Federal" then -- Changing these variables alter the morph functions entirely.
			Body(1,1,1,Character)
			MorphUser(Player,"Federal","Federal Army","Kepi [Type I] Enlisted Infantry Variant","Morph")
			Finale(Character)
		end
		
		if Player.Team.Name == "Rebel" then -- Changing these variables alter the morph functions entirely.
			Body(1,1,1,Character)
			MorphUser(Player,"Rebel","Rebel Army","Custom Rebel Varaint 2","Morph")
			Finale(Character)
        end
	end)
end)