Hello all!
So recently, my datastore's started to return newly inputted values as "NIL" and I am not sure exactly as to why!
Any and all help is appreciated; I do not understand in the script that'd 'cause this problem, because everything's proper with the others as per the image.
NOTE Please view the image in the gyazo link below to see how "LAUNCHED" returns nil and the others are returning correctly!
Thank you!
image -- https://gyazo.com/267954161c2b15169e7862751ff8eee7
local DSS = game:GetService("DataStoreService")
local RepStorage = game:GetService("ReplicatedStorage")
local GuardianDataStore = DSS:GetDataStore("GuardiansDataStorage")--GuardiansDataStorage
local PlayerDataTemplate = {
--["Name"] = {"ValueObject", defaultValue},
["Gold"] = {"NumberValue", 1000},
["Level"] = {"NumberValue", 0},
["Wins"] = {"NumberValue", 0},
["Kills"] = {"NumberValue", 0},
["Diamonds"] = {"NumberValue", 0},
["Emeralds"] = {"NumberValue", 0},
["XP"] = {"NumberValue", 0},
--// Class Details \\--
["TacticianLevel"] = {"NumberValue", 0},
["TacticianXP"] = {"NumberValue", 0},
["KnightLevel"] = {"NumberValue", 0},
["KnightXP"] = {"NumberValue", 0},
["DemonLevel"] = {"NumberValue", 0},
["DemonXP"] = {"NumberValue", 0},
["CorsairLevel"] = {"NumberValue", 0},
["CorsairXP"] = {"NumberValue", 0},
--//chars\\--
["Ivan"] = {"BoolValue", false},
["Ragnoroc"] = {"BoolValue", false},
["Jake"] = {"BoolValue", true},
["Poleski"] = {"BoolValue", false},
["DeRetto"] = {"BoolValue", false},
["Bianca"] = {"BoolValue", false},
["Serge"] = {"BoolValue", false},
["Hektor"] = {"BoolValue", false},
["Akas"] = {"BoolValue", false},
["Bane"] = {"BoolValue", false},
["Splinter"] = {"BoolValue", false},
["Elsa"] = {"BoolValue", false},
["Doug"] = {"BoolValue", false},
["Blacksmith"] = {"BoolValue", false},
["HirateTadaoki"] = {"BoolValue", false},
--//weps\\--
["SwordC"] = {"BoolValue", false},
["SwordU"] = {"BoolValue", false},
["SwordR"] = {"BoolValue", false},
["SwordE"] = {"BoolValue", false},
["SwordL"] = {"BoolValue", false},
["AxeC"] = {"BoolValue", false},
["AxeU"] = {"BoolValue", false},
["AxeR"] = {"BoolValue", false},
["AxeE"] = {"BoolValue", false},
["AxeL"] = {"BoolValue", false},
["SpearC"] = {"BoolValue", false},
["SpearU"] = {"BoolValue", false},
["SpearR"] = {"BoolValue", false},
["SpearE"] = {"BoolValue", false},
["SpearL"] = {"BoolValue", false},
["ScytheC"] = {"BoolValue", false},
["ScytheU"] = {"BoolValue", false},
["ScytheR"] = {"BoolValue", false},
["ScytheE"] = {"BoolValue", false},
["ScytheL"] = {"BoolValue", false},
["DaggerC"] = {"BoolValue", false},
["DaggerU"] = {"BoolValue", false},
["DaggerR"] = {"BoolValue", false},
["DaggerE"] = {"BoolValue", false},
["DaggerL"] = {"BoolValue", false},
["MaceC"] = {"BoolValue", false},
["MaceU"] = {"BoolValue", false},
["MaceR"] = {"BoolValue", false},
["MaceE"] = {"BoolValue", false},
["MaceL"] = {"BoolValue", false},
["Silence"] = {"BoolValue", false},
["Duskbomb"] = {"BoolValue", false},
["Lightbane"] = {"BoolValue", false},
["Darkbane"] = {"BoolValue", false},
["Mirage"] = {"BoolValue", false},
["DeRettosDagger"] = {"BoolValue", false},
["Bazooka"] = {"BoolValue", false},
["Shotgun"] = {"BoolValue", false},
["Winterviel"] = {"BoolValue", false},
["SmithsHammer"] = {"BoolValue", false},
["Soulshard"] = {"BoolValue", false},
["VioletExecution"] = {"BoolValue", false},
["StarterDagger"] = {"BoolValue", true},
["Katana"] = {"BoolValue", false},
--// Used for Legendary Wep Upgrades \\--
["Hold"] = {"BoolValue", false},
["HoldA"] = {"BoolValue", false},
["HoldD"] = {"BoolValue", false},
["HoldSp"] = {"BoolValue", false},
["HoldSc"] = {"BoolValue", false},
["HoldM"] = {"BoolValue", false},
--// Extras \\--
["IvePlayedB4"] = {"BoolValue", false},
["StarterPackCoins"] = {"BoolValue", false},
--// Promo Codes \\--
["LAUNCHED"] = {"BoolValue", false},
--// Achievements \\--
["ReachedLevel100"] = {"BoolValue", false},
["Level150"] = {"BoolValue", false}
}
game.Players.PlayerAdded:Connect(function(player)
local playerKey = "Player-ID:"..player.UserId
--This can stay since it's no big deal:
local Bools = Instance.new("Folder", player)
Bools.Name = "Bools"
local stats = Instance.new("Folder",player)
stats.Name = "stats"
for name, object in pairs(PlayerDataTemplate) do
local newValue = Instance.new(object[1])
newValue.Name = name
newValue.Value = object[2]
if object[1] == "NumberValue" or object[1] == "StringValue" then
newValue.Parent = stats
else
newValue.Parent = Bools
end
end
local GetSave;
local success, message = pcall(function()
GetSave = GuardianDataStore:GetAsync(playerKey)
end)
if success then
--DataStore worked and retrieved something. We continue.
if GetSave then
for _, object in ipairs(Bools:GetChildren()) do
if object:IsA("BoolValue") then
print(object.Name, GetSave[object.Name])
object.Value = GetSave[object.Name]
end
end
for _, object in ipairs(stats:GetChildren()) do
if object:IsA("StringValue") or object:IsA("NumberValue") then
object.Value = GetSave[object.Name]
end
end
print("Data loaded for "..player.Name)
else
end
else
print("Problem loading data!")
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local playerKey = "Player-ID:"..player.UserId
local Bools = player.Bools
local stats = player.stats
--the table we write to using our current player values
local tableToSave = {};
for _, object in ipairs(Bools:GetChildren()) do
if object:IsA("BoolValue") then
tableToSave[object.Name] = object.Value
end
end
for _, object in ipairs(stats:GetChildren()) do
if object:IsA("StringValue") or object:IsA("NumberValue") then
tableToSave[object.Name] = object.Value
end
end
local success, message = pcall(function()
GuardianDataStore:SetAsync(playerKey, tableToSave)
end)
if success then
if message then
print(message)
end
print("saved success for "..player.Name)
end
end)

2 comments
any errors? add some debug prints in places of suspicion
No errors outputted what so ever with the system.