if rigtype=="\082\049\053"then stepped_con=(game:GetService("\082\117\110\083\101\114\118\105\099\101")).RenderStepped:Connect(function()checkfirstperson()if isfirstperson==true then visiblearms(true)if isrunning==true and(includewalksway and(humanoid:GetState()~=Enum.HumanoidStateType.Freefall and humanoid:GetState()~=Enum.HumanoidStateType.Landed))then walksway=walksway:lerp(CFrame.new((.1*swaysize)*math.sin(tick()*((2*humanoid.WalkSpeed)/4)),(.1*swaysize)*math.cos(tick()*((4*humanoid.WalkSpeed)/4)),0)*CFrame.Angles(0,0,(-0.05*swaysize)*math.sin(tick()*((2*humanoid.WalkSpeed)/4))),.1*sensitivity)else walksway=walksway:Lerp(CFrame.new(),.05*sensitivity)end local N=uis:GetMouseDelta()if includecamerasway then sway=sway:Lerp(Vector3.new(N.X,N.Y,N.X/2),.1*sensitivity)end if includestrafe then strafesway=strafesway:Lerp(CFrame.Angles(0,0,-rootpart.CFrame.rightVector:Dot(humanoid.MoveDirection)/(10/swaysize)),.1*sensitivity)end if includejumpsway then jumpsway=jumpswaygoal.Value end rightshoulderclone.Transform=rightshoulder.Transform leftshoulderclone.Transform=leftshoulder.Transform if firstperson_waist_movements_enabled then waistclone.Transform=waist.Transform end local V=(((((camera.CFrame*walksway)*jumpsway)*strafesway)*CFrame.Angles(math.rad(sway.Y*swaysize),math.rad(sway.X*swaysize)/10,math.rad(sway.Z*swaysize)/2)+camera.CFrame.UpVector*(-1.7-(headoffset.Y+aimoffset.Value.Y)))+camera.CFrame.LookVector*(headoffset.Z+aimoffset.Value.Z))+camera.CFrame.RightVector*((-headoffset.X-aimoffset.Value.X)+-(sway.X*swaysize)/75)viewmodel:SetPrimaryPartCFrame(V)end end)elseif rigtype=="\082\054"then stepped_con=(game:GetService("\082\117\110\083\101\114\118\105\099\101")).RenderStepped:Connect(function()swaysize=script.WalkSwayMultiplier.Value checkfirstperson()if isfirstperson==true then visiblearms(true)if isrunning==true and(includewalksway and(humanoid:GetState()~=Enum.HumanoidStateType.Freefall and humanoid:GetState()~=Enum.HumanoidStateType.Landed))then walksway=walksway:lerp(CFrame.new((.07*swaysize)*math.sin(tick()*((2*humanoid.WalkSpeed)/4)),(.07*swaysize)*math.cos(tick()*((4*humanoid.WalkSpeed)/4)),0)*CFrame.Angles(0,0,(-0.03*swaysize)*math.sin(tick()*((2*humanoid.WalkSpeed)/4))),.2*sensitivity)else walksway=walksway:Lerp(CFrame.new(),.05*sensitivity)end local N=uis:GetMouseDelta()if includecamerasway then sway=sway:Lerp(Vector3.new(N.X,N.Y,N.X/2),.1*sensitivity)end if includestrafe then strafesway=strafesway:Lerp(CFrame.Angles(0,0,-rootpart.CFrame.rightVector:Dot(humanoid.MoveDirection)/(20/swaysize)),.1*sensitivity)end if includejumpsway==true then jumpsway=jumpswaygoal.Value end rightshoulderclone.Transform=rightshoulder.Transform leftshoulderclone.Transform=leftshoulder.Transform local V=(((((camera.CFrame*walksway)*jumpsway)*strafesway)*CFrame.Angles(math.rad(sway.Y*swaysize),math.rad(sway.X*swaysize)/10,math.rad(sway.Z*swaysize)/2)+camera.CFrame.UpVector*(-1.7-(headoffset.Y+aimoffset.Value.Y)))+camera.CFrame.LookVector*(headoffset.Z+aimoffset.Value.Z))+camera.CFrame.RightVector*((-headoffset.X-aimoffset.Value.X)+-(sway.X*swaysize)/75)viewmodel:SetPrimaryPartCFrame(V*script.CFrameAimOffset.Value:Inverse())end end)end

if rigtype == "R15" then
	
	-- do the r15 update loop
	stepped_con = game:GetService("RunService").RenderStepped:Connect(function()
		-- checkfirstperson() checks if camera is first person and enables/disables the viewmodel accordingly
		checkfirstperson()
		-- update loop
		if isfirstperson == true then
			-- make arms visible
			visiblearms(true)
			-- update walk sway if we are walking
			if isrunning == true and includewalksway and humanoid:GetState() ~= Enum.HumanoidStateType.Freefall and humanoid:GetState() ~= Enum.HumanoidStateType.Landed then
				walksway = walksway:lerp(
					CFrame.new(

						(0.1*swaysize) * math.sin(tick() * (2 * humanoid.WalkSpeed/4)),
						(0.1*swaysize) * math.cos(tick() * (4 * humanoid.WalkSpeed/4)),
						0

					)*
						CFrame.Angles(

							0,
							0,
							(-.05*swaysize) * math.sin(tick() * (2 * humanoid.WalkSpeed/4))

						)
					,0.1*sensitivity)
			else
				walksway = walksway:Lerp(CFrame.new(), 0.05*sensitivity)
			end
			--
			local delta = uis:GetMouseDelta()
			if includecamerasway then
				sway = sway:Lerp(Vector3.new(delta.X,delta.Y,delta.X/2), 0.1*sensitivity)
			end
			--
			if includestrafe then
				strafesway = strafesway:Lerp(CFrame.Angles(0,0,-rootpart.CFrame.rightVector:Dot(humanoid.MoveDirection)/(10/swaysize)), 0.1*sensitivity)
			end
			--
			if includejumpsway then
				jumpsway = jumpswaygoal.Value
			end
			-- update animation transform for viewmodel
			rightshoulderclone.Transform = rightshoulder.Transform
			leftshoulderclone.Transform = leftshoulder.Transform
			if firstperson_waist_movements_enabled then
				waistclone.Transform = waist.Transform
			end
			-- cframe the viewmodel
			local finalcf = (camera.CFrame*walksway*jumpsway*strafesway*CFrame.Angles(math.rad(sway.Y*swaysize),math.rad(sway.X*swaysize)/10,math.rad(sway.Z*swaysize)/2))+(camera.CFrame.UpVector*(-1.7-(headoffset.Y+(aimoffset.Value.Y))))+(camera.CFrame.LookVector*(headoffset.Z+(aimoffset.Value.Z)))+(camera.CFrame.RightVector*(-headoffset.X-(aimoffset.Value.X)+(-(sway.X*swaysize)/75)))
			viewmodel:SetPrimaryPartCFrame(finalcf)
		end
	end)
elseif rigtype == "R6" then
	
	-- do the R6 update loop
	stepped_con = game:GetService("RunService").RenderStepped:Connect(function()
		swaysize = script.WalkSwayMultiplier.Value
		-- checkfirstperson() checks if camera is first person and enables/disables the viewmodel accordingly
		checkfirstperson()
		-- update loop
		if isfirstperson == true then
			-- make arms visible
			visiblearms(true)
			-- update walk sway if we are walking
			if isrunning == true and includewalksway and humanoid:GetState() ~= Enum.HumanoidStateType.Freefall and humanoid:GetState() ~= Enum.HumanoidStateType.Landed then
				walksway = walksway:lerp(
					CFrame.new(

						(0.07*swaysize) * math.sin(tick() * (2 * humanoid.WalkSpeed/4)),
						(0.07*swaysize) * math.cos(tick() * (4 * humanoid.WalkSpeed/4)),
						0

					)*
						CFrame.Angles(

							0,
							0,
							(-.03*swaysize) * math.sin(tick() * (2 * humanoid.WalkSpeed/4))

						)
					,0.2*sensitivity)
			else
				walksway = walksway:Lerp(CFrame.new(), 0.05*sensitivity)
			end
			--
			local delta = uis:GetMouseDelta()
			--
			if includecamerasway then
				sway = sway:Lerp(Vector3.new(delta.X,delta.Y,delta.X/2), 0.1*sensitivity)
			end
			--
			if includestrafe then
				strafesway = strafesway:Lerp(CFrame.Angles(0,0,-rootpart.CFrame.rightVector:Dot(humanoid.MoveDirection)/(20/swaysize)), 0.1*sensitivity)
			end
			--
			if includejumpsway == true then
				jumpsway = jumpswaygoal.Value
			end
			-- update animation transform for viewmodel
			rightshoulderclone.Transform = rightshoulder.Transform
			leftshoulderclone.Transform = leftshoulder.Transform
			-- cframe the viewmodel
			local finalcf = (camera.CFrame*walksway*jumpsway*strafesway*CFrame.Angles(math.rad(sway.Y*swaysize),math.rad(sway.X*swaysize)/10,math.rad(sway.Z*swaysize)/2))+(camera.CFrame.UpVector*(-1.7-(headoffset.Y+(aimoffset.Value.Y))))+(camera.CFrame.LookVector*(headoffset.Z+(aimoffset.Value.Z)))+(camera.CFrame.RightVector*(-headoffset.X-(aimoffset.Value.X)+(-(sway.X*swaysize)/75)))
			viewmodel:SetPrimaryPartCFrame(finalcf * script.CFrameAimOffset.Value:Inverse())
		end
	end)
end

