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
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.
alright thanks, sorry for the late response tho, also i fixed it but thank you