You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
local USE_FALLBACK_INTERFACE = false
|
|
|
|
--Console Code from adil modified for use with STDlib
|
|
require("stdlib.gui.gui")
|
|
|
|
local function create_gui_player(player)
|
|
if player.gui.left.console then player.gui.left.console.destroy() end
|
|
local c=player.gui.left.add{type='frame',name='console',direction='horizontal'}
|
|
local t = c.add{type='textfield',name='console_line'}
|
|
t.style.minimal_width=600
|
|
t.style.maximal_width=600
|
|
c.add{type='button', name='console_enter',caption='<', tooltip="Run Script"}
|
|
c.add{type='button', name='console_clear', caption='C', tooltip="Clear Input"}
|
|
c.add{type='button', name ='console_close', caption="X", tooltip="Close"}
|
|
end
|
|
|
|
--console.create_gui = function(player)
|
|
local function create_gui(player)
|
|
--if not sent with a player, then enable for all players?
|
|
if not (player and player.valid) then
|
|
for _, cur_player in pairs(game.players) do
|
|
create_gui_player(cur_player)
|
|
end
|
|
else
|
|
create_gui_player(player)
|
|
end
|
|
end
|
|
|
|
local function handler(event)
|
|
local i=event.element.player_index
|
|
local p=game.players[event.player_index]
|
|
--if second then second=false return end
|
|
local s=p.gui.left.console.console_line.text
|
|
assert(loadstring(s))()
|
|
game.write_file('console.log',s..'\n',true,i)
|
|
end
|
|
Gui.on_click("console_enter", handler)
|
|
|
|
local function close(event)
|
|
local p = game.players[event.player_index]
|
|
p.gui.left.console.destroy()
|
|
end
|
|
Gui.on_click("console_close", close)
|
|
|
|
local function clear(event)
|
|
local p = game.players[event.player_index]
|
|
p.gui.left.console.console_line.text = ""
|
|
end
|
|
Gui.on_click("console_clear", clear)
|
|
|
|
--Fallback interface --- set USE_FALLBACK_INTERACE = true and
|
|
--just using a require("path.to.console") in your control will
|
|
--create the console interface, this interface is only recomended for local testing.
|
|
--If more then 1 mod adds it, the first mod to add it will be the enviorment used
|
|
if USE_FALLBACK_INTERFACE and not remote.interfaces.console then
|
|
remote.add_interface("console", {show = function(player) create_gui(player) end})
|
|
end
|
|
|
|
--return the create_gui function
|
|
--example usage:
|
|
--remote.add_interface("my_interface", {show=require("path.to.console")})
|
|
--/c remote.call("my_interface", "show", game.player)
|
|
return create_gui
|
|
|