Cleaned Code

This commit is contained in:
Cooldude2606
2017-08-20 19:44:52 +01:00
parent c0668dac43
commit 75e3c904f0
9 changed files with 86 additions and 85 deletions

View File

@@ -22,7 +22,7 @@ local Exp_commands = {}
--Used mainly by the code to convert the inputs into a string --Used mainly by the code to convert the inputs into a string
function command_inputs_to_string(command) function command_inputs_to_string(command)
local str_inputs = '' local str_inputs = ''
for _,input in pairs(command[3]) do for _,input in pairs(command.inputs) do
if input == true then break end if input == true then break end
str_inputs = str_inputs..'<'..input..'> ' str_inputs = str_inputs..'<'..input..'> '
end end
@@ -30,13 +30,13 @@ function command_inputs_to_string(command)
end end
--Can be used to ensure the right number of inputs are given --Can be used to ensure the right number of inputs are given
function get_command_args(event,command) function get_command_args(event,command)
if not event.parameter then if #command[3] > 0 then return 'Invalid' else return end end if not event.parameter then if #command.inputs > 0 then return 'Invalid' else return end end
local args = {} local args = {}
for word in event.parameter:gmatch('%S+') do table.insert(args,word) end for word in event.parameter:gmatch('%S+') do table.insert(args,word) end
if command[3][#command[3]] == true then if command.inputs[#command.inputs] == true then
if #args < #command[3]-1 then return 'Invalid' end if #args < #command.inputs-1 then return 'Invalid' end
else else
if #args ~= #command[3] then return 'Invalid' end if #args ~= #command.inputs then return 'Invalid' end
end return args end return args
end end
--name is what is used in /command --name is what is used in /command
@@ -54,24 +54,24 @@ function define_command(name,help,inputs,restriction,event)
end end
--The magic for the commands. It is a hard bit of code so GL; but it will call the command event have some sanitisaion of the input --The magic for the commands. It is a hard bit of code so GL; but it will call the command event have some sanitisaion of the input
function load_command(command) function load_command(command)
if commands.commands[command[1]] then return end if commands.commands[command.name] then return end
commands.add_command(command[1],command_inputs_to_string(command)..command[2],function(event) commands.add_command(command.name,command_inputs_to_string(command)..command.help,function(event)
local command_data = nil local command_data = nil
for _,command_d in pairs(Exp_commands) do if event.name == command_d[1] then command_data = command_d break end end for _,command_d in pairs(Exp_commands) do if event.name == command_d[1] then command_data = command_d break end end
if event.player_index then if event.player_index then
local player = game.players[event.player_index] local player = game.players[event.player_index]
local temp_restriction = nil local temp_restriction = nil
if type(command[4]) == 'number' then temp_restriction = command[4] end if type(command.restriction) == 'number' then temp_restriction = command.restriction end
local restriction = temp_restriction or string_to_rank(command[4]).power or 0 local restriction = temp_restriction or string_to_rank(command.restriction).power or 0
if get_rank(player).power > restriction then player.print('401 - Unauthorized: Access is denied due to invalid credentials') return end if get_rank(player).power > restriction then player.print('401 - Unauthorized: Access is denied due to invalid credentials') return end
local args = get_command_args(event,command) local args = get_command_args(event,command)
if args == 'Invalid' then player.print('Invalid Input, /'..command[1]..' '..command_inputs_to_string(command)) return end if args == 'Invalid' then player.print('Invalid Input, /'..command.name..' '..command_inputs_to_string(command)) return end
command[5](player,event,args) command.event(player,event,args)
player.print('Command Complete') player.print('Command Complete')
else else
local args = get_command_args(event,command) local args = get_command_args(event,command)
if args == 'Invalid' then print('Invalid Input, /'..command[1]..' '..command_inputs_to_string(command)) return end if args == 'Invalid' then print('Invalid Input, /'..command.name..' '..command_inputs_to_string(command)) return end
command[5]('<server>',event,args) command.event('<server>',event,args)
print('Command Complete') print('Command Complete')
end end
end) end)

View File

@@ -39,23 +39,23 @@ function sudo(command,args,custom_return_name)
local args = args or {} local args = args or {}
local return_name = custom_return_name or tostring(game.tick)..tostring(command)..tostring(#global.sudo.commands) local return_name = custom_return_name or tostring(game.tick)..tostring(command)..tostring(#global.sudo.commands)
table.insert(global.sudo.commands,{fun=command,args=args,return_name=return_name}) table.insert(global.sudo.commands,{fun=command,args=args,return_name=return_name})
return {'sudo-temp-var',return_name} return {sudo='sudo-temp-var',name=return_name}
end end
end end
--update the time on a temp var or add it as a new one --update the time on a temp var or add it as a new one
function refresh_temp_var(name,value,offset) function refresh_temp_var(name,value,offset)
local offset = offset or temp_var_time local offset = offset or temp_var_time
if global.sudo.temp_varibles[name] then if global.sudo.temp_varibles[name] then
global.sudo.temp_varibles[name][2] = game.tick+offset global.sudo.temp_varibles[name].remove_time = game.tick+offset
else else
global.sudo.temp_varibles[name] = {data=value,remove_time=game.tick+offset} global.sudo.temp_varibles[name] = {data=value,remove_time=game.tick+offset}
end end
end end
-- gets the data stored in a temp varible -- gets the data stored in a temp varible
function get_temp_var_data(name) function get_temp_var_data(var)
local to_return = nil local to_return = nil
if global.sudo.temp_varibles[name] then to_return = global.sudo.temp_varibles[name].data if global.sudo.temp_varibles[var] then to_return = global.sudo.temp_varibles[var].data
elseif name[2] and global.sudo.temp_varibles[name[2]] then to_return = global.sudo.temp_varibles[name[2]].data end elseif var.name and global.sudo.temp_varibles[var.name] then to_return = global.sudo.temp_varibles[var.name].data end
return to_return return to_return
end end
-- returns the lenth of the temp varible list and command queue, is string is true then it is retured as a string -- returns the lenth of the temp varible list and command queue, is string is true then it is retured as a string
@@ -78,7 +78,7 @@ Event.register(defines.events.on_tick, function(event)
local args = {} local args = {}
-- retrives and temp varibles -- retrives and temp varibles
for n,value in pairs(command.args) do for n,value in pairs(command.args) do
if type(value) == 'list' and value[1] == 'sudo-temp-var' then args[n] = global.sudo.temp_varibles[value[2]][1] if type(value) == 'list' and value.sudo == 'sudo-temp-var' then args[n] = global.sudo.temp_varibles[value.name].data
else args[n] = value end else args[n] = value end
end end
-- makes new temp value and runs command -- makes new temp value and runs command

View File

@@ -35,7 +35,7 @@ function add_frame.tab(name,default_display,default_tooltip,restriction,frame,ev
if not name then error('Tab requires a name') end if not name then error('Tab requires a name') end
if not frame then error('Tab requires a frame') end if not frame then error('Tab requires a frame') end
table.insert(frames.tabs,{name,default_display,frame,event}) table.insert(frames.tabs,{name,default_display,frame,event})
for _,f in pairs(frames.center) do if f[1] == frame then table.insert(f[3],{name,restriction}) end end for _,f in pairs(frames.center) do if f.name == frame then table.insert(f.tabs,{name,restriction}) end end
ExpGui.add_input.button(name,default_display,default_tooltip,draw_frame.tab) ExpGui.add_input.button(name,default_display,default_tooltip,draw_frame.tab)
end end
--Draw the center GUI for the player; do not call manually, must use other functions to call --Draw the center GUI for the player; do not call manually, must use other functions to call
@@ -43,20 +43,20 @@ ExpGui.add_input.button('close_center','Close','Close this GUI',function(player,
function draw_frame.center(player,element) function draw_frame.center(player,element)
local frame_data = nil local frame_data = nil
for _,frame in pairs(frames.center) do if element.name == frame[1] then frame_data = frame break end end for _,frame in pairs(frames.center) do if element.name == frame[1] then frame_data = frame break end end
if player.gui.is_valid_sprite_path(frame_data[2]) then frame_data[2] = frame_data[1] end if player.gui.is_valid_sprite_path(frame_data.display) then frame_data.display = frame_data.name end
if player.gui.center[frame_data[1]] then player.gui.center.clear() return else player.gui.center.clear() end if player.gui.center[frame_data.name] then player.gui.center.clear() return else player.gui.center.clear() end
local frame = player.gui.center.add{name=frame_data[1],type='frame',caption=frame_data[2],direction='vertical',style=mod_gui.frame_style} local frame = player.gui.center.add{name=frame_data.name,type='frame',caption=frame_data.display,direction='vertical',style=mod_gui.frame_style}
if frame_data[4] and type(frame_data[4]) == 'function' then frame_data[4](player,frame) return end if frame_data.event and type(frame_data.event) == 'function' then frame_data.event(player,frame) return end
local tab_bar_scroll = frame.add{type = "scroll-pane", name= "tab_bar_scroll", vertical_scroll_policy="never", horizontal_scroll_policy="always"} local tab_bar_scroll = frame.add{type = "scroll-pane", name= "tab_bar_scroll", vertical_scroll_policy="never", horizontal_scroll_policy="always"}
local tab_bar = tab_bar_scroll.add{type='flow',direction='horizontal',name='tab_bar'} local tab_bar = tab_bar_scroll.add{type='flow',direction='horizontal',name='tab_bar'}
local tab = frame.add{type = "scroll-pane", name= "tab", vertical_scroll_policy="auto", horizontal_scroll_policy="never"} local tab = frame.add{type = "scroll-pane", name= "tab", vertical_scroll_policy="auto", horizontal_scroll_policy="never"}
for n,t in pairs(frame_data[3]) do for n,t in pairs(frame_data.tabs) do
local temp_restriction = nil local temp_restriction = nil
if type(t[2]) == 'number' then temp_restriction = t[2] end if type(t.restriction) == 'number' then temp_restriction = t.restriction end
local restriction = temp_restriction or string_to_rank(t[2]).power or 0 local restriction = temp_restriction or string_to_rank(t.restriction).power or 0
if restriction >= get_rank(player).power then ExpGui.add_input.draw_button(tab_bar,t[1]) end if restriction >= get_rank(player).power then ExpGui.add_input.draw_button(tab_bar,t.name) end
end end
draw_frame.tab(player,tab_bar[frame_data[3][1][1]]) draw_frame.tab(player,tab_bar[frame_data.tabs[1].name)
ExpGui.add_input.draw_button(tab_bar,'close_center') ExpGui.add_input.draw_button(tab_bar,'close_center')
tab.style.minimal_height = 300 tab.style.minimal_height = 300
tab.style.maximal_height = 300 tab.style.maximal_height = 300
@@ -76,7 +76,7 @@ function draw_frame.tab(player,element)
btn.style.font_color = {r = 100, g = 100, b = 100,a=255} btn.style.font_color = {r = 100, g = 100, b = 100,a=255}
end end end end
element.parent.parent.parent.tab.clear() element.parent.parent.parent.tab.clear()
for _,tab in pairs(frames.tabs) do if element.name == tab[1] then tab[4](player,element.parent.parent.parent.tab) break end end for _,tab in pairs(frames.tabs) do if element.name == tab.name then tab.event(player,element.parent.parent.parent.tab) break end end
end end
Event.register(Event.rank_change,function(event) event.player.gui.center.clear() end) Event.register(Event.rank_change,function(event) event.player.gui.center.clear() end)

View File

@@ -34,10 +34,10 @@ end
function add_input.draw_button(frame,name,display,tooltip) function add_input.draw_button(frame,name,display,tooltip)
if not frame or not frame.valid then error('No frame to draw to') end if not frame or not frame.valid then error('No frame to draw to') end
if not name then error('No button to draw') end if not name then error('No button to draw') end
for _,btn in pairs(inputs.buttons) do for _,button in pairs(inputs.buttons) do
if btn[1] == name then if button.name == name then
local display = display or btn[2] or btn[1] local display = display or button.display or button.name
local tooltip = tooltip or btn[3] local tooltip = tooltip or button.tooltip
if frame.gui.is_valid_sprite_path(display) then if frame.gui.is_valid_sprite_path(display) then
frame.add{name=name, type = "sprite-button", sprite=display, tooltip=tooltip, style = mod_gui.button_style} frame.add{name=name, type = "sprite-button", sprite=display, tooltip=tooltip, style = mod_gui.button_style}
else else
@@ -52,8 +52,8 @@ function add_input.draw_text(frame,name,display)
if not frame or not frame.valid then error('No frame to draw to') end if not frame or not frame.valid then error('No frame to draw to') end
if not name then error('No text filed to draw') end if not name then error('No text filed to draw') end
for _,text in pairs(inputs.text) do for _,text in pairs(inputs.text) do
if text[1] == name then if text.name == name then
local display = display or text[2] or text[1] local display = display or text.display or text.name
frame.add{name=name, type='textfield'} frame.add{name=name, type='textfield'}
frame[name].caption=display frame[name].caption=display
break break
@@ -64,9 +64,9 @@ end
Event.register(defines.events.on_gui_click, function(event) Event.register(defines.events.on_gui_click, function(event)
local player = game.players[event.player_index] local player = game.players[event.player_index]
if event.element.type == 'button' or event.element.type == 'sprite-button' then if event.element.type == 'button' or event.element.type == 'sprite-button' then
for _,btn in pairs(inputs.buttons) do for _,button in pairs(inputs.buttons) do
if btn[1] == event.element.name then if button.name == event.element.name then
if btn[4] then btn[4](player,event.element) else rank_print('Button without Function '..btn[1],'Mod') end break if button.event then button.event(player,event.element) else rank_print('Button without Function '..button.name,'Mod') end break
end end
end end
end end
@@ -75,8 +75,8 @@ end)
Event.register(defines.events.on_gui_text_changed, function(event) Event.register(defines.events.on_gui_text_changed, function(event)
local player = game.players[event.player_index] local player = game.players[event.player_index]
for _,text in pairs(inputs.text) do for _,text in pairs(inputs.text) do
if text[1] == event.element.name then if text.name == event.element.name then
if text[3] then text[3](player,event.element) end break if text.event then text.event(player,event.element) end break
end end
end end
end) end)

View File

@@ -37,25 +37,25 @@ function draw_frame.left(player,element,update)
local frame_data = nil local frame_data = nil
local left = mod_gui.get_frame_flow(player) local left = mod_gui.get_frame_flow(player)
if not update then if not update then
for _,frame in pairs(frames.left) do if element.name == frame[1] then frame_data = frame break end end for _,frame in pairs(frames.left) do if element.name == frame.name then frame_data = frame break end end
if left[frame_data[1]] then ExpGui.toggle_visible(left[frame_data[1]]) return end if left[frame_data.name] then ExpGui.toggle_visible(left[frame_data.name]) return end
frame = left.add{name=frame_data[1],type='frame',caption=frame_data[2],direction='vertical',style=mod_gui.frame_style} frame = left.add{name=frame_data.name,type='frame',caption=frame_data.display,direction='vertical',style=mod_gui.frame_style}
else else
for _,frame in pairs(frames.left) do if element == frame[1] then frame_data = frame break end end for _,frame in pairs(frames.left) do if element == frame.name then frame_data = frame break end end
frame = left[frame_data[1]] frame = left[frame_data.name]
end end
if frame then frame.clear() frame_data[3](player,frame) end if frame then frame.clear() frame_data.event(player,frame) end
end end
--used to load all left GUIs --used to load all left GUIs
Event.register(defines.events.on_player_joined_game,function(event) Event.register(defines.events.on_player_joined_game,function(event)
local player = game.players[event.player_index] local player = game.players[event.player_index]
for _,frame_data in pairs(frames.left) do for _,frame_data in pairs(frames.left) do
local left = mod_gui.get_frame_flow(player) local left = mod_gui.get_frame_flow(player)
if left[frame_data[1]] then left[frame_data[1]].style.visible = frame_data[4] ExpGui.draw_frame.left(player,frame_data[1],true) if left[frame_data.name] then left[frame_data.name].style.visible = frame_data.vis ExpGui.draw_frame.left(player,frame_data.name,true)
else else
local frame = left.add{name=frame_data[1],type='frame',caption=frame_data[2],direction='vertical',style=mod_gui.frame_style} local frame = left.add{name=frame_data.name,type='frame',caption=frame_data.display,direction='vertical',style=mod_gui.frame_style}
frame_data[3](player,frame) frame_data.event(player,frame)
frame.style.visible = frame_data[4] frame.style.visible = frame_data.vis
end end
end end
end) end)
@@ -63,7 +63,7 @@ end)
Event.register(Event.rank_change,function(event) Event.register(Event.rank_change,function(event)
for _,frame_data in pairs(frames.left) do for _,frame_data in pairs(frames.left) do
local left = mod_gui.get_frame_flow(event.player) local left = mod_gui.get_frame_flow(event.player)
if left[frame_data[1]] then left[frame_data[1]].style.visible = frame_data[4] end if left[frame_data.name] then left[frame_data.name].style.visible = frame_data.vis end
end end
end) end)
--Please Only Edit Above This Line----------------------------------------------------------- --Please Only Edit Above This Line-----------------------------------------------------------

View File

@@ -18,6 +18,7 @@ local credits = {{
}} }}
local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end
--Please Only Edit Below This Line----------------------------------------------------------- --Please Only Edit Below This Line-----------------------------------------------------------
-- Mainly used as a plan for how the gui is stored also as a header for the credit
ExpGui = { ExpGui = {
add_frame={ add_frame={
--center --center

View File

@@ -23,18 +23,18 @@ local yes = {'yes','y','true','ye'}
local no = {'no','false','nay'} local no = {'no','false','nay'}
--filters that are used. Feel free to add more --filters that are used. Feel free to add more
player_table_functions.filters = { player_table_functions.filters = {
--{name,is_text,function(player,input) return true end} --{name,is_text,function(player,input) return true/false end}
{'is_admin',false,function(player) return player.admin end}, {name='is_admin',is_text=false,test=function(player) return player.admin end},
{'player_name',true,function(player,input) if input and player.name:lower():find(input:lower()) then return true end end}, {name='player_name',is_text=true,test=function(player,input) if input and player.name:lower():find(input:lower()) then return true end end},
{'online',false,function(player) return player.connected end}, {name='online',is_text=false,test=function(player) return player.connected end},
{'offline',false,function(player) return not player.connected end}, {name='offline',is_text=false,test=function(player) return not player.connected end},
{'online_time',true,function(player,input) if input and tonumber(input) and tonumber(input) < tick_to_min(player.online_time) then return true elseif not input or not tonumber(input) then return true end end}, {name='online_time',is_text=true,test=function(player,input) if input and tonumber(input) and tonumber(input) < tick_to_min(player.online_time) then return true elseif not input or not tonumber(input) then return true end end},
{'rank',true,function(player,input) if input and string_to_rank(input) and get_rank(player).power <= string_to_rank(input).power then return true elseif not input or not string_to_rank(input) then return true end end} {name='rank',is_text=true,test=function(player,input) if input and string_to_rank(input) and get_rank(player).power <= string_to_rank(input).power then return true elseif not input or not string_to_rank(input) then return true end end}
} }
--set up all the text inputs --set up all the text inputs
for _,filter in pairs(player_table_functions.filters) do for _,filter in pairs(player_table_functions.filters) do
if filter[2] then if filter.is_text then
ExpGui.add_input.text(filter[1],'Enter '..filter[1]:gsub('_',' '),function(player,element) ExpGui.player_table.redraw(player,element) end) ExpGui.add_input.text(filter.name,'Enter '..filter.name:gsub('_',' '),function(player,element) ExpGui.player_table.redraw(player,element) end)
end end
end end
--used to draw filters from the list above --used to draw filters from the list above
@@ -42,7 +42,7 @@ function player_table_functions.draw_filters(player,frame,filters)
local input_bar = frame.add{type='flow',name='input_bar',direction='horizontal'} local input_bar = frame.add{type='flow',name='input_bar',direction='horizontal'}
for _,name in pairs(filters) do for _,name in pairs(filters) do
local filter_data = nil local filter_data = nil
for _,filter in pairs(player_table_functions.filters) do if filter[1] == name then filter_data = filter break end end for _,filter in pairs(player_table_functions.filters) do if filter.name == name then filter_data = filter break end end
if filter_data and filter_data[2] then if filter_data and filter_data[2] then
ExpGui.add_input.draw_text(input_bar,name) ExpGui.add_input.draw_text(input_bar,name)
end end
@@ -52,9 +52,9 @@ end
function player_table_functions.get_filters(frame) function player_table_functions.get_filters(frame)
local filters = {} local filters = {}
for _,filter in pairs(player_table_functions.filters) do for _,filter in pairs(player_table_functions.filters) do
if frame.input_bar[filter[1]] then if frame.input_bar[filter.name] then
if frame.input_bar[filter[1]].text:find('%S') then if frame.input_bar[filter.name].text:find('%S') then
table.insert(filters,{filter[1],frame.input_bar[filter[1]].text}) table.insert(filters,{filter.name,frame.input_bar[filter.name].text})
end end
end end
end end
@@ -65,7 +65,7 @@ function player_table_functions.player_match(player,filter,input)
for _,f in pairs(player_table_functions.filters) do for _,f in pairs(player_table_functions.filters) do
if filter == f or filter == f[1] then if filter == f[1] then filter = f break end end if filter == f or filter == f[1] then if filter == f[1] then filter = f break end end
end end
if filter[3] and type(filter[3]) == 'function' then return filter[3](player,input) end if filter.test and type(filter.test) == 'function' then return filter.test(player,input) end
end end
--used by script on filter texts --used by script on filter texts
function player_table_functions.redraw(player,element) function player_table_functions.redraw(player,element)
@@ -80,38 +80,38 @@ function player_table_functions.draw(player,frame,filters,input_location)
--setup the table --setup the table
if frame.player_table then frame.player_table.destroy() end if frame.player_table then frame.player_table.destroy() end
player_table = frame.add{name='player_table', type="table", colspan=5} player_table = frame.add{name='player_table', type="table", colspan=5}
player_table.style.minimal_width = 500 player_table.style.minimal_width = 500
player_table.style.maximal_width = 500 player_table.style.maximal_width = 500
player_table.style.horizontal_spacing = 10 player_table.style.horizontal_spacing = 10
player_table.add{name="id", type="label", caption="Id"} player_table.add{name="id", type="label", caption="Id"}
player_table.add{name="player_name", type="label", caption="Name"} player_table.add{name="player_name", type="label", caption="Name"}
player_table.add{name="status", type="label", caption="Status"} player_table.add{name="status", type="label", caption="Status"}
player_table.add{name="online_time", type="label", caption="Online Time"} player_table.add{name="online_time", type="label", caption="Online Time"}
player_table.add{name="rank", type="label", caption="Rank"} player_table.add{name="rank", type="label", caption="Rank"}
for i,p in pairs(game.players) do for i,p in pairs(game.players) do
--filter cheaking --filter cheaking
local add=true local add=true
for _,filter in pairs(filters) do for _,filter in pairs(filters) do
if #filter == 2 and add then if #filter == 2 and add then
local result = player_table_functions.player_match(p,filter[1],filter[2]) local result = player_table_functions.player_match(p,filter.name,filter.is_text)
if not result and filter[2] == true then result = filter[2] end if not result and filter.is_text == true then result = filter.is_text end
add = result or false add = result or false
end end
end end
for _,filter in pairs(player_table_functions.get_filters(input_location)) do for _,filter in pairs(player_table_functions.get_filters(input_location)) do
if add then if add then
add = player_table_functions.player_match(p,filter[1],filter[2]) or false add = player_table_functions.player_match(p,filter.name,filter.is_text) or false
end end
end end
--add the player --add the player
if add then--and player.name ~= p.name then if add then--and player.name ~= p.name then
player_table.add{name=p.name.."_id", type="label", caption=i} player_table.add{name=p.name.."_id", type="label", caption=i}
player_table.add{name=p.name..'_name', type="label", caption=p.name} player_table.add{name=p.name..'_name', type="label", caption=p.name}
if p.connected == true if p.connected == true
then player_table.add{name=p.name.."status", type="label", caption="Online"} then player_table.add{name=p.name.."status", type="label", caption="Online"}
else player_table.add{name=p.name.."s", type="label", caption="Offline"} end else player_table.add{name=p.name.."s", type="label", caption="Offline"} end
player_table.add{name=p.name.."online_time", type="label", caption=tick_to_display_format(p.online_time)} player_table.add{name=p.name.."online_time", type="label", caption=tick_to_display_format(p.online_time)}
player_table.add{name=p.name.."rank", type="label", caption=get_rank(p).short_hand} player_table.add{name=p.name.."rank", type="label", caption=get_rank(p).short_hand}
end end
end end
end end

View File

@@ -55,9 +55,9 @@ function draw_frame.popup_button(player,element)
local frame_data = nil local frame_data = nil
for _,frame in pairs(frames.popup) do if element.name == frame[1] then frame_data = frame break end end for _,frame in pairs(frames.popup) do if element.name == frame[1] then frame_data = frame break end end
local popups = mod_gui.get_frame_flow(player).popups local popups = mod_gui.get_frame_flow(player).popups
if popups[frame_data[1]..'_on_click'] then popups[frame_data[1]..'_on_click'].destroy() return end if popups[frame_data.name..'_on_click'] then popups[frame_data.name..'_on_click'].destroy() return end
local frame = get_next_popup(popups,frame_data[1]) local frame = get_next_popup(popups,frame_data.name)
frame_data[3](player,frame) frame_data.on_click(player,frame)
end end
--used to draw a popup style can be called at any time; can not be called from a button directly --used to draw a popup style can be called at any time; can not be called from a button directly
function draw_frame.popup(style,args) function draw_frame.popup(style,args)
@@ -67,7 +67,7 @@ function draw_frame.popup(style,args)
for _,player in pairs(game.connected_players) do for _,player in pairs(game.connected_players) do
local popups = mod_gui.get_frame_flow(player).popups local popups = mod_gui.get_frame_flow(player).popups
local frame = get_next_popup(popups) local frame = get_next_popup(popups)
frame_data[4](player,frame,args) frame_data.event(player,frame,args)
end end
end end
--used to make the popup area --used to make the popup area

View File

@@ -31,13 +31,13 @@ function toolbar.draw(player)
if not player then error('Need a player to draw to') end if not player then error('Need a player to draw to') end
local toolbar_frame = mod_gui.get_button_flow(player) local toolbar_frame = mod_gui.get_button_flow(player)
toolbar_frame.clear() toolbar_frame.clear()
for _,btn in pairs(toolbar.buttons) do for _,button in pairs(toolbar.buttons) do
local rank = get_rank(player) local rank = get_rank(player)
local temp_restriction = nil local temp_restriction = nil
if type(btn[2]) == 'number' then temp_restriction = btn[2] end if type(button.restriction) == 'number' then temp_restriction = button.restriction end
local restriction = temp_restriction or string_to_rank(btn[2]).power or 0 local restriction = temp_restriction or string_to_rank(button.restriction).power or 0
if restriction >= rank.power then if restriction >= rank.power then
ExpGui.add_input.draw_button(toolbar_frame,btn[1]) ExpGui.add_input.draw_button(toolbar_frame,button.name)
end end
end end
end end