Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Why can't you use bindable events when called from ModuleScripts?

I was programming today and (thought) I had this genius idea to communicate in my game when a round has ended and when voting has ended. Heres what I had (just showing the concept):

--VotingController = ModuleScript
--GameController = ModuleScript
while true do
	VotingController:StartVoting()
	VotingEnded.Event:Wait()
	GameController:StartGame()
	GameEnded.Event:Wait()
	GameController:CleanUp()
	wait()
end

However, I realized that script was still halting after I called BindableEvent:Fire() inside the module scripts. Why doesn't this work? From my understanding, Bindables don't cross the client boundary, which means they only work in the environment they're used in. The same thing applies to ModuleScripts, which also don't cross the client/server boundary when required. So, as I expected, if you require a modulescript on the server, its still in the environment of that script. Thus, I should be able to use BindableEvents just fine.

Heres some simpler code with that concept in mind:

--MODULE SCRIPT
--Instances

local Bindable = script.Parent:WaitForChild("Event")

--module

local module = {}

--public functions

function module:Func()
	Bindable:Fire()
end

return module
--SERVER SCRIPT
--Instances

local Bindable = script:WaitForChild("Event")

--Modules

local Module = require(script:WaitForChild("ModuleScript"))

--Connections

Module:Func()
Bindable.Event:Wait()
print("Fired")

So, as I explained earlier, the script forever halts when I use Event:Wait(). Why does this happen? (And yes, I did make sure that the functions in the module script were working correctly, it is firing the event just fine)

Thanks.

1 answer

I'm retarded. I was firing the function and it wasn't running any code before it fired the event, so the event was being fired before the script reached the Bindable.Event:Wait() line. Sigh, back to the drawing board for this one.

1 comment

1

aw yeah this is big brain time

This discussion is preserved as it was. New answers, comments, and votes are closed.