-- table utility functions -- local pairs = pairs local function tbl_flip(tbl) local r = {} for k,v in pairs(tbl) do r[v] = k end return r end -- debug print functions -- local print_state = {skip=defines.print_skip.never,game_state=false} local dump_state = {comment=false,sortkeys=false,sparse=true,compact=true,indent="\t"} local dump_func = serpent.block local log_func = log local function dumps(txt) log_func(txt) for i,plr in pairs(game.connected_players) do plr.print(txt,print_state) end end local function dump(...) for n,arg in pairs{...} do dumps(dump_func(arg,dump_state)) end end -- dump all gui open/close events local lookup_gt = tbl_flip(defines.gui_type) local lookup_ev = tbl_flip(defines.events) local function evt_gui_open_close(pEvent) local plr = game.get_player(pEvent.player_index) dump{ name = lookup_ev[pEvent.name] or "nil", gui_type = lookup_gt[pEvent.gui_type] or "nil", player = plr, opened = plr.opened or "nil", event = pEvent, } end script.on_event({ defines.events.on_gui_closed, defines.events.on_gui_opened, }, evt_gui_open_close)