Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

my data store script doesnt give any errors but it doesnt save my data, why?

local DataStoreService = game:GetService("DataStoreService")
local MyDataStore = DataStoreService:GetDataStore("Data")

game.Players.PlayerAdded:Connect(function(player)
	
	local values = Instance.new("Folder")
	values.Name = "Values"
	values.Parent = player
	
	local Level = Instance.new("IntValue")
	Level.Name = "Level"
	Level.Parent = values
	local Race = Instance.new("IntValue")
	Race.Name = "Race"
	Race.Parent = values
	local Race1 = Instance.new("Folder")
	Race1.Name = "Hollow"
	Race1.Parent = Race
	local Race2 = Instance.new("Folder")
	Race2.Name = "SoulReaper"
	Race2.Parent = Race
	local Shikai = Instance.new("IntValue")
	Shikai.Name = "Shikai"
	Shikai.Parent = Race2
	local Bankai = Instance.new("BoolValue")
	Bankai.Name = "Bankai"
	Bankai.Parent = Shikai
	local RaceSub1 = Instance.new("Folder")
	RaceSub1.Name = "Arrancar"
	RaceSub1.Parent = Race1
	local RaceSub2 = Instance.new("Folder")
	RaceSub2.Name = "VastoLorde"
	RaceSub2.Parent = Race1
	local RaceSub3 = Instance.new("Folder")
	RaceSub3.Name = "Adjuchas"
	RaceSub3.Parent = Race1
	local RaceVar1 = Instance.new("IntValue")
	RaceVar1.Name = "HollowVariant"
	RaceVar1.Parent = Race1
	local RaceSubVar = Instance.new("IntValue")
	RaceSubVar.Name = "ArranVar"
	RaceSubVar.Parent = RaceSub1
	local Res = Instance.new("IntValue")
	Res.Name = "Resurrection"
	Res.Parent = RaceSub1
	local ArTypes = Instance.new("Folder")
	ArTypes.Name = "Types"
	ArTypes.Parent = RaceSub1
	local ArType1 = Instance.new("BoolValue")
	ArType1.Name = "Adjuscar"
	ArType1.Parent = ArTypes
	local ArType2 = Instance.new("BoolValue")
	ArType2.Name = "Menoscar"
	ArType2.Parent = ArTypes
	local ArType3 = Instance.new("BoolValue")
	ArType3.Name = "Vastoscar"
	ArType3.Parent = ArTypes
	local VastoVar = Instance.new("IntValue")
	VastoVar.Name = "VastoVar"
	VastoVar.Parent = RaceSub2
	local AdjuVar  = Instance.new("IntValue")
	AdjuVar.Name = "Adjuvar"
	AdjuVar.Parent = RaceSub3
	
	local PlayerUserID = "Player_"..player.UserId
	
	--Load Data
	
	local data
	local success, errormessage = pcall(function()
		data = MyDataStore:GetAsync(PlayerUserID)
	end)
	
	if success then
		if data then
			print("Loading Player Data")
			Race.Value = data.Race
			Level.Value = data.Level
			Shikai.Value = data.Shikai
			Bankai.Value = data.Bankai
			RaceVar1.Value = data.Value
			RaceSubVar.Value = data.RaceSubVar
			Res.Value = data.Res
			ArType2.Value = data.ArType2
			ArType1.Value = data.ArType1
			ArType3.Value = data.ArType3
			VastoVar.Value = data.VastoVar
			AdjuVar.Value = data.AdjuVar
		else
			print("Player Has No Data")
		end
	end
	
end)

game.Players.PlayerRemoving:Connect(function(player)
	local PlayerUserID = "Player_"..player.UserId
	
	local data = {
		Race = player.Values.Race;
		Level = player.Values.Level;
		Shikai = player.Values.Race.SoulReaper.Shikai;
		Bankai = player.Values.Race.SoulReaper.Shikai.Bankai;
		RaceVar1 = player.Values.Race.Hollow.HollowVariant;
		RaceSubVar = player.Values.Race.Hollow.Arrancar.ArranVar;
		Res = player.Values.Race.Hollow.Arrancar.Resurrection;
		ArType1 = player.Values.Race.Hollow.Arrancar.Types.Adjuscar;
		ArType2 = player.Values.Race.Hollow.Arrancar.Types.Menoscar;
		ArType3 = player.Values.Race.Hollow.Arrancar.Types.Vastoscar;
		VastoVar = player.Values.Race.Hollow.VastoLorde.VastoVar;
		AdjuVar = player.Values.Race.Hollow.Adjuchas.Adjuvar
		
	}
	
	local success, errormessage = pcall(function()
		MyDataStore:SetAsync(PlayerUserID, game:GetService("HttpService"):JSONEncode(data))
	end)
	
	if success then
		print("Data Archived")
	else
		print("Data Corrupted")
		warn(errormessage)
	end
end)

the script is not long its just there is a lot of variables defined, but anyways when i join the game it prints everything it needs to but when i join back nothing is saved

1 answer

The problem is with your Player Removing event probably. Try to replace it with this:

game.Players.PlayerRemoving:Connect(function(player)

    local success, errormessage = pcall(function()


    local PlayerUserID = "Player_"..player.UserId

    local data = {
        Race = player.Values.Race;
        Level = player.Values.Level;
        Shikai = player.Values.Race.SoulReaper.Shikai;
        Bankai = player.Values.Race.SoulReaper.Shikai.Bankai;
        RaceVar1 = player.Values.Race.Hollow.HollowVariant;
        RaceSubVar = player.Values.Race.Hollow.Arrancar.ArranVar;
        Res = player.Values.Race.Hollow.Arrancar.Resurrection;
        ArType1 = player.Values.Race.Hollow.Arrancar.Types.Adjuscar;
        ArType2 = player.Values.Race.Hollow.Arrancar.Types.Menoscar;
        ArType3 = player.Values.Race.Hollow.Arrancar.Types.Vastoscar;
        VastoVar = player.Values.Race.Hollow.VastoLorde.VastoVar;
        AdjuVar = player.Values.Race.Hollow.Adjuchas.Adjuvar

    }

        MyDataStore:SetAsync(PlayerUserID, data) -- Just write data

   end)

    if success then
        print("Data Archived")
    else
        print("Data Corrupted")
        warn(errormessage)
    end
end)

Hope it helps

This discussion is preserved as it was. New answers, comments, and votes are closed.