I want the arms to be like the character is holding the "tool" in front of him but right now it works and all but it's dependant on where your arms are when the modulescript is called, Like if i would be falling from the sky my arms would not be as I would want them too. They would be all over the place.

This is how I would want them to be all the time, a.k.a how i've drawn the red part: https://imgur.com/a/08ClqcM

This is how they are currently if your character like jumps when the modulescript is called. https://gyazo.com/6b46d5ec3d45615a497c316d884c4b1e

Server script calling the modulescript:

local function SetupBackpacksAndTools(player)
	local Data = GetPlayerData(player)
	local Backpack = Data["Backpack"]
	local Tool = Data["Tool"]
	
	local NewTool = game.ReplicatedStorage.Tools[Tool]:Clone()
	local NewBackpack = game.ReplicatedStorage.Backpacks[Backpack]:Clone()
	
	player.Character:FindFirstChild("RightUpperArm").Name = "RightUpperArm1"
	player.Character:FindFirstChild("LeftUpperArm").Name = "LeftUpperArm1"
	
	WeldUtil.Location(player, NewBackpack, player.Character)
	WeldUtil.SetToolLocation(player, NewTool, player.Character)
	
	NewTool.Parent = player.Character
	NewBackpack.Parent = player.Character
end

Modulescript:

function Weld:SetToolLocation(Tool, char)
	local ArmCFrame = require(script:WaitForChild("ArmCFrame"))
	
	for i,v in pairs(Tool:GetChildren()) do -- welds the tool to the arms.
		if v:IsA("Model") then
			local weld = Instance.new("Weld", v.PrimaryPart)
					
			weld.Part0 = v.PrimaryPart
			weld.Part1 = char:WaitForChild("RightHand")
			
			weld.C0 = CFrame.new(1.5,0,-0.5) + ArmCFrame["Vacuums"][Tool.Name][1]
			weld.C1 = CFrame.fromEulerAnglesXYZ(-0.8, 4.1, -0)
			
			char.LeftUpperArm1.LeftShoulder.C1 = ArmCFrame["Arms"].LeftShoulderC1
			char.LeftUpperArm1.LeftShoulder.C0 = ArmCFrame["Arms"].LeftShoulderC0

			char.RightUpperArm1.RightShoulder.C1 = ArmCFrame["Arms"].RightShoulderC1
		end
	end
end