Well, basically I am making a system that by defined the maximum value of an intValue is 100, but then the value is lowered and an item is used to increase the value. My problem is that I want the sum limit to be 100 but I don’t know how to do it…
local tool = script.Parent
local Players = game:GetService("Players")
local del = 1
local function DestroyTool()
wait(del)
tool:Destroy()
end
tool.Activated:Connect(function()
local char = script:FindFirstAncestorWhichIsA("Model")
local Player = Players:GetPlayerFromCharacter(char)
local DataPlayer = Player:WaitForChild("DataPlayer")
local NeedsPlayerStats = DataPlayer:WaitForChild("NeedsPlayerStats")
local StacksValue = DataPlayer:WaitForChild("ItemStacks")
if StacksValue.WaterStack.Value <= 0 then
DestroyTool()
else
StacksValue.WaterStack.Value -= 1
NeedsPlayerStats.Thirst.Value += 10
if StacksValue.WaterStack.Value <= 0 then
DestroyTool()
end
end
if NeedsPlayerStats.Hunger.Value >= 100 then
NeedsPlayerStats.Hunger.Value = 100
elseif NeedsPlayerStats.Thirst.Value >= 100 then
NeedsPlayerStats.Thirst.Value = 100
end
end)
Simple, the first argument takes any number, the second argument indicates what’s the minimum number to be returned, the third is the maximum.
Example: math.clamp(1,1,10)
Returns 1 because 1 is lower than or equal to the integer in second argument which is 1.
Example: math.clamp(5,3,10)
Returns 5 because it’s between 3 and 10.
Example: math.clamp(200,1,100)
Returns 100 because 200 is more than the integer in the third argument, which is 100, so it will return the maximum number.
Try adding print statements to keep track of what’s the script doing.
tool.Activated:Connect(function()
...
if NeedsPlayerStats.Hunger.Value >= 100 then
print("Hunger over 100")
NeedsPlayerStats.Hunger.Value = 100
print("Attempted to lower hunger to 100")
elseif NeedsPlayerStats.Thirst.Value >= 100 then
print("Thirst over 100")
NeedsPlayerStats.Thirst.Value = 100
print("Attempted to lower thirst to 100")
end
end)
To make this a little easier, you can make a separate function for the limit:
NeedsPlayersStats.Hunger:GetPropertyChangedSignal("Value"):Connect(function(
if NeedsPlayerStats.Hunger.Value >= 100 then
NeedsPlayerStats.Hunger.Value = 100
end
end)
-- For thirst
local maxValue = --Enter max value here
script.Parent.Changed:Connect(function()
if script.Parent.Value > maxValue then
script.Parent.Value = maxValue
end
end)