Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why Does This Script Not Recognize a Value Change?

Asked by
8391ice 91
8 years ago

This is a script that is supposed to regenerate Magic over time for the player. The value for Magic has already been established for the player in the leaderstats. **This script executes fine, but there is a problem: When the player levels up, the Magic continues to regenerate at the same rate rather than increasing at a rate to accommodate the new level of the player. ** The script does not recognize that the level has changed, therefore, it continues to regenerate at the same rate, unless the player resets. Why is this?

--This script is in the StarterGui
player = script.Parent.Parent
leaderstats = player.leaderstats
level = script.Parent.Parent.leaderstats.Level.Value --When this value changes, the script does not recognize it, so the Magic continues to regenerate at the same rate. Why?
magic = leaderstats.Stats.Magic
maxmagic = (20+level*2) --The problem with recognizing the level also causes a problem here; when the player levels up, this value increases as well, because the value of the new level factors into this equation. But since the script doesn't recognize the level, this doesn't change either. Now, when the Magic regenerates, it stops here, short of the new max.
speed = leaderstats.Stats.MagicSpeed.Value*.05
rate = math.ceil(maxmagic*.045)

while true do
    wait()
    if magic.Value < maxmagic then
        wait(speed)
        magic.Value = magic.Value + rate
    elseif magic.Value > maxmagic then
        magic.Value = maxmagic
    end
end

1 answer

Log in to vote
0
Answered by 8 years ago

The error i that i think is in here is this: When the rate is first set lets say the rate equals to 20, it will stay that way since it is only being set once, but when put in the while loop, it will reset the rate value

--This script is in the StarterGui
player = script.Parent.Parent
leaderstats = player.leaderstats
level = leaderstats:WaitForChild('level') -- Easier
magic = leaderstats.Stats.Magic
maxmagic = (20+level.Value*2) 
speed = leaderstats.Stats.MagicSpeed.Value*.05
rate = maxmagic*.045

while true do
local maxmagic = (20+level.Value*2) 
local rate =  maxmagic*.045
    wait()
    if magic.Value < maxmagic then
        wait(speed)
        magic.Value = magic.Value + rate
    elseif magic.Value > maxmagic then
        magic.Value = maxmagic
    end
end

0
Thank you very much, this worked! Now I get it! 8391ice 91 — 8y
0
Np :D TheTermaninator 45 — 8y
Ad

Answer this question