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

BindableEvent's passed argument isn't recognized when paired with ModuleScript?

Asked by 8 years ago
--Note: This isn't my exact code, but represents exactly what I'm doing.

EventName.Event:connect(function(plr, cost, key)
local Module = require(plr.ModuleScript)
print(key) --Returns the key which is declared as: local key = "KeyName" in script firing the event.
print(Module.key) --Returns nil even though the exact variable inside the module script is already declared as: ModuleScript.KeyName = false, instead doesn't recognize it and sets it as nil.
if Module.key == false then --Doesn't find the key in the script even though it is already declared before this, so it will return: print("key is true or nil, hopefully not nil, should be true."), because it is nil as it didn't find it.
--do code like: key = true
else
return print("key is true or nil, hopefully not nil, should be true.")
end
end)


This really irritates me because this would make my code so much more simplisitic instead I'd have to write a lot code extra to cover up for it, is there a way to make it so it knows what key is and not assume it's nothing?

0
No shortcuts. JamesLWalker 297 — 8y

1 answer

Log in to vote
0
Answered by 8 years ago

I'm not entirely sure what you're asking but from what I get you want it to basically understand the variable right away from the module? If so something I use when working with modules to make life a heck of a lot easier is this

put this at the end of your module for the return you do not need anything else in the module just treat it as a normal script that you're storing variables functions etc whatever in.

return setmetatable({},{
__call=function(t,env)
    for i, v in pairs(getfenv()) do
        if i ~= 'script' then
            env[i]=v
        end
    end
end
})

Now for the script you're hooking up the module to use this as the require.

require(script.Module)(getfenv())

This will essentially make it so your module is read as though it is just code already within the script your connecting it to. You do not need to make separate variables for functions from the module or whatever you get the idea. Idk if this helped with your problem but hopefully it did in some way.

Ad

Answer this question