You can write your topic however you want, but you need to answer these questions:
-
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 -
What is the issue? Include screenshots / videos if possible!
-
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)