FE2 Zipline broken

Hello everyone! This one is a bit different to the other topic I made.
This time, it changes depending on the size of the zipline. Here is the clip:

Script:

local speed = (points[1].Position - points[#points].Position).Magnitude * 1.5
	
	local posPoints = {}
	for i=1, #points do
		table.insert(posPoints, points[i].Position)
	end
	local inc = (1/(89))
	for t = 0, 1 - inc, inc do
		local pos = Bezier.GetBezierPoint(t, unpack(posPoints))
		local nextPos = Bezier.GetBezierPoint(t + inc, unpack(posPoints))
		local Distance = (pos - nextPos).magnitude
		local this = CFrame.new(pos, nextPos) * CFrame.new(0, 0, -Distance / 2)
		bodyPos.Position = this.Position - Vector3.new(0,2,0)
		bodyGy.CFrame = this - Vector3.new(0,2,0)
		part.CFrame = this
		game:GetService("RunService").RenderStepped:Wait()
	end

Can someone help???
p.s. speed variable doesnt change anything

have you thought of

bodyPos.MaxForce = Vector3.zero

Nope, the player won’t move at all now.

Also it changes by FPS. Higher = faster.

Hey i think i’ve figured the way on how to control the zipline speed! This could be fixed by using the deltaTime in RunService