It’s because it’s hard to help you without you using codeblocks. At the beginning and end of your script, please three of these ` characters, and it’ll turn it into a readable codeblock.
The reason the CFrame isn’t positioned as you intended it is because you’re using a Weld and setting the C0 to the HumanoidRootPart’s CFrame. Which is essentially the same as doing:
HumanoidRootPart.CFrame:toObjectSpace(arm.CFrame)
You need to set the Weld C0 to CFrame.new(0, 0, 0) if you want it to be centred to the arm’s centre point at 0,0,0.
Can you show me what you’ve written in your updated code? Can you explain what doesn’t work? Can you explain what you mean by 0, 0, 0?
Read the rules of Scripting Support, if you want help I and others are more than happy to provide it but we can’t do much unless you provide relevant information.