How do I make a dual wield item with R6

I’m trying to make a dual wield item (R6) and I’ve tried using welds but the item ends up inside the player’s arm. Is there any way to make it so it ends up at the player’s hand (without R15)?

Any help would be appreciated!

You’ll need to weld the unused arm to the handle of the tool.

I’m bad at welding so what I’d recommend is that you make a fakearm with the 2nd item welded to the fakearm, then upon equip welding the fake arm to the real arm.

I made this function last month, it creates toolgrips identical to that of the ones Roblox makes for Right Hand

local function CreateGripOnAnyPart(part0: Part, part1: Part, c1: CFrame, name: string): Motor6D
    --creates a grip that matches Roblox's grip standard. 

    local Joint = Instance.new("Motor6D")
    Joint.Name = name
    Joint.Part0 = part0
    Joint.Part1 = part1
    
    --Calculate the C0 based off the local position of Part0 and subtracting half of the Y axis from it.
    local c0 do
        local HALF_SIZE = part0.Size.Y / 2
        c0 = CFrame.new(0, -HALF_SIZE, 0) * CFrame.fromOrientation(-math.pi/2, 0, 0)
    end

    Joint.C0 = c0
    Joint.C1 = c1

    Joint.Parent = part0
    return Joint
end

Just use that to make the other tool grip when you equip it. Part0 is the hand you want to equip to, Part1 is the handle, and C1 is the tool’s Grip property

local LeftHandGrip

Tool.Equipped:Connect(function()
  local Character = script.Parent

  local JoinPart = if Character.Humanoid.RigType == Enum.HumanoidRigType.R15 then "LeftHand" else "Left Arm"
  LeftGrip = CreateGripOnAnyPart(Character[JoinPart], Tool.Left.Handle, Tool.Grip, "LeftGrip")
end)

Tool.Unequipped:Connect(function()
  if LeftGrip then
    LeftGrip = LeftGrip:Destroy() --make sure to memory clean this by setting it to nil
  end
end)