local DataMetatable = {}
function DataMetatable.new(name, save)
if type(name) ~= "string" then return end
local self = setmetatable({}, DataMetatable)
self.Name = name
for _type, value in pairs(save) do
self[_type] = value
if _type == "leaderstats" then
setmetatable(save[_type], {
__newindex = function(_table, key, value)
rawset(_table, key, value)
print(key, value)
end
})
end
end
return self
end
local DatastoreController = {}
function DatastoreController:Initialize(Player)
local save
pcall(function()
save = DataStore:GetAsync(tostring(Player.userId).."SAVE")
end)
save = save or DefaultSave
local _playerData = {}
for _type, data in pairs(save) do
if _type == "leaderstats" then
local folder = DatastoreToFolder(save[_type] or {})
folder.Name = "leaderstats"
folder.Parent = Player
end
_playerData[_type] = data
end
PlayerData[Player.Name] = DataMetatable.new(Player.Name, _playerData)
PlayerData[Player.Name]["leaderstats"]["Coins"] = 2
end
no, _type is a string and also, when I do this it prints
function DataMetatable.new(name, save)
if type(name) ~= "string" then return end
local self = setmetatable({}, DataMetatable)
self.Name = name
print(self.Name)
for _type, value in pairs(save) do
self[_type] = value
if _type == "leaderstats" then
setmetatable(save[_type], {
__newindex = function(_table, key, value)
rawset(_table, key, value)
print(key, value)
end
})
end
self[_type]["test"] = 2
end
return self
end
but not when I call it out of the function DataMetatable.new