Help needed for my tool script

Hi, I was making a camera script so that the tool is always in the camera of the player wherever they move their camera too, But it is in r15 and I dont know how to convert it to r6. Can someone help me with it?

local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
 local revolver = script.Parent
local camera = workspace.CurrentCamera

local player = Players.LocalPlayer
 
	revolver.Equipped:Connect(function()
		print("equped")
			local RunService = game:GetService("RunService")
local Player = game.Players.LocalPlayer

local PlayerMouse = Player:GetMouse()



local Camera = workspace.CurrentCamera



local Character = Player.Character or Player.CharacterAdded:Wait()

local Head = Character:WaitForChild("Head")

local Neck = Head:WaitForChild("Neck")



local Arm = Character:WaitForChild("RightUpperArm")

local Shoulder = Arm:WaitForChild("RightShoulder")



local Humanoid = Character:WaitForChild("Humanoid")

local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")



local NeckOriginC0 = Neck.C0

local ShoulderOriginC0 = Shoulder.C0



Neck.MaxVelocity = 1/3



RunService.RenderStepped:Connect(function()

	local CameraCFrame = Camera.CoordinateFrame

	

				if Character:FindFirstChild("UpperTorso") and Character:FindFirstChild("Head") and (camera.focus.Position - camera.CoordinateFrame.Position).magnitude <= 1 then

		local ArmLookVector = Arm.CFrame.lookVector

		local HeadPosition = Head.CFrame.p

		

	if Neck and Shoulder and (camera.focus.Position - camera.CoordinateFrame.Position).magnitude <= 1 then

			if Camera.CameraSubject:IsDescendantOf(Character) or Camera.CameraSubject:IsDescendantOf(Player) then

				local Point = PlayerMouse.Hit.p
	

				local Distance = (Head.CFrame.p - Point).magnitude

				local Difference = Head.CFrame.Y - Point.Y

				Shoulder.C0 = Shoulder.C0:lerp(ShoulderOriginC0 * CFrame.Angles(-(math.asin(Difference / Distance)), (((HeadPosition - Point).Unit):Cross(ArmLookVector)).Y, 0), .5 / 2)


		end

	end	

			end
			end)
			
			
	end)

	
	

Try this:

local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local revolver = script.Parent
local camera = workspace.CurrentCamera

local player = Players.LocalPlayer

revolver.Equipped:Connect(function()
	print("equped")
	local RunService = game:GetService("RunService")
	local Player = game.Players.LocalPlayer

	local PlayerMouse = Player:GetMouse()



	local Camera = workspace.CurrentCamera



	local Character = Player.Character or Player.CharacterAdded:Wait()

	local Head = Character:WaitForChild("Head")

	local Neck = Head:WaitForChild("Neck")



	local Arm = Character:WaitForChild("Right Arm")

	local Shoulder = Character:WaitForChild("Torso"):WaitForChild("Right Shoulder")



	local Humanoid = Character:WaitForChild("Humanoid")

	local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")



	local NeckOriginC0 = Neck.C0

	local ShoulderOriginC0 = Shoulder.C0



	Neck.MaxVelocity = 1/3



	RunService.RenderStepped:Connect(function()

		local CameraCFrame = Camera.CoordinateFrame



		if Character:FindFirstChild("Torso") and Character:FindFirstChild("Head") and (camera.focus.Position - camera.CoordinateFrame.Position).magnitude <= 0.6 then

			local ArmLookVector = Arm.CFrame.lookVector

			local HeadPosition = Head.CFrame.p



			if Neck and Shoulder and (camera.focus.Position - camera.CoordinateFrame.Position).magnitude <= 1 then

				if Camera.CameraSubject:IsDescendantOf(Character) or Camera.CameraSubject:IsDescendantOf(Player) then

					local Point = PlayerMouse.Hit.p


					local Distance = (Head.CFrame.p - Point).magnitude

					local Difference = Head.CFrame.Y - Point.Y

					Shoulder.C0 = Shoulder.C0:lerp(ShoulderOriginC0 * CFrame.Angles(-(math.asin(Difference / Distance)), (((HeadPosition - Point).Unit):Cross(ArmLookVector)).Y, 0), .5 / 2)


				end

			end	

		end
	end)


end)

Infinite yield possible on ‘Workspace.saad_amin2.Head:WaitForChild(“Neck”)’

Replace the local neck = line at around 27 and replace it with this:

	local Neck = Character:WaitForChild("Torso"):WaitForChild("Neck")

Looks really weird check it out https://img.guildedcdn.com/ContentMediaGenericFiles/adb25150171b06a2495153442be9397e-Full.mp4?w=854&h=480

Im at school so i cant reply but try using EasyFirstPerson, search on devforum or toolbox, really good and customizable viewmodel script