So im making this datastore which saves the player`s owned cars, but it only works with one bool value and i need to save 40 of them, currently i have 2 in the script for testing purposes but the bool values dont save for some reason, what could that be? and how do i fix it?

local DataStore = game:GetService("DataStoreService")
local ds1 = DataStore:GetDataStore("CashTest")
local ds2 = DataStore:GetDataStore("CarsTest")
local success, err = pcall(function()

game.Players.PlayerAdded:Connect(function(plr)
	wait(1)

	local Cars = Instance.new("Folder")
	Cars.Name = "OwnedCars"
	Cars.Parent = plr
	
-----------------------------------------------------------------------------------1	
		local Stalion_485 = Instance.new("BoolValue", Cars)
		Stalion_485.Name = "Stalion_485Owned"
		Stalion_485.Value = ds2:GetAsync(plr.UserId.."-Stalion_485", Cars.Stalion_485Owned.Value) or false
	
				
		--game.Players.PlayerRemoving:Connect(function(plr)
		Stalion_485.Changed:connect(function()
		print("Saving")
		wait(0.5)
    	ds2:SetAsync(plr.UserId.."-Stalion_485", Cars.Stalion_485Owned.Value)
		wait(0.5)
		print("Saved")
	end)
-----------------------------------------------------------------------------------2	
		local Stalion_817 = Instance.new("BoolValue", Cars)
		Stalion_817.Name = "Stalion_817Owned"
		Stalion_817.Value = ds2:GetAsync(plr.UserId.."-Stalion_817", Cars.Stalion_817Owned.Value) or false
	
				
		--game.Players.PlayerRemoving:Connect(function(plr)
		Stalion_817.Changed:connect(function()
		print("Saving")
		wait(0.5)
    	ds2:SetAsync(plr.UserId.."-Stalion_817", Cars.Stalion_817Owned.Value)
		wait(0.5)
		print("Saved")
	end)

---------------------------------------------------------------------------------Cash
	local Cars = plr:FindFirstChild("OwnedCars")
	local leader = Instance.new("Folder", plr)
	leader.Name = "leaderstats"
	
	local Cash = Instance.new("IntValue", leader)
	Cash.Name = "Cash"
	
	Cash.Value = ds1:GetAsync(plr.UserId) or 20000
	ds1:SetAsync(plr.UserId.."-cash", Cash.Value)
	--ds2:SetAsync(plr.UserId.."-Stalion_485", Cars.Stalion_485Owned.Value)
	--ds2:SetAsync(plr.UserId.."-Stalion_485", Cars.Stalion_817Owned.Value)
	
	--wait(5)
	Cash.Changed:connect(function()
		print("SavingCash")
		
		
		ds1:SetAsync(plr.UserId.."-cash", Cash.Value)
	end)
	
end)

game.Players.PlayerRemoving:connect(function(player)
	
	local SavedData = Instance.new("BindableEvent")
	ds1:setAsync(player.UserId, player.leaderstats.Cash.Value)--Cash
	ds2:setAsync(player.UserId, player.Cars.Stalion_485Owned.Value)--1
	ds2:setAsync(player.UserId, player.Cars.Stalion_817Owned.Value)--1
	print("SavingData")
	
	SavedData:Fire()

game:BindToClose(function()
    SavedData.Event:Wait()
end)
end)
end)

2 comments

0

You should try doing this in a less awkward order. I don't think you're using a Bindable Event correctly either. Create your leaderstats the same time, get data at the same time, and save data at the same time when the player leaves.

0

alright thanks, sorry for the late response tho, also i fixed it but thank you