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

How do I make the level cap level 100?

Asked by
VVTF_RU 18
3 years ago

I have 2 scripts, one for storing the data and one for the actual level system itself. (both in server script storage) I would like to have both in the same script if possible, and make it so that the level cap is 100.

Data store code \/

local DataSaveService = game:GetService("DataStoreService")
local stat = DataSaveService:GetDataStore("Stats")

game.Players.PlayerAdded:Connect(function(plr)
    local status = Instance.new("Folder", plr)
    status.Name = "leaderstats"
    local exp = Instance.new("IntValue", status)
    exp.Name = "Exp"
    local level = Instance.new("NumberValue", status) 
    level.Name = "Level"

    local exps
    local levels

    local success, errormsg = pcall(function()
        exps = stat:GetAsync(plr.UserId.."-Exp")
        levels = stat:GetAsync(plr.UserId.."-Level")
    end)
    if success then
        exp.Value = exps
        level.Value = levels
        print("Data saved")
    else
        print("Data didn't load correctly") 
        warn(errormsg) 
    end
    local expreq = (105 * (level.Value + 1))
    spawn(function()
        while wait() do
            if exp.Value >= expreq then
                exp.Value = exp.Value - expreq 
                level.Value = level.Value + 1
            end
        end
    end)
end)

game.Players.PlayerRemoving:Connect(function(plr)
    local success, errormsg = pcall(function()
        stat:SetAsync(plr.UserId.."-Level", plr.leaderstats.Level.Value)
        stat:SetAsync(plr.UserId.."-Exp", plr.leaderstats.Exp.Value)
    end)
    if success then
        print("Player data got saved")
    else
        print("Failed at saving data")
        warn(errormsg)
    end
end)

Level system code \/

game.Players.PlayerAdded:Connect(function(player)
    local level = Instance.new("IntValue", player)
    level.Name = "Level"
    level.Value = 1

    local exp = Instance.new("IntValue", level)
    exp.Name = "Current"
    exp.Value = 0

    local maxExp = Instance.new("IntValue", level)
    maxExp.Name = "Max"
    maxExp.Value = 100


    exp.Changed:Connect(function(val)
        if exp.Value >= maxExp.Value then


            level.Value = level.Value + 1
            exp.Value = 0
            maxExp.Value = maxExp.Value * 1.05
        end
    end)
end)

workspace:WaitForChild("EXPcoin").ClickDetector.MouseClick:Connect(function(player)
    player.Level.Current.Value = player.Level.Current.Value + 500
end)

Answer this question