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)

5 comments
Dude you don't need separate data stores!! It can all be done in one data store
Do you mean having them as children in 1 data store?
You can store multiple values inside a table then save the table to the data store.
Ah I see, makes sense.
I'm still confused on having stamina increase incrementally based on level.