Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

why are self variables erroring as nil?

Asked by
xEiffel 280 Moderation Voter
5 years ago

In a server module called "ServerNetwork" it has a constructor with a list of connections one of them being a event responder:

table.insert(self.connections, self._fireBullet.OnServerEvent:Connect(
    function(local_player, tool)
        global_tool:_fireBullet(tool);
    end
));

global_tool is a separate module and I am calling global_tool's constructor before all of this.

function _globalTool:_fireBullet(player, tool_name)
    if (self:_hasAuthority(tool_name)) then
        if (self._goodFireRate:InvokeClient(player)) then
            -- move bullet creation to :_createBullet()
            local bullet = bullets:FindFirstChild("Bullet"):Clone();
        end;
    end;
end;

Everything is all fine until it gets to the "self._goodFireRate" It says attempt to index a nil value, and I dont understand why. This is my constructor in global_tool.

local _globalTool = {}
_globalTool.__index = _globalTool;

function _globalTool.new(player)
    local self = setmetatable({
        connections = {},
        ammos = {};
    }, _globalTool);

    self._goodFireRate = shared_tools:FindFirstChild("GoodFireRate");

    return self;
end;

Thanks for reading

0
IIRC if you want to use the self variable you have to use methods instead of functions, so globalTool.new would have to be redefined as globalTool:new SlimeMan22 60 — 5y
0
Its still erroring as nil xEiffel 280 — 5y

Answer this question