i'm using a weld where it welds to the HumanoidRootPart only if input is detected and the problem here is that while your moving and spamming equip and unequip button, the object starts to teleport around and the weld just breaks even when you stand still it is still broken.
Equipping
--|Services|--
local replicatedStorage = game:GetService('ReplicatedStorage')
--|RemoteFunction|--
local remoteFunction = replicatedStorage.RemoteFunction
--|Weld|--
local weld = Instance.new('Weld')
--|Book|--
local openBook = replicatedStorage.CloverBookEarth
--|Book Clone|--
local bookClone = openBook:Clone()
--|Function|--
function remoteFunction:OnServerInvoke(player)
local character = player.Character
bookClone.Parent = workspace
bookClone.Name = player.Name .."'s Book"
bookClone.Spine.CFrame = character.HumanoidRootPart.CFrame * CFrame.new(-2,1,-3) * CFrame.Angles(math.rad(0),math.rad(90),math.rad(-90)) * CFrame.Angles(math.rad(-15),0,0)
weld.Parent = bookClone.PrimaryPart
weld.C0 = character.HumanoidRootPart.CFrame:inverse()
weld.C1 = bookClone.Spine.CFrame:inverse()
weld.Part0 = character.HumanoidRootPart
weld.Part1 = bookClone.Spine
end
UnEqupping
--|Services|--
local replicatedStorage = game:GetService('ReplicatedStorage')
--|RemoteFunction|--
local remoteFunction = replicatedStorage.RemoteFunction2
--|Function|--
function remoteFunction:OnServerInvoke(player)
local openBook = game.Workspace.CloverBookEarth
openBook.Parent = replicatedStorage
end
