I am tryng to save mutltiple values that I create when the player's enter. I can save a single value just fine but I realized I need a table to store other values to. I can run the script with no error but it prints the default values instead of the one's from my last playing session. Ideas?
--Get The Service's
local replicatedStorage = game:GetService("ReplicatedStorage")
local timePlayedValue = replicatedStorage:WaitForChild("TimePlayedValue")
local totalTimeValue = replicatedStorage:WaitForChild("TotalTimeValue")
local httpsService = game:GetService("HttpService")
local dsService = game:GetService("DataStoreService")
local mainStore = dsService:GetDataStore("MainDataStore")
--create player data
game:GetService("Players").PlayerAdded:Connect(function(plr)
--create folders
local leader = Instance.new("Folder",plr)
leader.Name = "leaderstats"
local achievementsFolder = Instance.new("Folder",leader)
achievementsFolder.Name = "Achievements"
local gameplayStats = Instance.new("Folder",leader)
gameplayStats.Name = "GameplayStats"
local playerStats = Instance.new("Folder",leader)
playerStats.Name = "PlayerStats"
--create achievements Values
CompletedTutorial = Instance.new("BoolValue",achievementsFolder)
CompletedTutorial.Name = "CompletedTutorialAchievement"
CompletedTutorial.Value = false
--create gameplay values
CompletedMissions = Instance.new("IntValue",gameplayStats)
CompletedMissions.Name = "CompletedMissions"
CompletedMissions.Value = 0
FailedMissions = Instance.new("IntValue",gameplayStats)
FailedMissions.Name = "FailedMissions"
FailedMissions.Value = 0
PreviousMission = Instance.new("StringValue",gameplayStats)
PreviousMission.Name = "PreviousMission"
PreviousMission.Value = "No Missions Attempted"
TimesDied = Instance.new("IntValue",gameplayStats)
TimesDied.Name = "TimesDied"
TimesDied.Value = 0
TrapsAvoided = Instance.new("IntValue",gameplayStats)
TrapsAvoided.Name = "TrapsAvoided"
TrapsAvoided.Value = 0
TrapsFailed = Instance.new("IntValue",gameplayStats)
TrapsFailed.Name = "TrapsFailed"
TrapsFailed.Value = 0
--create player values
Coins = Instance.new("IntValue",playerStats)
Coins.Name = "Coins"
Coins.Value = 0
local currentDay = os.date("*t").day
local currentMonth = os.date("*t").month
local currentYear = os.date("*t").year
local dateJoined = (currentDay.."/"..currentMonth.."/"..currentYear)
DateFirstJoined = Instance.new("StringValue",playerStats)
DateFirstJoined.Name = "DateFirstJoined"
DateFirstJoined.Value = dateJoined
Rank = Instance.new("StringValue",playerStats)
Rank.Name = "Rank"
Rank.Value = "Junior Assistant"
totalTime = Instance.new("IntValue",playerStats)
totalTime.Name = "TotalTimePlayed"
totalTime.Value = 0
timePlayed = Instance.new("IntValue",playerStats)
timePlayed.Name = "TimePlayed"
timePlayed.Value = 0
Experience = Instance.new("IntValue",playerStats)
Experience.Name = "Experience"
Experience.Value = 0
--load the data
local success, err = pcall(function()
local data = mainStore:GetAsync(plr.UserId)
if data then
--gameplay values
CompletedMissions.Value = data[1]
FailedMissions.Value = data[2]
PreviousMission.Value = data[3]
TimesDied.Value = data[4]
TrapsAvoided.Value = data[5]
TrapsFailed.Value = data[6]
--player stats value
Coins.Value = data[7]
DateFirstJoined.Value = data[8]
Rank.Value = data[9]
totalTime.Value = data[10]
timePlayed.Value = data[11]
Experience.Value = data[12]
print(CompletedMissions.Value, FailedMissions.Value, PreviousMission.Value, TimesDied.Value, TrapsAvoided.Value, TrapsFailed.Value, Coins.Value, DateFirstJoined.Value, Rank.Value, totalTime.Value, timePlayed.Value, Experience.Value)
else
print("no data")
end
end)
if err then
print("error loading data")
end
end)
--Increment Time Values
incrementor = coroutine.create(function()
while wait(1) do
timePlayed.Value = timePlayedValue.Value + 1
totalTime.Value = totalTimeValue.Value + 1
end
end)
coroutine.resume(incrementor)
game:GetService("Players").PlayerRemoving:Connect(function(player)
local DataToSave = {CompletedMissions.Value, FailedMissions.Value, PreviousMission.Value, TimesDied.Value, TrapsAvoided.Value, TrapsFailed.Value,
Coins.Value, DateFirstJoined.Value, Rank.Value, totalTime.Value, timePlayed.Value, Experience.Value}
local success, err = pcall(function()
mainStore:SetAsync(player.UserId,DataToSave)
end)
if err then
print("error saving")
end
end)

1 comment
Make sure you have STUDIO API enabled