Первая проблема заключается в том, что у вас есть инструкция возврата для конструктора в неправильном месте. Он должен быть внутри конструктора, а не снаружи:
Player = {}
Player.new = function(name, id)
local self = {}
name = name or "player"
id = id or 0
self.getName = function() return name end
self.getId = function() return id end
return self
end
Последовательный отступ в коде поможет сразу увидеть такие проблемы. Я предлагаю всегда иметь отступ end
на том же уровне, что и при открытии блока (независимо от того, является ли он function
, for
, do
или любым другим).
После решения этого проблема у вас есть проблема, упомянутая Nifim - вам нужно позаботиться о затенении Player
. Простейшим решением было бы добавить оператор возврата в конец player. lua:
Player = {}
-- `Player.new` and so on...
return Player
Вы также можете сделать Player
локальным, если хотите. Это не нужно, но может быть желательно.
Или Вы можете удалить назначение из main. lua:
require("scripts.player")
local player = Player.new()