I’m creating a weapons system but I have a slight issue. I’ve created a player object and I’d like for all the weapon objects to inherit from this player object. The issue is that when I create a new weapon object, the previous weapon objects are overwritten. Below is some example code demonstrating this:
local player_class = {}
player_class.__index = player_class
function player_class.new(player)
local object = {}
setmetatable(object, player_class)
object.player = player
return object
end
local weapon = {}
weapon.__index = weapon
setmetatable(weapon, player_class)
function weapon.new(name, player_object)
local object = player_object
setmetatable(object, weapon)
object.name = name
return object
end
game:GetService("Players").PlayerAdded:Connect(function(playerAdded)
local player_object = player_class.new(playerAdded)
local weapon_1 = weapon.new("weapon_1", player_object)
local weapon_2 = weapon.new("weapon_2", player_object)
print(weapon_1.name)
print(weapon_2.name)
--[[
Output
weapon_2 - Server - Script:32
weapon_2 - Server - Script:33
Desired output
weapon_1 - Server - Script:32
weapon_2 - Server - Script:33
]]--
end)
How could I get the desired output while still maintaining the same structure?