Hi,
I’m learning OOP and trying to create an object named Data
that handles data. But I can’t seem to figure how to properly set it’s elements so that they could be obtainable in other functions with self.
Any help much appreciated!
Module:
local Data = {}
Data.__index = Data
function Data.New(Player, Name)
print("creating data for " .. Player.Name)
local NewData = {}
setmetatable(NewData, Data)
NewData.Player = Player
print("data for " .. Player.Name .. " created")
return NewData
end
function Data:GetData()
print("getting data for " .. self.Player.Name) -- ERROR: attempt to index nil with 'Player'
end
return Data
Script:
local Players = game:GetService("Players")
local Data = require(script.Data)
local DataObjects = {}
local function PlayerAdded(Player)
local PlayerData = Data.New(Player, "PlayerData")
print(PlayerData.Player.Name) -- prints just fine
PlayerData.GetData() -- function doesn't see PlayerData object elements, thus errors?
DataObjects[Player.UserId] = PlayerData
end
Players.PlayerAdded:Connect(PlayerAdded)