if TurnCharacterToMouse==true then MseGuide=true HeadHorFactor=0 BodyHorFactor=0 end;(game:GetService("\082\117\110\083\101\114\118\105\099\101")).RenderStepped:Connect(function()local g=Cam.CoordinateFrame if(IsR6 and Body.Torso or Body.UpperTorso)~=nil and Body.Head~=nil then local S=Trso.CFrame.lookVector local K=Head.CFrame.p if IsR6 and Neck or Neck and Waist then if Cam.CameraSubject:IsDescendantOf(Body)or Cam.CameraSubject:IsDescendantOf(Plr)then local o=nil local U=nil if not MseGuide then o=(Head.CFrame.p-g.p).magnitude U=Head.CFrame.Y-g.Y if not IsR6 then Neck.C0=Neck.C0:lerp(NeckOrgnC0*Ang(aSin(U/o)*HeadVertFactor,-((K-g.p).Unit:Cross(S)).Y*HeadHorFactor,0),UpdateSpeed/2)Waist.C0=Waist.C0:lerp(WaistOrgnC0*Ang(aSin(U/o)*BodyVertFactor,-((K-g.p).Unit:Cross(S)).Y*BodyHorFactor,0),UpdateSpeed/2)else Neck.C0=Neck.C0:lerp(NeckOrgnC0*Ang(-(aSin(U/o)*HeadVertFactor),0,-((K-g.p).Unit:Cross(S)).Y*HeadHorFactor),UpdateSpeed/2)end else local g=Mouse.Hit.p o=(Head.CFrame.p-g).magnitude U=Head.CFrame.Y-g.Y if not IsR6 then Neck.C0=Neck.C0:lerp(NeckOrgnC0*Ang(-(aTan(U/o)*HeadVertFactor),((K-g).Unit:Cross(S)).Y*HeadHorFactor,0),UpdateSpeed/2)Waist.C0=Waist.C0:lerp(WaistOrgnC0*Ang(-(aTan(U/o)*BodyVertFactor),((K-g).Unit:Cross(S)).Y*BodyHorFactor,0),UpdateSpeed/2)else Neck.C0=Neck.C0:lerp(NeckOrgnC0*Ang(aTan(U/o)*HeadVertFactor,0,((K-g).Unit:Cross(S)).Y*HeadHorFactor),UpdateSpeed/2)end end end end end if TurnCharacterToMouse==true then Hum.AutoRotate=false Core.CFrame=Core.CFrame:lerp(CFrame.new(Core.Position,Vector3.new(Mouse.Hit.p.x,Core.Position.Y,Mouse.Hit.p.z)),UpdateSpeed/2)else Hum.AutoRotate=true end end)game.ReplicatedStorage.Look.OnClientEvent:Connect(function(g,S,K)local o=g.Character:FindFirstChild("\078\101\099\107",true)local U=g.Character:FindFirstChild("\087\097\105\115\116",true)if o and U then((game:GetService("\084\119\101\101\110\083\101\114\118\105\099\101")):Create(o,TweenInfo.new(.5,Enum.EasingStyle.Quad,Enum.EasingDirection.Out,0,false,0),{C0=S})):Play();((game:GetService("\084\119\101\101\110\083\101\114\118\105\099\101")):Create(U,TweenInfo.new(.5,Enum.EasingStyle.Quad,Enum.EasingDirection.Out,0,false,0),{C0=K})):Play()end end)while wait(.0001)do game.ReplicatedStorage.Look:FireServer(Neck.C0,Waist.C0)end

if TurnCharacterToMouse == true then
	MseGuide = true
	HeadHorFactor = 0
	BodyHorFactor = 0
end

game:GetService("RunService").RenderStepped:Connect(function()
	local CamCF = Cam.CoordinateFrame
	if ((IsR6 and Body["Torso"]) or Body["UpperTorso"])~=nil and Body["Head"]~=nil then	--[Check for the Torso and Head...]
		local TrsoLV = Trso.CFrame.lookVector
		local HdPos = Head.CFrame.p
		if IsR6 and Neck or Neck and Waist then	--[Make sure the Neck still exists.]
			if Cam.CameraSubject:IsDescendantOf(Body) or Cam.CameraSubject:IsDescendantOf(Plr) then
				local Dist = nil;
				local Diff = nil;
				if not MseGuide then	--[If not tracking the Mouse then get the Camera.]
					Dist = (Head.CFrame.p-CamCF.p).magnitude
					Diff = Head.CFrame.Y-CamCF.Y
					if not IsR6 then	--[R6 and R15 Neck rotation C0s are different; R15: X axis inverted and Z is now the Y.]
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang((aSin(Diff/Dist)*HeadVertFactor), -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*HeadHorFactor, 0), UpdateSpeed/2)
						Waist.C0 = Waist.C0:lerp(WaistOrgnC0*Ang((aSin(Diff/Dist)*BodyVertFactor), -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*BodyHorFactor, 0), UpdateSpeed/2)
					else	--[R15s actually have the properly oriented Neck CFrame.]
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang(-(aSin(Diff/Dist)*HeadVertFactor), 0, -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*HeadHorFactor),UpdateSpeed/2)
					end
				else
					local Point = Mouse.Hit.p
					Dist = (Head.CFrame.p-Point).magnitude
					Diff = Head.CFrame.Y-Point.Y
					if not IsR6 then
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang(-(aTan(Diff/Dist)*HeadVertFactor), (((HdPos-Point).Unit):Cross(TrsoLV)).Y*HeadHorFactor, 0), UpdateSpeed/2)
						Waist.C0 = Waist.C0:lerp(WaistOrgnC0*Ang(-(aTan(Diff/Dist)*BodyVertFactor), (((HdPos-Point).Unit):Cross(TrsoLV)).Y*BodyHorFactor, 0), UpdateSpeed/2)
					else
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang((aTan(Diff/Dist)*HeadVertFactor), 0, (((HdPos-Point).Unit):Cross(TrsoLV)).Y*HeadHorFactor), UpdateSpeed/2)
					end
				end
			end
		end
	end
	if TurnCharacterToMouse == true then
		Hum.AutoRotate = false
		Core.CFrame = Core.CFrame:lerp(CFrame.new(Core.Position, Vector3.new(Mouse.Hit.p.x, Core.Position.Y, Mouse.Hit.p.z)), UpdateSpeed / 2)
	else
		Hum.AutoRotate = true
	end
end)

game.ReplicatedStorage.Look.OnClientEvent:Connect(function(otherPlayer, neckCFrame, WaistCFrame)
	local Neck = otherPlayer.Character:FindFirstChild("Neck", true)
	local Waist = otherPlayer.Character:FindFirstChild("Waist", true)

	if Neck and Waist then
		game:GetService('TweenService'):Create(Neck, TweenInfo.new(.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 0), {C0 = neckCFrame}):Play()
		game:GetService('TweenService'):Create(Waist, TweenInfo.new(.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 0), {C0 = WaistCFrame}):Play()
	end
end)

while wait(0.0001) do
	game.ReplicatedStorage.Look:FireServer(Neck.C0, Waist.C0)
end
