function findHeight(T)local B=character.HumanoidRootPart local O=Ray.new(Vector3.new(B.Position.X,B.Position.Y+50,B.Position.Z-T),(Vector3.new(0,-1,0)).Unit*300)local u=character local F,L=game.Workspace:FindPartOnRay(O,u)return L.Y+40 end function highest(T)local B=T[1]for O=2,#T,1 do if T[O]>B then B=T[O]end end return B end function fastStart()if started==false then started=true local T=Instance.new("\066\111\100\121\080\111\115\105\116\105\111\110")T.Name="\070\097\115\116\083\116\097\114\116"T.maxForce=Vector3.new(0,15000,0)T.Parent=character.HumanoidRootPart local B=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")B.maxForce=Vector3.new(0,0,15000)B.velocity=Vector3.new(0,0,-150)B.Parent=character.HumanoidRootPart T.position=Vector3.new(0,highest({findHeight(0);findHeight(10);findHeight(20);findHeight(30)}),0)while character.HumanoidRootPart.Position.Z>spawnLocation.Z-1000 do wait(1)if character:FindFirstChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")==nil then break end T.position=Vector3.new(0,highest({findHeight(0);findHeight(10);findHeight(20),findHeight(30)}),0)end B.velocity=Vector3.new(0,0,0)wait(2)if character:FindFirstChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")then T:Destroy()B:Destroy()local O=Instance.new("\070\111\114\099\101\070\105\101\108\100")O.Name="\083\104\105\101\108\100"O.Parent=character;(game:GetService("\068\101\098\114\105\115")):AddItem(O,3)end fastStart:Destroy()script:Destroy()end end fastStart()

function findHeight(distanceInFront)
	local torso = character.HumanoidRootPart
	local ray = Ray.new(
    Vector3.new(torso.Position.X, torso.Position.Y + 50, torso.Position.Z - distanceInFront), 	-- origin
    (Vector3.new(0, -1, 0)).Unit * 300)	 														-- direction
	local ignore = character
	local hit, position = game.Workspace:FindPartOnRay(ray, ignore)
	return position.Y + 40
end

function highest(tableOfValues)
	local highestSoFar = tableOfValues[1]
	for i = 2, #tableOfValues do
		if tableOfValues[i] > highestSoFar then
			highestSoFar = tableOfValues[i]
		end
	end
	return highestSoFar
end

function fastStart()
	if started == false then	
		started = true
		local fastStartPosition = Instance.new("BodyPosition")
		fastStartPosition.Name = "FastStart"
		fastStartPosition.maxForce = Vector3.new(0, 15000, 0)
		fastStartPosition.Parent = character.HumanoidRootPart
		local fastStartVelocity = Instance.new("BodyVelocity")
		fastStartVelocity.maxForce = Vector3.new(0, 0, 15000)
		fastStartVelocity.velocity = Vector3.new(0, 0, -150)
		fastStartVelocity.Parent = character.HumanoidRootPart
		fastStartPosition.position = Vector3.new(0, highest({findHeight(0), findHeight(10), findHeight(20), findHeight(30)}), 0)
		while character.HumanoidRootPart.Position.Z > spawnLocation.Z - 1000 do
			wait(1)
			if character:FindFirstChild("HumanoidRootPart") == nil then
				break
			end
			fastStartPosition.position = Vector3.new(0, highest({findHeight(0), findHeight(10), findHeight(20), findHeight(30)}), 0)
		end
		fastStartVelocity.velocity = Vector3.new(0, 0, 0)
		wait(2)
		if character:FindFirstChild("HumanoidRootPart") then
			fastStartPosition:Destroy()
			fastStartVelocity:Destroy()
			local shield = Instance.new("ForceField")
			shield.Name = "Shield"		
			shield.Parent = character
			game:GetService("Debris"):AddItem(shield, 3)
		end
		fastStart:Destroy()
		script:Destroy()
	end
end

fastStart() --Script starts disabled, only enabled when a player starts running


