Hello scripting helpers, I am really confused with welding using scripts, here's an attempt I tried to make in ROBLOX studio.
function weld() local human = workspace.Player:FindFirstChild("Humanoid") local w = Instance.new('Weld', workspace) w.Part0 = human.Head w.Part1 = Instance.new('Part', workspace) end weld()
The output shows nothing, and I can't find the error on my code, also I have tried it with local and normal scripts.
You can do this a bit easier so you don't have to find the relative values:
function Weld(x,y) local W = Instance.new("Weld") W.Part0 = x W.Part1 = y local CJ = CFrame.new(x.Position) local C0 = x.CFrame:inverse()*CJ local C1 = y.CFrame:inverse()*CJ W.C0 = C0 W.C1 = C1 W.Parent = x end function Get(A) if A.className == "Part" then Weld(script.Parent.Handle, A) A.Anchored = false else local C = A:GetChildren() for i=1, #C do Get(C[i]) end end end function Finale() Get(script.Parent) end Finale()
if you want it in a tool, do this:
function Weld(x,y) local W = Instance.new("Weld") W.Part0 = x W.Part1 = y local CJ = CFrame.new(x.Position) local C0 = x.CFrame:inverse()*CJ local C1 = y.CFrame:inverse()*CJ W.C0 = C0 W.C1 = C1 W.Parent = x end function Get(A) if A.className == "Part" then Weld(script.Parent.Handle, A) A.Anchored = false else local C = A:GetChildren() for i=1, #C do Get(C[i]) end end end function Finale() Get(script.Parent) end script.Parent.Equipped:connect(Finale) script.Parent.Unequipped:connect(Finale) Finale()