Еще вопрос. Пытаюсь использовать одну библиотеку, реализующую ооп. В коде что ниже: класс SpecialVehicle - наследник класса Vehicle.
Vehicle = class( "Vehicle",
{
vehicleElement;
__init = function( self, model, x, y, z )
self.vehicleElement = createVehicle( model, x, y, z )
end;
} )
SpecialVehicle = class( "SpecialVehicle", Vehicle,
{
blow = function( self )
blowVehicle( self.vehicleElement )
end;
} )
addCommandHandler( "spveh",
function( cmd, model )
local x, y, z = getElementPosition( localPlayer )
myVehicle = SpecialVehicle( model, x+2, y, z )
end
)
addCommandHandler( "blowveh",
function()
myVehicle:blow()
end
)
На строке 13 выдает ошибку, якобы self.vehicleElement = nil. Я так понял это из-за того, что при наследовании, в SpecialVehicle передаются все данные класса Vehicle, но передаются единожды, и vehicleElement хоть и передался со значением, которое у него на тот момент было, является уже другим vehicleElement, принадлежащим только SpecialVehicle, следовательно когда срабатывает конструктор, меняется только значение в классе Vehicle, а метод blow пытается использовать старое, ранее полученное значение (nil).
А вопрос в том, недостаток ли это "библиотеки", или в целом в луашном ооп не сделать норм?