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
