It’s fairly simple, but requires lots of patience. Welding becomes a bit problematic and to my knowledge there isnt a plugin which allows you to weld with ease. This is my code:
local Players = game:GetService("Players")
local Model = game.ReplicatedStorage:WaitForChild("WeldModel")
local char = script.Parent
local plr = Players:GetPlayerFromCharacter(char)
local function WeldModel(plr,char)
plr.CharacterAppearanceLoaded:Wait()
local WeldModel = game.ReplicatedStorage:WaitForChild("WeldModel"):Clone()
local Weld = Instance.new("Weld")
local Part0 = WeldModel.PrimaryPart
local Part1 = char.Torso
Weld.Part0 = Part0
Weld.Part1 = Part1
Weld.C0 = Part0.CFrame * CFrame.Angles(math.rad(90),math.rad(-180) ,math.rad(90)) * CFrame.new(-0.5,-0.5,-0.5)
Weld.Parent = WeldModel
WeldModel.Parent = char
end
WeldModel(plr,char)
If I am not mistaken, your codes problem is around here.
The model is propably somewhere you cant really see, or it has already fallen of the map. To not run into these problems in the future, try welding first then, changing C0 and C1. Note: you will have to do lots of play testing if you want to get things right. This also may help you better understanding how welding works.