Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Hello so could someone explain or help me solve this bug?

Asked by 2 years ago

so i'm helping some friends of mine in a star wars game i made the auto morph by team and rank but now the parts are floating if someone can explain or help me solve thank you

here is the script

local Players = game:GetService('Players')
local Morphs = game:GetService('ServerStorage'):WaitForChild('Morphs') 
local visible = false
local GroupID = ************
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("UpperTorso") then -- Looks for the body part models placed inside of the named folder you made.
            morph(char, 'UpperTorso', Model, "UpperTorso",test)
        end
        if Model:findFirstChild("LowerTorso") then
            morph(char, 'LowerTorso', Model, "LowerTorso",test)
        end
        if Model:findFirstChild("LeftUpperArm") then
            morph(char, 'LeftUpperArm', Model, "LeftUpperArm",test)
        end
        if Model:findFirstChild("RightUpperArm") then
            morph(char, 'RightUpperArm', Model, "RightUpperArm",test)
        end
        if Model:findFirstChild("LeftLowerArm") then
            morph(char, 'LeftLowerArm', Model, "LeftLowerArm",test)
        end
        if Model:findFirstChild("RightLowerArm") then
            morph(char, 'RightLowerArm', Model, "RightLowerArm",test)
        end
        if Model:findFirstChild("LeftHand") then
            morph(char, 'LeftHand', Model, "LeftHand",test)
        end
        if Model:findFirstChild("RightHand") then
            morph(char, 'RightHand', Model, "RightHand",test)
        end
        if Model:findFirstChild("LeftUpperLeg") then
            morph(char, 'LeftUpperLeg', Model, "LeftUpperLeg",test)
        end
        if Model:findFirstChild("RightUpperLeg") then
            morph(char, 'RightUpperLeg', Model, "RightUpperLeg",test)
        end
        if Model:findFirstChild("LeftLowerLeg") then
            morph(char, 'LeftLowerLeg', Model, "LeftLowerLeg",test)
        end
        if Model:findFirstChild("RightLowerLeg") then
            morph(char, 'RightLowerLeg', Model, "RightLowerLeg",test)
        end
        if Model:findFirstChild("LeftFoot") then
            morph(char, 'LeftFoot', Model, "LeftFoot",test)
        end
        if Model:findFirstChild("RightFoot") then
            morph(char, 'RightFoot', Model, "RightFoot",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
local function Finale0(Char)
    for i,v in pairs(Char:GetChildren()) do
        if v.ClassName == 'MeshPart' or v.ClassName == 'n/a' then
            v.Transparency = 1
            if v:FindFirstChild('n/a') then
                v.face:remove()
            end
        end
    end
end
local function Finale1(Char)
    for i,v in pairs(Char:GetChildren()) do
        if v.ClassName == 'MeshPart' or v.ClassName == 'Part' then
            v.Transparency = 1
            if v:FindFirstChild('face') then
                v.face:remove()
            end
        end
    end
end
local function Finale2(Char)
    for i,v in pairs(Char:GetChildren()) do
        if v.ClassName == 'MeshPart' or v.ClassName == 'Part' and v.Name ~= 'Head' or v.Name ~= 'LeftHand' or v.Name ~= 'RightHand' then
            v.Transparency = 1
        end
    end
end
local function Head(head,Char)
    for _,v in pairs(Char.Humanoid:GetChildren()) do
        if v.ClassName == 'NumberValue' then
            if v.Name == 'HeadScale' then
                v.Value = head
            end
        end
    end
end

Players.PlayerAdded:connect(function(Player)
    Player.CharacterAdded:connect(function(Character)
        wait(2)
        visible = false
        local function getRank ()
            return Player:GetRankInGroup(GroupID)
        end
        local Rank = getRank()

        if Rank == 255 then
                Body(1,1,1,Character)
                MorphUser(Player,"Rank","Teste","Folder","Morph")
                Finale(Character)
                Finale1(Character)
            end
        if Rank == 2 then
            if Player.TeamColor == BrickColor.new("Earth green") then
                Body(1,1,1,Character)
                MorphUser(Player,"Rank","Test","Dark","Morph")
                Finale(Character)
                Finale1(Character)
            end 
        end 
    end)
end)

Answer this question