I am currently working on a Sandbox Tycoon game. And my upgrading script isn't working correctly. There is supposed to be a Money Limit (moneyLimit) functionality, where the ore's value will not go above the Money's Limit. However, it ends up not working. It will upgrade the ore once (I have a way to count it)
Here is the script:
local multiplier = 1.15 --// set what amount the ore's value will be multiplied by
local useLimit = 0 --// 0 removes the limit
local moneyLimit = 100000 --// 0 removes the limit
local Color = BrickColor.new("Deep blue")
local Error = BrickColor.new("Really red")
script.Parent.Touched:connect(function(hit)
if hit:FindFirstChild("OreValue") then
if hit:FindFirstChild("Upgrades") then
if hit.Upgrades:FindFirstChild(script.Parent.Parent.Name) then
if useLimit == 0 then
if moneyLimit == 0 then
hit.OreValue.Value = math.floor(hit.OreValue.Value * multiplier)
hit.Upgrades[script.Parent.Parent.Name].Value = hit.Upgrades[script.Parent.Parent.Name].Value + 1
elseif moneyLimit >= 1 then
if hit.OreValue.Value >= moneyLimit then
script.Parent.BrickColor = Error
script.Parent.Error:Play()
wait(.1)
script.Parent.BrickColor = Color
end
end
elseif useLimit >= 1 then
if moneyLimit == 0 then
if hit.Upgrades[script.Parent.Parent.Name].Value < useLimit then
hit.OreValue.Value = math.floor(hit.OreValue.Value * multiplier)
hit.Upgrades[script.Parent.Parent.Name].Value = hit.Upgrades[script.Parent.Parent.Name].Value + 1
else
script.Parent.BrickColor = Error
script.Parent.Error:Play()
wait(.1)
script.Parent.BrickColor = Color
end
elseif moneyLimit >= 1 then
if hit.OreValue.Value < moneyLimit then
if hit.Upgrades[script.Parent.Parent.Name].Value < useLimit then
hit.OreValue.Value = math.floor(hit.OreValue.Value * multiplier)
hit.Upgrades[script.Parent.Parent.Name].Value = hit.Upgrades[script.Parent.Parent.Name].Value + 1
else
script.Parent.BrickColor = Error
script.Parent.Error:Play()
wait(.1)
script.Parent.BrickColor = Color
end
end
end
end
else
local counter = Instance.new("IntValue", hit.Upgrades)
counter.Value = 1
counter.Name = script.Parent.Parent.Name
hit.OreValue.Value = math.floor(hit.OreValue.Value * multiplier)
end
end
end
end)
Here is a gif to show what happens. https://gyazo.com/833b7f3ba601d8ce4319a1a95786a350
This is where the issue most likely is
elseif moneyLimit >= 1 then
if hit.OreValue.Value < moneyLimit then
if hit.Upgrades[script.Parent.Parent.Name].Value < useLimit then
hit.OreValue.Value = math.floor(hit.OreValue.Value * multiplier)
hit.Upgrades[script.Parent.Parent.Name].Value = hit.Upgrades[script.Parent.Parent.Name].Value + 1
else
script.Parent.BrickColor = Error
script.Parent.Error:Play()
wait(.1)
script.Parent.BrickColor = Color
end
The only way I can think its not working is due to some slight error with either spelling or just using < and > the wrong way.
