use :GetPropertyChangedSignal("Value") or .Changed. I believe this is the best way. Whenever the value you’re looking for changes, check if it’s validates your threshold, and if it does, disconnect the event and highlight the button. BUT, when you’re dealing with values, you can just use .Changed. Use .Changed.
local connection
connection = points.Changed:Connect(function()
if points.Value >= 15 then
connection:Disconnect()
highlight.Visible = true
button.Material = Enum.Material.Neon
end
end)