(Sorry for bad grammar)
Hello, I have studied OOP myself like Inheritance and Composition, etc. And deep inheritance chain so I can understand why it can be messy.
Problem:
I notice when I try to add string to my code it return nil except it work for number. Any idea to fix this problem (that I already guess that’s common problem). You don’t need to answer entire script. ![]()
Here’s my (awful) module script.
local Entity = {}
Entity.__index = Entity
function Entity.new(name)
local self = setmetatable({
Name = name
}, Entity)
return self
end
function Entity:PrintInfo()
print("Name: " .. self.Name)
end
local Character = {}
Character.__index = Character
setmetatable(Character, { __index = Entity })
function Character.new(name, hp, level)
local self = Entity.new(name)
setmetatable(self, Character)
self.HP = hp
self.Level = level
return self
end
function Character:PrintInfo()
Entity:PrintInfo(self)
print("HP: " .. self.HP)
print("Level: " .. self.Level)
end
local PlayerCharacter = {}
PlayerCharacter.__index = PlayerCharacter
setmetatable(PlayerCharacter, { __index = Character })
function PlayerCharacter.new(name, hp, level, xp)
local self = Character.new(name, hp, level)
setmetatable(self, PlayerCharacter)
self.XP = xp
return self
end
function PlayerCharacter:PrintInfo()
Character:PrintInfo(self)
print("XP: " .. self.XP)
end
return {
Entity = Entity,
Character = Character,
PlayerCharacter = PlayerCharacter
}
Here’s how I call it in script
local chain = require(ReplicatedStorage.Folder.Entity)
local pc= chain.PlayerCharacter.new("Alex", 100, 80, 1000)