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)