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

0

any errors? add some debug prints in places of suspicion

0

No errors outputted what so ever with the system.