I've been using DataStores for a while. Now today, I watched a tutorial on saving tables. I did what I suppose to do, but my data(which is a table) consist of nil indexes.
I have no idea how to fix it, I have checked if my GetAsync() only has 1 parameter, looked at the DevForum. No solutions. I EVEN checked if I was using the correct key.
Code(Server Sided):
local dataStoreService = game:GetService("DataStoreService")
local replicatedStorage = game:GetService("ReplicatedStorage")
local powerDataStore = dataStoreService:GetDataStore("PowerDataStore")
local availablePowers = replicatedStorage:WaitForChild("PlaceHolders").Powers
game.Players.PlayerAdded:Connect(function(player)
local AvailablePowersFolder = Instance.new("Folder", player)
AvailablePowersFolder.Name = "AvailablePowers"
local data
local success, Error = pcall(function()
data = powerDataStore:GetAsync("AvailablePowerData-"..player.UserId)
end)
if success and data ~= nil then
print(data)
for _, v in pairs(data) do
if replicatedStorage.PlaceHolders.Powers:FindFirstChild(v.Name) then
local powerValue = Instance.new("StringValue", AvailablePowersFolder)
powerValue.Name = v.Name
end
end
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local powerTable = {}
for _, v in pairs(player["AvailablePowers"]:GetChildren()) do
table.insert(powerTable,v.Name)
for _, v in pairs(powerTable) do
print(v)
end
end
if #game:GetService("Players"):GetChildren() == 1 then
-- it will fire BTC function instead,so datastore request will not be dropped
else
success, Error = pcall(function()
powerDataStore:SetAsync("AvailablePowerData-"..player.UserId, powerTable)
if success then
print("Saved data! - ".. player.Name)
else
warn(Error)
end
end)
end
end)
game:BindToClose(function()
for _, player in pairs(game:GetService("Players"):GetPlayers()) do
local powerTable = {}
for _, v in pairs(player["AvailablePowers"]:GetChildren()) do
table.insert(powerTable,v.Name)
end
local success, Error = pcall(function()
powerDataStore:SetAsync("AvailablePowerData-"..player.UserId, powerTable)
end)
if success then print("Saved data on BTC! - ".. player.Name) end
end
end)
ANY help would be appreciated!
