I’m experimenting with DataStore and want to figure out which is the best way to load and save data. Can I get some feedback on this Module?
local module = {}
local PlayerData = game:GetService("DataStoreService"):GetDataStore("Player_Data8")
module.LoadData = function(player)
local Key = player.UserId
local success, err = pcall(function()
local Data = PlayerData:GetAsync(Key)
local rPlayer = game:GetService("ReplicatedStorage").Players:WaitForChild(player.Name)
if Data then
player.leaderstats.Cash.Value = Data[1]
player.leaderstats.Sugar.Value = Data[2]
player.leaderstats["Cotton Candy"].Value = Data[3]
player.Inventory.Value = Data[4]
player.leaderstats.Rebirths.Value = Data[5]
rPlayer.Cooldown.Value = Data[6]
rPlayer.BackpackEquipped.Value = Data[7]
rPlayer.ToolEquipped.Value = Data[8]
print("Data loaded for " .. player.Name .. ".")
else
player.leaderstats.Cash.Value = 0
player.leaderstats.Sugar.Value = 0
player.leaderstats["Cotton Candy"].Value = 0
player.Inventory.Value = 10
player.leaderstats.Rebirths.Value = 0
rPlayer.Cooldown.Value = 10
rPlayer.BackpackEquipped.Value = "Beginner Backpack"
rPlayer.ToolEquipped.Value = "Scissors"
local ValuesToSave = {
player.leaderstats.Cash.Value,
player.leaderstats.Sugar.Value,
player.leaderstats["Cotton Candy"].Value,
player.Inventory.Value,
player.leaderstats.Rebirths.Value,
rPlayer.Cooldown.Value,
rPlayer.BackpackEquipped.Value,
rPlayer.ToolEquipped.Value
}
PlayerData:SetAsync(Key, ValuesToSave)
print(player.Name .. " is a new player. Data saved.")
end
end)
if err then
warn("Data for player could not be loaded. " .. player.Name .. " will be kicked and notified.")
player:Kick("DataStore error: Data could not be fetched. Please rejoin.")
end
end
module.SaveData = function(player)
local Key = player.UserId
local rPlayer = game:GetService("ReplicatedStorage"):WaitForChild(player.Name)
local success, err = pcall(function()
local ValuesToSave = {
player.leaderstats.Cash.Value,
player.leaderstats.Sugar.Value,
player.leaderstats["Cotton Candy"].Value,
player.Inventory.Value,
player.leaderstats.Rebirths.Value,
rPlayer.Cooldown.Value
}
PlayerData:SetAsync(Key, ValuesToSave)
print(player.Name .. "'s data has been saved.")
end)
end
return module
Thanks