Camera CFrame not getting fixed to a CFrame

My problem is that the Camera CFrame isnt changing.

I have a first person script running before the 2nd script that changes the camera CFrame which might be part of the problem.

I tried creating a remote event to disable the first person camera but it doesn’t seem to work even after doing that, though it does stop the script from running further.

Here is the script in question:

local animation = script:WaitForChild("Animation")
local humanoid = script.Parent:WaitForChild("Humanoid")
local animationTrack = humanoid:LoadAnimation(animation)
local rs = game:GetService("ReplicatedStorage")
local re = rs.WinAnimation1
local cam = game.Workspace.CurrentCamera

re.OnClientEvent:Connect(function(position)
	cam.CameraType = Enum.CameraType.Scriptable
	cam.CFrame = CFrame.new(position,  580.343, -325.41)
	animationTrack:Play()
end)

And here is the first person script which is most likely part of the problem:

CanToggleMouse = {allowed = true; activationkey = Enum.KeyCode.F;}
CanViewBody = true
Sensitivity = 0.2
Smoothness = 0.05
FieldOfView = 80
HeadOffset = CFrame.new(0,0.7,0)
----------------------------------- Settings
task.wait()
local Player = game.Players.LocalPlayer
local Humanoid = Player.Character:FindFirstChild("Humanoid")
local players = game:GetService("Players")
local player = players.LocalPlayer
local rs = game:GetService("ReplicatedStorage")
local FirstPerson1 = rs.FirstPerson1
local re = rs.STOP
--local m = player:GetMouse()
--m.Icon = "http://www.roblox.com/asset/?id=569021388"
local cam = game.Workspace.CurrentCamera
cam.CameraType = Enum.CameraType.Custom
cam.CameraSubject = Humanoid
FirstPerson1.OnClientEvent:Connect(function()
	print("Camera getting set for plr1")
	local Player = game.Players.LocalPlayer
	local Humanoid = Player.Character:FindFirstChild("Humanoid")

	repeat wait() until game:GetService("Players").LocalPlayer.Character ~= nil
	local runService = game:GetService("RunService")
	local input = game:GetService("UserInputService")
	local players = game:GetService("Players")

	local character = player.Character or player.CharacterAdded:wait()
	local human = character.Humanoid
	local humanoidpart = character.HumanoidRootPart

	local head = character:WaitForChild("Head")
	local CamPos,TargetCamPos = cam.CoordinateFrame.p,cam.CoordinateFrame.p 
	local AngleX,TargetAngleX = 0,0
	local AngleY,TargetAngleY = 0,0

	local running = true
	local freemouse = false
	local defFOV = FieldOfView

	local w, a, s, d, lshift = false, false, false, false, false

	local easingtime = 1 --0~1
	local walkspeeds = {
		enabled =		  true;
		walkingspeed =		0;
		backwardsspeed =	0;
		sidewaysspeed =		0;
		diagonalspeed =		0;
		runningspeed =		0;
		runningFOV=			80;}
	
	local function updatechar()
		for _, v in pairs(character:GetChildren())do
			if CanViewBody then
				if v.Name == 'Head' then
					v.LocalTransparencyModifier = 1
					v.CanCollide = false
					v.face.LocalTransparencyModifier = 1
				end
			else
				if v:IsA'Part' or v:IsA'UnionOperation' or v:IsA'MeshPart' then
					v.LocalTransparencyModifier = 1
					v.CanCollide = false
				end
			end
			if v:IsA'Accessory' then
				v:FindFirstChild('Handle').LocalTransparencyModifier = 1
				v:FindFirstChild('Handle').CanCollide = false
			end
			if v:IsA'Hat' then
				v:FindFirstChild('Handle').LocalTransparencyModifier = 1
				v:FindFirstChild('Handle').CanCollide = false
			end
		end
	end

	local function lerp(a, b, t)
		return a * (1-t) + (b*t)
	end
	input.InputChanged:connect(function(inputObject)
		if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
			local delta = Vector2.new(inputObject.Delta.x/Sensitivity,inputObject.Delta.y/Sensitivity) * Smoothness

			local X = TargetAngleX - delta.y 
			TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X 
			TargetAngleY = (TargetAngleY - delta.x) %360 
		end	
	end)

	input.InputBegan:connect(function(inputObject)
		if inputObject.UserInputType == Enum.UserInputType.Keyboard then
			if inputObject.KeyCode == CanToggleMouse.activationkey then
				if CanToggleMouse.allowed and freemouse == false then
					freemouse = true
				else
					freemouse = false
				end
			end
		end
		if inputObject.UserInputType == Enum.UserInputType.Keyboard then
			if inputObject.KeyCode == Enum.KeyCode.W then
				w = true
			end
			if inputObject.KeyCode == Enum.KeyCode.A then
				a = true
			end
			if inputObject.KeyCode == Enum.KeyCode.S then
				s = true
			end
			if inputObject.KeyCode == Enum.KeyCode.D then
				d = true
			end
		end
	end)

	input.InputEnded:connect(function(inputObject)
		if inputObject.UserInputType == Enum.UserInputType.Keyboard then
			if inputObject.KeyCode == Enum.KeyCode.W then
				w = false
			end
			if inputObject.KeyCode == Enum.KeyCode.A then
				a = false
			end
			if inputObject.KeyCode == Enum.KeyCode.S then
				s = false
			end
			if inputObject.KeyCode == Enum.KeyCode.D then
				d = false
			end
		end
	end)

	runService.RenderStepped:connect(function()
		if running then
			updatechar()
			CamPos = CamPos + (TargetCamPos - CamPos) *0.28 
			AngleX = AngleX + (TargetAngleX - AngleX) *0.35 
			local dist = TargetAngleY - AngleY 
			dist = math.abs(dist) > 180 and dist - (dist / math.abs(dist)) * 360 or dist 
			AngleY = (AngleY + dist *0.35) %360
			cam.CameraType = Enum.CameraType.Scriptable
			cam.CoordinateFrame = CFrame.new(head.Position) 
				* CFrame.Angles(0,math.rad(AngleY),0) 
				* CFrame.Angles(math.rad(AngleX),0,0)
				* HeadOffset
			humanoidpart.CFrame=CFrame.new(humanoidpart.Position)*CFrame.Angles(0,math.rad(AngleY),0)
		else game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.Default
		end
		if (cam.Focus.p-cam.CoordinateFrame.p).magnitude < 1 then
			running = false
		else
			running = true
			if freemouse == true then
				game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.Default
			else
				game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.LockCenter
			end
		end
		if not CanToggleMouse.allowed then
			freemouse = false
		end
		cam.FieldOfView = FieldOfView
		if walkspeeds.enabled then
			if w and s then return end
			if w and not lshift then
				FieldOfView = lerp(FieldOfView, defFOV,easingtime)
				human.WalkSpeed = 0
			elseif w and a then
				human.WalkSpeed = 0
			elseif w and d then
				human.WalkSpeed = 0
			elseif s then
				human.WalkSpeed = 0
			elseif s and a then
				human.WalkSpeed = 0
			elseif s and d then
				human.WalkSpeed = 0
			elseif d then
				human.WalkSpeed = 0
			elseif a then
				human.WalkSpeed = 0
			end	
			if lshift and w then
				FieldOfView = lerp(FieldOfView, walkspeeds.runningFOV,easingtime)
				human.WalkSpeed = 0
			end
		end
	end)
end)

function fixCamera()
	game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.Default    --Fixes the mouse because it causes an error, no idea why it works
end

re.OnClientEvent:Connect(function()
	warn("Stopped")
	script.Enabled = false
end)

Humanoid.Died:Connect(fixCamera())

The second script is really long and it isn’t mine so I am not 100% sure how it works…

I would please ask if anybody sees the problem to comment.