So i made a morph script where you click a button on a GUI to weld the parts to your character and its not working it's popping up this error:
Infinite yield possible on 'Workspace.HannahToots:WaitForChild("UsingMorph")'
Also the error is on line 13.
"Stack Begin Script 'ServerScriptService.MainScript', Line 13 Stack End"
-- [[ SERVICES ]] --
RS = game:GetService('ReplicatedStorage')
SS = game:GetService('ServerStorage')
-- [[ SIDE VARIABLES ]] --
Remote = RS:WaitForChild('MorphRemote')
Morph = SS:WaitForChild('Morphy')
-- [[ MAIN SCRIPT ]] --
function MorphHandler(Player) -- player is automatically a given variable
local Character = Player.Character or Player.CharacterAdded:Wait()
if Character:WaitForChild('UsingMorph').Value == true then
Character.UsingMorph.Value = false
for _,limb in pairs(Character:GetChildren()) do
if limb:IsA('BasePart') then
limb.Transparency = 0
end -- check children class
end -- loop
-- delete morph
if Character:FindFirstChild('Chest') then Character.Chest:Destroy() end
if Character:FindFirstChild('Arm1') then Character.Arm1:Destroy() end
if Character:FindFirstChild('Arm2') then Character.Arm2:Destroy() end
if Character:FindFirstChild('Leg1') then Character.Leg1:Destroy() end
if Character:FindFirstChild('Leg2') then Character.Leg2:Destroy() end
elseif Character:WaitForChild('UsingMorph').Value == false then
Character.UsingMorph.Value = true
for _,limb in pairs(Character:GetChildren()) do
if limb:IsA('BasePart') then
limb.Transparency = 1
end -- check children class
end -- loop
local modelname = Morph:Clone()
if Player.Character:findFirstChild("Humanoid") ~= nil and Player.Character:findFirstChild("Morphy") == nil then
local g = modelname.Chest:Clone()
g.Parent = Player.Character
Plr.Character.UsingMorph.Value = true
local C = g:GetChildren()
for i=1, #C do
if C[i].className == "Costume" or "Union" then
local W = Instance.new("Weld")
W.Part0 = g.Middle
W.Part1 = C[i]
local CJ = CFrame.new(g.Middle.Position)
local C0 = g.Middle.CFrame:inverse()*CJ
local C1 = C[i].CFrame:inverse()*CJ
W.C0 = C0
W.C1 = C1
W.Parent = g.Middle
end
local Y = Instance.new("Weld")
Y.Part0 = Player.Character.Torso
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
h[i].Anchored = false
h[i].CanCollide = false
if Player.Character:findFirstChild("Humanoid") ~= nil and Player.Character:findFirstChild("Leg1") == nil then
local g = modelname.Leg1:Clone()
g.Parent = Player.Character
local C = g:GetChildren()
for i=1, #C do
if C[i].className == "Costume" then
local W = Instance.new("Weld")
W.Part0 = g.Middle
W.Part1 = C[i]
local CJ = CFrame.new(g.Middle.Position)
local C0 = g.Middle.CFrame:inverse()*CJ
local C1 = C[i].CFrame:inverse()*CJ
W.C0 = C0
W.C1 = C1
W.Parent = g.Middle
end
local Y = Instance.new("Weld")
Y.Part0 = Player.Character["Left Leg"]
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
h[i].Anchored = false
h[i].CanCollide = false
if Player.Character:findFirstChild("Humanoid") ~= nil and Player.Character:findFirstChild("Leg2") == nil then
local g = modelname.Leg2:Clone()
g.Parent = Player.Character
local C = g:GetChildren()
for i=1, #C do
if C[i].className == "Costume" then
local W = Instance.new("Weld")
W.Part0 = g.Middle
W.Part1 = C[i]
local CJ = CFrame.new(g.Middle.Position)
local C0 = g.Middle.CFrame:inverse()*CJ
local C1 = C[i].CFrame:inverse()*CJ
W.C0 = C0
W.C1 = C1
W.Parent = g.Middle
end
local Y = Instance.new("Weld")
Y.Part0 = Player.Character["Right Leg"]
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
h[i].Anchored = false
h[i].CanCollide = false
if Player.Character:findFirstChild("Humanoid") ~= nil and Player.Character:findFirstChild("Arm1") == nil then
local g = modelname.Arm1:Clone()
g.Parent = Player.Character
local C = g:GetChildren()
for i=1, #C do
if C[i].className == "Costume" then
local W = Instance.new("Weld")
W.Part0 = g.Middle
W.Part1 = C[i]
local CJ = CFrame.new(g.Middle.Position)
local C0 = g.Middle.CFrame:inverse()*CJ
local C1 = C[i].CFrame:inverse()*CJ
W.C0 = C0
W.C1 = C1
W.Parent = g.Middle
end
local Y = Instance.new("Weld")
Y.Part0 = Player.Character["Left Arm"]
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
h[i].Anchored = false
h[i].CanCollide = false
if Player.Character:findFirstChild("Humanoid") ~= nil and Player.Character:findFirstChild("Arm2") == nil then
local g = modelname.Arm2:Clone()
g.Parent = Player.Character
local C = g:GetChildren()
for i=1, #C do
if C[i].className == "Costume" then
local W = Instance.new("Weld")
W.Part0 = g.Middle
W.Part1 = C[i]
local CJ = CFrame.new(g.Middle.Position)
local C0 = g.Middle.CFrame:inverse()*CJ
local C1 = C[i].CFrame:inverse()*CJ
W.C0 = C0
W.C1 = C1
W.Parent = g.Middle
end
local Y = Instance.new("Weld")
Y.Part0 = Player.Character["Right Arm"]
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
h[i].Anchored = false
h[i].CanCollide = false
end -- check if using morph
end -- function end
end
end
end
end
end
end
end
end
end
end
-- [[ CONNECTIONS ]] --
Remote.OnServerEvent:Connect(MorphHandler)
What am i doing wrong? I've checked in play mode the "UsingMorph" value is in the character from the GUI giving it to player on click but still the error shows up.

2 comments
are you giving the UsingMorph value locally and not serversided?
No its serversided.