local eventId = 0 local eventList = {} function scheduleEvent(func, delay) eventId = eventId + 1 local id = eventId local function proxyFunc() if eventList[id] then if eventList[id].active then func() end eventList[id] = nil end end eventList[id] = { func = proxyFunc, active = true } if delay and delay > 0 then g_dispatcher.scheduleEvent(proxyFunc, delay) else g_dispatcher.addEvent(proxyFunc, false) end return id end function addEvent(func) return scheduleEvent(func, 0) end function removeEvent(id) if id and eventList[id] then eventList[id].active = false return true end end