Broadcast = {} local _events = {} function Broadcast.AddListener(eventName, Func, Obj) if _events[eventName] == nil then _events[eventName] = {} end local event = _events[eventName] event[#event + 1] = { func = Func, obj = Obj } end function Broadcast.RemoveListener(eventName, func) local event = _events[eventName] if event == nil then return end for _, e in pairs(event) do if e.func == func then event[_] = nil return end end end function Broadcast.Send(eventName, ...) local event = _events[eventName] if event == nil then return end for _, e in pairs(event) do e.func(e.obj, ...) end end BroadcastEvent = { OnJoinsChange = 'OnJoinsChange' }