I’m trying to make a sort of RTS DataStore where Units are stored. Upon Getting the datastore value, it always returns an empty array. I added a couple of print statements and proved that the array returned from the datastore is empty. I would love some help or insight into this Code:
local DataStore = game:GetService("DataStoreService") local UnitStore3 = DataStore:GetDataStore("UnitDataStore") game.Players.PlayerAdded:Connect(function(plr) repeat wait() until plr.Character local OwnedUnits = Instance.new("Folder",workspace) OwnedUnits.Name = plr.Name.."_Units" local Units local success, eror = pcall(function() local UUnits = UnitStore3:GetAsync("OwnedUnits_"..plr.Name) Units = game:GetService("HttpService"):JSONDecode(UUnits) print(#Units) end) if success then if #Units ~= 0 then for k,v in pairs(Units) do local NewUnit = game.ReplicatedStorage.Units:FindFirstChild(v.Name) NewUnit = NewUnit:Clone() NewUnit.Parent = OwnedUnits NewUnit:MoveTo((plr.Character.HumanoidRootPart.CFrame * CFrame.new(0,0,2).Position)) end else local NewUnit = game.ReplicatedStorage.Units.Swordsman:Clone() NewUnit.Parent = OwnedUnits NewUnit:MoveTo((plr.Character.HumanoidRootPart.CFrame * CFrame.new(0,0,2).Position)) local SaveUnits = {} for k,v in pairs(OwnedUnits:GetChildren()) do table.insert(SaveUnits,v) print(v.Name) end local Encoded = game:GetService("HttpService"):JSONEncode(SaveUnits) UnitStore3:SetAsync("OwnedUnits_"..plr.Name, Encoded) end elseif eror then local SaveUnits = {} for k,v in pairs(OwnedUnits:GetChildren()) do table.insert(SaveUnits,v.Name) print(v.Name) end local NewUnit = game.ReplicatedStorage.Units.Swordsman:Clone() NewUnit.Parent = OwnedUnits NewUnit:MoveTo((plr.Character.HumanoidRootPart.CFrame * CFrame.new(0,0,2).Position)) UnitStore3:SetAsync("OwnedUnits_"..plr.Name,game:GetService("HttpService"):JSONEncode(SaveUnits:GetChildren())) end end) game.Players.PlayerRemoving:Connect(function(plr) local OwnedUnits = workspace:FindFirstChild(plr.Name.."_Units"):GetChildren() local SaveUnits = {} for k,v in pairs(OwnedUnits:GetChildren()) do table.insert(SaveUnits,v) end UnitStore3:SetAsync("OwnedUnits_"..plr.Name,game:GetService("HttpService"):JSONEncode(SaveUnits:GetChildren())) end)