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

Why will this welding process not work?

Asked by
Chronomad 180
8 years ago

I have this script that should cycle through a list of body parts (In a rather clunky manner) And weld a set of parts to the specified body part. However, When the script is activated, Nothing Happened

local OB = PlayerAttire:WaitForChild("OutfitBottom")

Previously, this line used FindFirstChild which resulted in OB coming back as nil. OutfitBottom is a StringValue within a folder named Outfit.

Sorry for the gross code at the bottom, I'm gonna put that list of body parts into a table or something. Thanks for any help!

wait(.1)
local player
while not player do
    wait()
    player = game:GetService('Players').LocalPlayer

end
local PE = Instance.new("Model")
PE.Name = ("PlayerEquipment")


function weld(p1,p2,c0)
    local w = Instance.new("Weld",p1)
    w.Part0 = p1
    w.Part1 = p2
    w.C0 = c0 or p1.CFrame:inverse() * p2.CFrame
    return w
end

local PD = player.PlayerGui:FindFirstChild("PlayerData")
local PlayerAttire = PD:FindFirstChild("Outfit")
local WD = PD:FindFirstChild("WeldData")

local Weldee = PD.Weldee


function PerformWeld()

    local Outfit = game.Lighting.OutfitStorage:FindFirstChild(Weldee.Value):Clone()
    local char = player.Character or player.CharacterAdded:wait()
    local CurrentSection = Outfit:FindFirstChild(WD.Value.."Components"):Clone()
    CurrentSection.Parent = char

    for _,v in pairs(CurrentSection:GetChildren()) do
        if v.ClassName == "Part" or v.ClassName == "UnionOperation" then
            v.Anchored = true
        end
    end

    CurrentSection.Parent = PE

    for _,v in pairs(CurrentSection:GetChildren()) do
        if v.ClassName == "Part" or v.ClassName == "UnionOperation" then
            if v ~= CurrentSection["ArmorCore"] then
                weld(v, CurrentSection["ArmorCore"])
            end
        end
    end

    local CurrentSectionWeld = weld(CurrentSection["ArmorCore"], char[WD.Value], CFrame.new())

    for _,v in pairs(CurrentSection:GetChildren()) do
        if v.ClassName == "Part" or v.ClassName == "UnionOperation" then
            v.Anchored = false
            v.CanCollide = false
        end
    end
end



function SetOutfit()
    local OB = PlayerAttire:WaitForChild("OutfitBottom")
    local OT = PlayerAttire:WaitForChild("OutfitTop")
     OB.Value = ("Standard Military Platelegs")
     OT.Value = ("Standard Military Platebody")
    player.PlayerGui.TeamAButton:Destroy()
    player.PlayerGui.TeamBButton:Destroy()
end

SetOutfit()
    wait(0.5)
    PE.Parent = player.Character
    local SP = game.Lighting.SwordPlaySystemMK2:Clone()
    SP.Parent = player.PlayerGui
    SP.Disabled = false
    local OT = PlayerAttire:FindFirstChild("OutfitTop")
    Weldee.value = OT.Value
    WD.Value = ("Chest")
    PerformWeld()
    wait(0.1)
    WD.Value = ("Torso")
    PerformWeld()
    wait(0.1)
    WD.Value = ("Pelvis")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftArm")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightArm")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftForearm")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightForearm")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftElbow")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightElbow")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftShoulder")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightShoulder")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightHand")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftHand")
    PerformWeld()
    wait(0.1)

    Weldee.value = PlayerAttire.OutfitBottom.Value

    WD.Value = ("LeftThigh")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftCalf")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftKnee")
    PerformWeld()
    wait(0.1)
    WD.Value = ("LeftFoot")
    PerformWeld()
    wait(0.1)
    WD.Value = ("Pelvis")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RighttThigh")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightCalf")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightKnee")
    PerformWeld()
    wait(0.1)
    WD.Value = ("RightFoot")
    PerformWeld()
    wait(0.1)

Answer this question