Dual Wield Script not working?

Hi, I have tried to make a dual wield script but it’s not giving me the result I want:


Whereas I want it like this:

Here is my script parented to the tool:

script.Parent.Changed:Connect(function(c)
	if c == "Parent" and script.Parent.Parent:FindFirstChild("RightHand") ~= nil then
		local w = Instance.new("Weld")
		w.Parent = script.Parent.Parent:WaitForChild("RightHand")
		w.Part0 = w.Parent
		w.Part1 = script.Parent.Handle

		local w2 = Instance.new("Weld")
		w2.Parent = script.Parent.Parent:WaitForChild("LeftHand")
		w2.Part0 = w2.Parent
		w2.Part1 = script.Parent.Handle2
	end
end)

You will need to change the C0 and C1 which is the Weld offset in order for this to work.

Do you have an example on how to do this / could you explain to me on how I would do this?

Yes, you can set the offset by doing Weld.C0 = CFrame.new(Vector3Pos, Vector3Look), the C0 here is the Part0 offset. For more info, you can look at this following post.

I saw that post but it doesn’t actually explain how to use them, it only tells you what they are. Also, what does this mean?

Ok, so this is what I mean. CFrame.new() have two arguments, first is the position of the part and where will it point at. So if you do Position is infront player and LookAt is player HumanoidRootPart, the part will be infront of you and looking at you.

So how would I make it face the way that the player’s hand is facing?