I'm trying to make it so the player would gain 1 money every second, but its not looping correctly. This is what I'm using:
01 | local leaderstats = game.Players.LocalPlayer:WaitForChild( "leaderstats" ) |
02 | local money = leaderstats.Money |
03 |
04 | money.Value.Changed:connect( function () |
05 | if money.Value < 1000 then |
06 | repeat |
07 | money.Value = money.Value + 1 |
08 | wait( 1 ) |
09 | until money.Value = = 1000 |
10 | end |
11 | end ) |
12 | money.Value = money.Value - 1 |
Any help is greatly appreciated!
This is simply a mistake in the coding. (peep the comment lines)
01 | local leaderstats = game.Players.LocalPlayer:WaitForChild( "leaderstats" ) |
02 | local money = leaderstats.Money |
03 |
04 | money.Value.Changed:connect( function () --every time the money gets changed, this function runs |
05 | if money.Value < 1000 then |
06 | repeat |
07 | money.Value = money.Value + 1 --within the function, the money is being changed, causing the function to repeat itself more than intended |
08 | wait( 1 ) |
09 | until money.Value = = 1000 |
10 | end |
11 | end ) |
12 | money.Value = money.Value - 1 |
A solution could be to remove the repeat statement, or repeat the if statement.
01 | local leaderstats = game.Players.LocalPlayer:WaitForChild( "leaderstats" ) |
02 | local money = leaderstats.Money |
03 |
04 | money.Value.Changed:connect( function () |
05 | if money.Value < 1000 then |
06 | money.Value = money.Value + 1 |
07 | wait( 1 ) |
08 | end |
09 | end ) |
10 | money.Value = money.Value - 1 |