I want to save 3 values. Exp Level, Amount of Exp to Next Level, and Level. But it is not saving when i load back into game. It is a normal script in ServerScriptStorage. Here is my script for my data stores:
--References
local dataStore = game:GetService('DataStoreService')
local player = game.Players.LocalPlayer
local valueRef = game.Workspace.Values
--Values
local expAmount = valueRef.ExpLevel
local expToNextLevel = valueRef.ExpToNextLevel
local level = valueRef.Level
--Data Stores
local expStore = dataStore:GetDataStore('expStore')
local success, err = pcall(function()
expStore:SetAsync(player.UserID..'_exp', expAmount)
end)
if err then
print('Exp Store Error')
end
local nextLevelStore = dataStore:GetDataStore('nextLevelStore')
local success, err = pcall(function()
nextLevelStore:SetAsync(player.UserID..'_nextLevel', expToNextLevel)
end)
if err then
print('Next Level Store Error')
end
local levelStore = dataStore:GetDataStore('levelStore')
local success, err = pcall(function()
levelStore:SetAsync(player.UserID..'_level', level)
end)
if err then
print('Level Store Error')
end
--Data Store Updates
while true do
local success, err = pcall(function()
expStore:UpdateAsync(player.UserID..'_exp', expAmount)
end)
local success, err = pcall(function()
nextLevelStore:UpdateAsync(player.UserID..'_nextLevel', expToNextLevel)
end)
local success, err = pcall(function()
levelStore:UpdateAsync(player.UserID..'_level', level)
end)
wait(10)
end

1 comment
Add a PlayerRemoving event so it saves the player's data when they leave. Also, look into :BindToClose() for data stores because if you happen to be the only/last player in the server, your data may not finish saving.