local module = {}
function WeldParts(parts)
local prev
for i = 1,#parts do
if (parts[i]:IsA("BasePart")) then
if (prev ~= nil)then
local weld = Instance.new("Weld")
weld.Part0 = prev
weld.Part1 = parts[i]
weld.C0 = prev.CFrame:inverse()
weld.C1 = parts[i].CFrame:inverse()
weld.Parent = prev
end
prev = parts[i]
end
end
end
function module:FormWeldToChar(char, pos, model)
local ready = false
local posp = nil
local forweldparts = {}
for _, v in pairs(char:GetDescendants()) do
if v.Name == pos and v:IsA("BasePart") then
ready = true
posp = v
end
end
if ready == true then
posp.Anchored = true
wait()
model:SetPrimaryPartCFrame(posp.CFrame)
for _, d in pairs(model:GetDescendants()) do
if d:IsA("BasePart") and d.Name ~= "tref" then
table.insert(forweldparts, d)
table.insert(forweldparts, posp)
end
end
wait()
WeldParts(forweldparts)
for i = 1, #forweldparts do
forweldparts[i].Parent = char
end
wait()
model:Destroy()
for i = 1, #forweldparts do
forweldparts[i].Anchored = false
end
end
end
return module
that is the module, it works fine in small games, however when in large games it bugs out and the offset of the weld gets messed up, the module is called like so;
Module:FormWeldToChar(CHAR, "Torso", Model_Clone)
I would like help revising this module so the offset of the model-parts don't get messed up when welded, all the parts of the model clone are positioned and the "tref" functions as a canvas for easy-placement.
