1 function exec_command(player)
2 if not player.admin then
3 player.print('You are not an admin. You may not use this mod. :(')
7 local f, lserr, pcs, pcerr, cmd
9 if player.gui.screen.some_luaconsole then
10 storage.cmd = player.gui.screen.some_luaconsole.input.text
13 cmd = storage.cmd or ""
14 cmd = cmd:gsub('game%.player([^s])', 'game.players['..player.index..']%1')
16 f, lserr = loadstring('local ipcs,ipcr ipcs,ipcr=pcall(function() '..cmd..' end) if not ipcs then game.players['..player.index..'].print(ipcr) end')
18 f, lserr = loadstring('game.players['..player.index..'].print('..cmd..')')
24 player.print(pcerr:sub(1, pcerr:find('\n')))
27 player.print(lserr:sub(1, lserr:find('\n')))
32 function toggleGui (player)
33 if player.gui.screen.some_luaconsole then
34 storage.cmd = player.gui.screen.some_luaconsole.input.text
35 player.gui.screen.some_luaconsole.destroy()
37 frame = player.gui.screen.add{type = 'frame', name = 'some_luaconsole', direction = 'vertical'}
39 local title_flow = frame.add{type = "flow", direction = "horizontal"}
40 title_flow.style.horizontally_stretchable = true
41 title_flow.style.horizontal_spacing = 8
43 local title_label = title_flow.add{type = 'label', caption = {'some-luaconsole.title'}, style = "frame_title"}
44 title_label.drag_target = frame
46 local title_pusher = title_flow.add{type = "empty-widget", style = "draggable_space_header"}
47 title_pusher.style.height = 24
48 title_pusher.style.horizontally_stretchable = true
49 title_pusher.drag_target = frame
51 local title_close_button = title_flow.add{type = "sprite-button", style = "frame_action_button", sprite = "utility/close", name = 'some-luaconsole-close', tooltip = {'some-luaconsole.close_tooltip'}}
54 frame.add{type = 'label', caption = {'some-luaconsole.inputlabel'}, style = "frame_title"}
57 local input = frame.add{type = 'text-box', name = 'input', style='some-luaconsole-input-textbox', enabled = admin}
58 input.word_wrap = true
59 input.style.maximal_height = (player.display_resolution.height/player.display_scale*0.6)
60 input.text = storage.cmd or ""
63 bottom_flow = frame.add{type='flow', direction='horizontal'}
64 bottom_flow.style.horizontally_stretchable = true
66 bottom_flow.add{type = 'button',
67 name = 'some-luaconsole-close',
69 caption = {'some-luaconsole.close'},
70 tooltip = {'some-luaconsole.close_tooltip'}
72 bottom_pusher = bottom_flow.add{type = "empty-widget", style = "draggable_space_header"}
73 bottom_pusher.style.height = 24
74 bottom_pusher.style.horizontally_stretchable = true
75 bottom_pusher.drag_target = frame
77 bottom_flow.add{type = 'button',
78 name = 'some-luaconsole-exec',
79 style='confirm_button',
80 caption = {'some-luaconsole.exec'},
81 tooltip = {'some-luaconsole.exec_tooltip'},
86 if not player.admin then
87 player.gui.screen.some_luaconsole.input.text = 'You are not an admin. You may not use this mod. :('
88 player.gui.screen.some_luaconsole.input.enabled = false
90 frame.force_auto_center()
96 script.on_event(defines.events.on_gui_click, function(event)
97 if event.element.name == 'some-luaconsole-exec' then
98 exec_command(game.players[event.player_index])
99 elseif event.element.name == 'some-luaconsole-close' then
100 toggleGui(game.players[event.player_index])
105 script.on_event('some-luaconsole-toggle', function(event)
106 toggleGui(game.players[event.player_index])
108 script.on_event('some-luaconsole-exec', function(event)
109 exec_command(game.players[event.player_index])