Hi! I'm making a levelling system where when the exp you gained is over the maxexp then you will level up and any spare exp will be added on. However, when I add a ton of exp it will come up with the error message: Maximum event re-entrancy depth exceeded for IntValue.Changed (x2). Please can someone tell me how I should rearrange my code to stop this from happening.
Script in ServerSriptService:
local function onPlayerAdded(player)
local hidden = Instance.new("Folder",player)
hidden.Name = "hidden"
local level = Instance.new("IntValue",hidden)
level.Name = "Level"
local exp = Instance.new("IntValue",hidden)
exp.Name = "Exp"
local maxexp = Instance.new("IntValue",hidden)
maxexp.Name = "MaxExp"
if level.Value == 0 then
maxexp.Value = 20
elseif level.Value == 1 then
maxexp.Value = 40
elseif level.Value == 2 then
maxexp.Value = 60
elseif level.Value == 3 then
maxexp.Value = 80
elseif level.Value == 4 then
maxexp.Value = 100
elseif level.Value == 5 then
maxexp.Value = 120
elseif level.Value == 6 then
maxexp.Value = 140
elseif level.Value == 7 then
maxexp.Value = 160
elseif level.Value == 8 then
maxexp.Value = 180
elseif level.Value == 9 then
maxexp.Value = 200
elseif level.Value == 10 then
maxexp.Value = 250
elseif level.Value == 11 then
maxexp.Value = 300
elseif level.Value == 12 then
maxexp.Value = 350
elseif level.Value == 13 then
maxexp.Value = 400
end
exp.Changed:Connect(function()
if exp.Value >= maxexp.Value then
local spareExp = exp.Value - maxexp.Value
level.Value += 1
exp.Value = 0
if level.Value == 0 then
maxexp.Value = 20
elseif level.Value == 1 then
maxexp.Value = 40
elseif level.Value == 2 then
maxexp.Value = 60
elseif level.Value == 3 then
maxexp.Value = 80
elseif level.Value == 4 then
maxexp.Value = 100
elseif level.Value == 5 then
maxexp.Value = 120
elseif level.Value == 6 then
maxexp.Value = 140
elseif level.Value == 7 then
maxexp.Value = 160
elseif level.Value == 8 then
maxexp.Value = 180
elseif level.Value == 9 then
maxexp.Value = 200
elseif level.Value == 10 then
maxexp.Value = 250
elseif level.Value == 11 then
maxexp.Value = 300
elseif level.Value == 12 then
maxexp.Value = 350
elseif level.Value == 13 then
maxexp.Value = 400
end
exp.Value += spareExp
end
end)
end
game.Players.PlayerAdded:Connect(onPlayerAdded)
