How to have a script constantly check a boolean?

I am trying to script something that will check to see if a value, which I created and put in the player (inside of the Players service) is true, if its true, then it will do stuff, but it isn’t even firing right now.

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(function(Character)
		print(Character)
		print(Character.Humanoid.UseJumpPower)
		
		while task.wait() do
			if Player.Walk==true then 
				print("Player bought walk")
			end
		end
	end)
end)

When I set the bool to true, it still doesn’t work.

.Changed or GetPropertyChangedSignal() would help. [instead of a loop]

change it to -
if Player.Walk.Value == true

That would work! I referenced an old script though and found that putting a :WaitForChild() on the instance of walk works best!

One last question, not totally related to this, but I need to check 1 more condition, would I put this in the same loop or a different one?