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

Value adding without me actually adding it?

Asked by 4 years ago
Edited 4 years ago

So basically I made a thing where I add the player's WalkSpeed whenever he touches it and after 2 seconds it should go off. but what I found is that it ran for over 30 seconds. then I printed the new value. What I found is that it goes up for no reason! I have 3 scripts to work with those the values. Here they are. But what's the issue what the value going up and down?

One that reduce the value:

game:GetService("RunService").Heartbeat:connect(function()
    local x = 1/workspace:GetRealPhysicsFPS()
    print(x,y)
    if y.Value > 0 then
        y.Value = y.Value - x
    else
        y.Value = 0 -- set to zero so it doesnt go beyond (-.1/60)-infinitely small number
    end
end)

another one that set the value:

script.Parent.Touched:Connect(function(part)
    if part.Name == 'RightFoot' then
        local plr = part.Parent
        if game.Players:FindFirstChild(plr.Name) then
            local Folder = game:GetService'ReplicatedStorage'[plr.Name]
            if Folder:WaitForChild'canRefreshSprintingTimeLeft'.Value == true then
                setVal(Folder:WaitForChild'canRefreshSprintingTimeLeft',false)
                game:GetService'Players'[plr.Name]:WaitForChild'sprintingTimeLeft'.Value = 2
                print'added'
                wait(1)
                setVal(Folder:WaitForChild'canRefreshSprintingTimeLeft',true)
            end
        end
    end
end)

and the one that adds the WalkSpeed:

localPlayer:WaitForChild'sprintingTimeLeft'.Changed:Connect(function(newVal)
    if newVal > 0 then
        local Hu = workspace[localPlayer.Name]:WaitForChild'Humanoid'
        repeat
            wait(.15)
            local y = Hu.WalkSpeed + Folder:WaitForChild'additiveSpeed'.Value*.2
            Hu.WalkSpeed = y
        until Hu.WalkSpeed > 30+(Folder:WaitForChild'maximumSpeed'.Value*6) or newVal <= 0
        Hu.WalkSpeed = 35
    end
end)

about the outputs: added is printed once only; x is always .016666666666666666... (1/60)(at least after I touched the thing) and the y(time left) is going up and down

Answer this question