What you can do is constantly cast a ray from the player’s root part downwards with all the yard lines as the whitelist, this should give you what yard line the player is at.
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Whitelist
rayParams.FilterDescendantsInstances = workspace.YardLinesFolder
while true do
local result = workspace:Raycast(humanoidRootPart.Position, -humanoidRootPart.CFrame.UpVector * 40, rayParams)
if (result) then
print("Player is at " .. result.Instance.Name)
end
wait(.2)
end