I have a script that is supposed to save a player’s stone, log, and other resource values. What is strange is my DataStore script for each value is the exact same except for obvious changes like the name, but the wood value is not saving. Can you see anything I have done wrong?
local currencyName = "Pounds"
local DataStore = game:GetService("DataStoreService"):GetDataStore("PoundDataStore")
local CurrencyName = "Rank"
local dataStore = game:GetService("DataStoreService"):GetDataStore("RankDataStore")
local Currencyname = "Denarii"
local Datastore = game:GetService("DataStoreService"):GetDataStore("DenariiDataStore")
local logname = "Wood"
local logstore = game:GetService("DataStoreService"):GetDataStore("LogDataStore")
local stonename = "Stone"
local stonestore = game:GetService("DataStoreService"):GetDataStore("StoneDataStore")
local coalname = "Coal"
local coalstore = game:GetService("DataStoreService"):GetDataStore("CoalDataStore")
local ProgressDataStore = game:GetService("DataStoreService"):GetDataStore("ProgressDataStore")
game.Players.PlayerAdded:Connect(function(player)
--input folder into player
local folder = Instance.new("Folder")
folder.Name = "leaderstats"
folder.Parent = player
local folder2 = Instance.new("Folder")
folder2.Name = "materialstorefolder"
folder2.Parent = player
local folder3 = Instance.new("Folder")
folder3.Name = "backpack"
folder3.Parent = player
local progressfolder = Instance.new("Folder")
progressfolder.Parent = player
progressfolder.Name = "Progress"
local logCurrency = Instance.new("IntValue")
local coalCurrency = Instance.new("IntValue")
local stoneCurrency = Instance.new("IntValue")
local Currency = Instance.new("StringValue")
local currency = Instance.new("IntValue")
local CURRENCY = Instance.new("IntValue")
logCurrency.Name = logname
logCurrency.Parent = folder2
coalCurrency.Name = coalname
coalCurrency.Parent = folder2
stoneCurrency.Name = stonename
stoneCurrency.Parent = folder2
currency.Name = currencyName
currency.Parent = folder
Currency.Name = CurrencyName
Currency.Parent = folder
CURRENCY.Name = Currencyname
CURRENCY.Parent = folder
local logid = logname.."-"..player.UserId
local savedlogdata = nil
local coalid = coalname.."-"..player.UserId
local savedcoaldata = nil
local stoneid = stonename.."-"..player.UserId
local savedstonedata = nil
local ID = currencyName.."-"..player.UserId
local savedData = nil
local Id = CurrencyName.."-"..player.UserId
local SavedData = nil
local iD = Currencyname.."-"..player.UserId
local Saveddata = nil
pcall(function()
savedlogdata = DataStore:GetAsync(logid)
savedcoaldata = DataStore:GetAsync(coalid)
savedstonedata = DataStore:GetAsync(stoneid)
savedData = DataStore:GetAsync(ID)
SavedData = dataStore:GetAsync(Id)
Saveddata = Datastore:GetAsync(iD)
end)
if savedlogdata ~= nil then
logCurrency.Value = savedlogdata
else
logCurrency.Value = 100
end
if savedstonedata ~= nil then
stoneCurrency.Value = savedstonedata
else
stoneCurrency.Value = 100
end
if savedcoaldata ~= nil then
coalCurrency.Value = savedcoaldata
else
coalCurrency.Value = 10
end
if savedData ~= nil then
currency.Value = savedData
else
currency.Value = 10
end
if SavedData ~= nil then
Currency.Value = SavedData
else
Currency.Value = "Serf"
end
if Saveddata ~= nil then
CURRENCY.Value = Saveddata
else
CURRENCY.Value = 0
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local COALID = coalname.."-"..player.UserId
DataStore:SetAsync(COALID,player.materialstorefolder[coalname].Value)
local STONEID = stonename.."-"..player.UserId
DataStore:SetAsync(STONEID,player.materialstorefolder[stonename].Value)
local LOGID = logname.."-"..player.UserId
DataStore:SetAsync(LOGID,player.materialstorefolder[logname].Value)
local ID = currencyName.."-"..player.UserId
DataStore:SetAsync(ID,player.leaderstats[currencyName].Value)
local Id = CurrencyName.."-"..player.UserId
dataStore:SetAsync(Id,player.leaderstats[CurrencyName].Value)
local iD = Currencyname.."-"..player.UserId
Datastore:SetAsync(iD,player.leaderstats[Currencyname].Value)
end)
game:BindToClose(function()
for i,player in pairs(game.Players:GetPlayers()) do
if player then
player:Kick("This game is shutting down and saving your data")
end
wait(5)
end
end)