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

How do I increase a stat every certain amount of levels?

Asked by
Phyb 28
5 years ago

I am trying to make it so every 10 levels the player's max stamina goes up by half.

Code:

--//Services
local ReplicatedStorage = game:GetService('ReplicatedStorage')
local ServerStorage = game:GetService('ServerStorage')
local ServerScriptService = game:GetService('ServerScriptService')
local DataStoreService = game:GetService('DataStoreService')
local Players = game:GetService('Players')

--//Variables
local Level = DataStoreService:GetDataStore('Level')
local EXP = DataStoreService:GetDataStore('EXP')
local AEXP = DataStoreService:GetDataStore('AEXP')
local SkillPoints = DataStoreService:GetDataStore('SkillPoints')
local Stamina = DataStoreService:GetDataStore('Stamina')
local MaxStamina = DataStoreService:GetDataStore('MaxStamina')

--//Coding
function SaveData(DataName, PlayerId, Value)
    DataStoreService:GetDataStore(DataName):SetAsync(PlayerId, Value)
end

game.Players.PlayerAdded:Connect(function(Player)
    local PlayerStats = Instance.new('Folder')
    PlayerStats.Name = 'PlayerStats'
    PlayerStats.Parent = Player
    local PlayerLevel = Instance.new('IntValue')
    PlayerLevel.Value = Level:GetAsync(tostring(Player.UserId)) or 1
    PlayerLevel.Name = 'PlayerLevel'
    PlayerLevel.Parent = Player:WaitForChild('PlayerStats')
    local PlayerEXP = Instance.new('NumberValue')
    PlayerEXP.Value = EXP:GetAsync(tostring(Player.UserId)) or 0
    PlayerEXP.Name = 'PlayerEXP'
    PlayerEXP.Parent = Player:WaitForChild('PlayerStats')
    local PlayerEXPN = Instance.new('IntValue')
    PlayerEXPN.Value = AEXP:GetAsync(tostring(Player.UserId)) or 100
    PlayerEXPN.Name = 'EXPNeeded'
    PlayerEXPN.Parent = Player:WaitForChild('PlayerStats')
    local PlayerSkillPoints = Instance.new('IntValue')
    PlayerSkillPoints.Value = SkillPoints:GetAsync(tostring(Player.UserId)) or 0
    PlayerSkillPoints.Name = 'PlayerSkillPoints'
    PlayerSkillPoints.Parent = Player:WaitForChild('PlayerStats')
    local PlayerStamina = Instance.new('IntValue')
    PlayerStamina.Value = Stamina:GetAsync(tostring(Player.UserId)) or 100
    PlayerStamina.Name = 'PlayerStamina'
    PlayerStamina.Parent = Player:WaitForChild('PlayerStats')
    local PlayerMaxStamina = Instance.new('IntValue')
    PlayerMaxStamina.Value = MaxStamina:GetAsync(tostring(Player.UserId)) or 100
    PlayerMaxStamina.Name = 'PlayerMaxStamina'
    PlayerMaxStamina.Parent = Player:WaitForChild('PlayerStats')
    PlayerEXP.Changed:Connect(function()
        if Player.PlayerStats:WaitForChild('PlayerEXP').Value >= Player.PlayerStats:WaitForChild('EXPNeeded').Value then
            if Player.PlayerStats:WaitForChild('PlayerLevel').Value == 1000 then return end
            PlayerLevel.Value = PlayerLevel.Value + 1
            PlayerEXPN.Value = PlayerEXPN.Value + (PlayerEXPN.Value / 10)
            PlayerEXP.Value = 0
            PlayerSkillPoints.Value = PlayerSkillPoints.Value + 2
            PlayerMaxStamina.Value = PlayerMaxStamina.Value + (PlayerMaxStamina.Value / 2)
            PlayerStamina.Value = PlayerMaxStamina.Value
            SaveData('Level', Player.UserId, PlayerLevel.Value)
            SaveData('EXP', Player.UserId, PlayerEXP.Value)
            SaveData('AEXP', Player.UserId, PlayerEXPN.Value)
            SaveData('SkillPoints', Player.UserId, PlayerSkillPoints.Value)
            SaveData('PlayerStamina', Player.UserId, PlayerStamina.Value)
            SaveData('MaxStamina', Player.UserId, PlayerMaxStamina.Value)
        else
            SaveData('Level', Player.UserId, PlayerLevel.Value)
            SaveData('EXP', Player.UserId, PlayerEXP.Value)
            SaveData('AEXP', Player.UserId, PlayerEXPN.Value)
            SaveData('SkillPoints', Player.UserId, PlayerSkillPoints.Value)
            SaveData('PlayerStamina', Player.UserId, PlayerStamina.Value)
            SaveData('MaxStamina', Player.UserId, PlayerMaxStamina.Value)
        end
        SaveData('Level', Player.UserId, PlayerLevel.Value)
        SaveData('EXP', Player.UserId, PlayerEXP.Value)
        SaveData('AEXP', Player.UserId, PlayerEXPN.Value)
        SaveData('SkillPoints', Player.UserId, PlayerSkillPoints.Value)
        SaveData('PlayerStamina', Player.UserId, PlayerStamina.Value)
        SaveData('MaxStamina', Player.UserId, PlayerMaxStamina.Value)
    end)
end)

game.Players.PlayerRemoving:Connect(function(Player)
    SaveData('Level', Player.UserId, Player.PlayerStats.PlayerLevel.Value)
    SaveData('EXP', Player.UserId, Player.PlayerStats.PlayerEXP.Value)
    SaveData('AEXP', Player.UserId, Player.PlayerStats.PlayerEXPN.Value)
    SaveData('SkillPoints', Player.UserId, Player.PlayerStats.PlayerSkillPoints.Value)
    SaveData('PlayerStamina', Player.UserId, Player.PlayerStats.PlayerStamina.Value)
    SaveData('MaxStamina', Player.UserId, Player.PlayerStats.PlayerMaxStamina.Value)
end)
0
Dude you don't need separate data stores!! It can all be done in one data store User#19524 175 — 5y
0
Do you mean having them as children in 1 data store? Phyb 28 — 5y
0
You can store multiple values inside a table then save the table to the data store. awesomeipod 607 — 5y
0
Ah I see, makes sense. Phyb 28 — 5y
0
I'm still confused on having stamina increase incrementally based on level. Phyb 28 — 5y

1 answer

Log in to vote
0
Answered by 5 years ago

make max stamina equal Level divided by 10 multiplied by the current max stamina

0
Do you mean like this: PlayerMaxStamina.Value = (PlayerLevel.Value / 10) * PlayerMaxStamina.Value Phyb 28 — 5y
Ad

Answer this question