Hello,
I’ve been working on my data saving systems for a game I’m working on, this specific code is from the script that handles the player’s Job Data(ie: their salary per interaction, exp, level and all time earnings). Since theres multiple categories of jobs and I need data for each of them(currently Bartender and Cashier), I decided to store the data in a matrix(arrays inside of an array) and then save it to my data store 2. I wanted to know if this is the most efficient way of going about this or if theres other solutions to it.
Heres the code itself:
local DataStore2 = require(script:WaitForChild("DataStore2"))
game.Players.PlayerAdded:Connect(function(plr)
local DS = DataStore2("OccupationData",plr)
local mainFold = Instance.new("Folder",plr)
mainFold.Name = "OccupationData"
local cashierFold = Instance.new("Folder",mainFold)
cashierFold.Name = "CashierData"
local cashierLevel = Instance.new("NumberValue",cashierFold)
cashierLevel.Name = "CashierLevel"
local cashierEXP = Instance.new("NumberValue",cashierFold)
cashierEXP.Name = "CashierExperience"
local cashierSalary = Instance.new("NumberValue",cashierFold)
cashierSalary.Name = "CashierSalary"
local cashierATE = Instance.new("NumberValue",cashierFold)
cashierATE.Name = "CashierAllTimeEarnings"
local bartenderFold = Instance.new("Folder",mainFold)
bartenderFold.Name = "BartenderData"
local bartenderLevel = Instance.new("NumberValue",bartenderFold)
bartenderLevel.Name = "BartenderLevel"
local bartenderEXP = Instance.new("NumberValue",bartenderFold)
bartenderEXP.Name = "BartenderExperience"
local bartenderSalary = Instance.new("NumberValue",bartenderFold)
bartenderSalary.Name = "BartenderSalary"
local bartenderATE = Instance.new("NumberValue",bartenderFold)
bartenderATE.Name = "BartenderAllTimeEarnings"
if DS:Get() then
local data = DS:Get()
cashierLevel.Value = data[1][1]
cashierEXP.Value = data[1][2]
cashierSalary.Value = data[1][3]
cashierATE.Value = data[1][4]
bartenderLevel.Value = data[2][1]
bartenderEXP.Value = data[2][2]
bartenderSalary.Value = data[2][3]
bartenderATE.Value = data[2][4]
else
cashierLevel.Value = 1
cashierEXP.Value = 0
cashierSalary = .5
cashierATE.Value = 0
bartenderLevel.Value = 1
bartenderEXP.Value = 0
bartenderSalary.Value = 1
bartenderATE.Value = 0
DS:Set({
{1,0,0.5,0};
{1,0,1,0}
})
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local DS = DataStore2("OccupationData",plr)
local data = {
{
plr.OccupationData.CashierData.CashierLevel.Value,
plr.OccupationData.CashierData.CashierExperience.Value,
plr.OccupationData.CashierData.CashierSalary.Value,
plr.OccupationData.CashierData.CashierAllTimeEarnings.Value,
};
{
plr.OccupationData.BartenderData.BartenderLevel.Value,
plr.OccupationData.BartenderData.BartenderExperience.Value,
plr.OccupationData.BartenderData.BartenderSalary.Value,
plr.OccupationData.BartenderData.BartenderAllTimeEarnings.Value,
};
}
DS:Set(data)
end)