local DSS = game:GetService("DataStoreService")
local DS = DSS:GetDataStore("meo222223")

local ValuesToCreate = {HasGame = {Name = "HasGame", className = "BoolValue", Value = false},
	Loaded = {Name = "Loaded", className = "BoolValue", Value = false}
	}

game.Players.PlayerAdded:Connect(function(Player)
	local Folder = Instance.new("Folder", Player)
	Folder.Name = "PlayerData"
	
	for i,v in pairs(ValuesToCreate)do
		local Val = Instance.new(v.className, Folder)
		Val.Name = v.Name
	end
	
	local SavedData
	local success, errormsg = pcall(function()
		SavedData = DS:GetAsync(Player.UserId)
	end)
	if success and SavedData then
		print("LOADED DATA OF PLAYER "..Player.Name..": "..game:GetService("HttpService"):JSONEncode(SavedData))
		for i,v in pairs(SavedData)do
			local FindVal = Folder:FindFirstChild(v.Name)
			if FindVal and FindVal.className == v.className then
				FindVal.Value = v.Value
			end
		end
		Folder.Loaded.Value = true
	elseif success and not SavedData then
		for i,v in pairs(Folder:GetChildren())do
			if v.Name ~= "Loaded" then
				v.Value = ValuesToCreate[v.Name].Value
			end
		end
	elseif errormsg then
		warn("Error while trying to get saved data of player "..Player.Name..": "..errormsg)
	end
end)

game.Players.PlayerRemoving:Connect(function(Player)
	if not game:GetService("RunService"):IsStudio() then
		local Folder = Player:WaitForChild("PlayerData")
		local SaveData = {}
		if Folder.Loaded then
			for i,v in pairs(Folder:GetChildren())do
				SaveData[v.Name] = {Name = v.Name, className = v.className, Value = v.Value}
			end
		end
		print("SAVED DATA OF PLAYER "..Player.Name..": "..game:GetService("HttpService"):JSONEncode(SaveData))
		local success, errormsg = pcall(function()
			DS:SetAsync(Player.UserId, SaveData)
		end)
		if errormsg then
			warn("Couldn't save data of player "..Player.Name..": "..errormsg)
		end
	end
end)

game:BindToClose(function()
	for i, Player in pairs(game.Players:GetPlayers())do
		local Folder = Player:WaitForChild("PlayerData")
		local SaveData = {}
		if Folder.Loaded then
			for i,v in pairs(Folder:GetChildren())do
				SaveData[v.Name] = {Name = v.Name, className = v.className, Value = v.Value}
			end
		end
		print("SAVED DATA OF PLAYER "..Player.Name..": "..game:GetService("HttpService"):JSONEncode(SaveData))
		local success, errormsg = pcall(function()
			DS:SetAsync(Player.UserId, SaveData)
		end)
		if errormsg then
			warn("Couldn't save data of player "..Player.Name..": "..errormsg)
		end
	end
end)
	

So I asked this question like months ago and I found an answer but I'm not satisfied with the answer. The answer was that you can't test your datastore out in studio which I think can't be the real deal. So I'm asking again could somebody help me with my datastore it doesn't work in ROBLOX studio but ingame it does.

3 comments

0

Is your "Studio Access to API" Enabled? You need it to be for DataStores to work in Studio

0

Yes of course it's enabled.

0

lol, ok, just checking