So I found a solution basically, just need some adjustments but this is the edited version of the code, for anyone who may be in need of this:
wait()
local plr = game.Players.LocalPlayer
local char = plr.Character
if not char or not char.Parent then
char = plr.CharacterAdded:wait()
end
local torso = char:WaitForChild("Torso")
local camera = game.Workspace.CurrentCamera
local tween = game:GetService("TweenService")
updateSpeed = 0.1
local humanoid = char:WaitForChild("Humanoid")
local rs = torso:WaitForChild("Right Shoulder")
local hrp = char:WaitForChild("HumanoidRootPart")
local head = char:WaitForChild("Head")
local ls = torso:WaitForChild("Left Shoulder")
local neck = torso:WaitForChild("Neck")
local mouse = plr:GetMouse()
local orginalC0 = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
local welds = nil
function UpOrDown(LookVector)
local LookVector = LookVector.Unit
local UpVector = Vector3.new(0, 1, 0)
return LookVector:Dot(UpVector)
end
game:GetService("RunService").RenderStepped:Connect(function()
if not char:FindFirstChildOfClass("Tool") then
for v7, v8 in pairs(char:GetDescendants()) do
if v8:IsA("CharacterMesh") and v8.BodyPart == Enum.BodyPart.LeftArm then
v8.Parent = char;
end
end
for v9, v10 in pairs(char:GetDescendants()) do
if v10:IsA("CharacterMesh") and v10.BodyPart == Enum.BodyPart.RightArm then
v10.Parent = char;
end
end
game:GetService("TweenService"):Create(ls, TweenInfo.new(updateSpeed), {
C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.pi / 2, 0)
}):Play()
game:GetService("TweenService"):Create(ls, TweenInfo.new(updateSpeed), {
C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, -math.pi / 2, 0)
}):Play()
game:GetService("TweenService"):Create(neck, TweenInfo.new(updateSpeed), {
C0 = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
}):Play()
return
end
if char:FindFirstChildOfClass("Tool") then
local la = char:FindFirstChildOfClass("Tool"):FindFirstChild("LeftArm")
local ra = char:FindFirstChildOfClass("Tool"):FindFirstChild("RightArm")
if la and ra then
if la.Value then
char:FindFirstChild("Left Arm").LocalTransparencyModifier = 0
else
char:FindFirstChild("Left Arm").LocalTransparencyModifier = 1
end
if ra.Value then
char:FindFirstChild("Right Arm").LocalTransparencyModifier = 0
else
char:FindFirstChild("Right Arm").LocalTransparencyModifier = 1
end
end
else
char:FindFirstChild("Left Arm").LocalTransparencyModifier = 1
char:FindFirstChild("Right Arm").LocalTransparencyModifier = 1
end
local cameraDot = UpOrDown(head.CFrame.LookVector)
if rs then
game:GetService("TweenService"):Create(rs, TweenInfo.new(updateSpeed), {
C0 = CFrame.new(1, 0.5 - cameraDot, 1 * (cameraDot * -1)) * CFrame.Angles(-math.asin((head.Position - mouse.Hit.Position).unit.y), 1.55, 0),
}):Play()
end
if ls then
game:GetService("TweenService"):Create(ls, TweenInfo.new(updateSpeed), {
C0 = CFrame.new(-1, 0.5 - cameraDot, 1 * (cameraDot * -1)) * CFrame.Angles(-math.asin((head.Position - mouse.Hit.Position).unit.y), -1.55, 0),
}):Play()
end
local Direction = mouse.Hit.p
local b = head.Position.Y - Direction.Y
local dist = (head.Position - Direction).Magnitude
local answer = math.asin(b / dist)
game:GetService("TweenService"):Create(neck, TweenInfo.new(updateSpeed), {
C0 = orginalC0 * CFrame.fromEulerAnglesXYZ(answer, 0, 0)
}):Play()
for i, v in pairs(char:GetDescendants()) do
if v:IsA("CharacterMesh") and v.BodyPart == Enum.BodyPart.LeftArm then
v.Parent = char
end
end
for i, v in pairs(char:GetDescendants()) do
if v:IsA("CharacterMesh") and v.BodyPart == Enum.BodyPart.RightArm then
v.Parent = char
end
end
end)