diff --git a/control.lua b/control.lua index ef493827..7dce206f 100644 --- a/control.lua +++ b/control.lua @@ -9,7 +9,7 @@ Discord: https://discord.gg/XSsBV6b --Please Only Edit Below This Line----------------------------------------------------------- --set up to run other code and events require("mod-gui") -require("locale/StdLib/event") +Event = require("locale/StdLib/event") --this is the main code that starts the softmod Event.soft_init = script.generate_event_name() local function init() if not global.soft_init then script.raise_event(Event.soft_init,{tick=game.tick}) global.soft_init = true end end @@ -31,5 +31,8 @@ Event.register(defines.events.on_tick, function(event) end end end) +--loads core files +ranking,ExpGui,server = require("locale/ExpGaming-Core/file-header") --loads all the other scripts -require("locale/file-header") \ No newline at end of file +require("locale/Stand-Alone/file-header") +require("locale/ExpGaming-Addons/file-header") \ No newline at end of file diff --git a/locale/ExpGaming-Core/ExpGaming - Command Maker.lua b/locale/ExpGaming-Core/ExpGaming - Command Maker.lua index dee2e732..7280d889 100644 --- a/locale/ExpGaming-Core/ExpGaming - Command Maker.lua +++ b/locale/ExpGaming-Core/ExpGaming - Command Maker.lua @@ -5,22 +5,11 @@ This file can be used with permission but this and the credit below must remain Contact a member of management on our discord to seek permission to use our code. Any changes that you may make to the code are yours but that does not make the script yours. Discord: https://discord.gg/XSsBV6b - -The credit below may be used by another script do not remove. ]] -local credits = {{ - name='Explosive Gaming Custom Commands', - owner='Explosive Gaming', - dev='Cooldude2606', - description='Allows ease to making custom commands in game', - factorio_version='0.15.23', - show=true - }} -local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end --Please Only Edit Below This Line----------------------------------------------------------- local Exp_commands = {} --Used mainly by the code to convert the inputs into a string -function command_inputs_to_string(command) +local function command_inputs_to_string(command) local str_inputs = '' for _,input in pairs(command.inputs) do if input == true then break end @@ -29,7 +18,7 @@ function command_inputs_to_string(command) return str_inputs end --Can be used to ensure the right number of inputs are given -function get_command_args(event,command,allow_invaild) +local function get_command_args(event,command,allow_invaild) local args = {} if not event.parameter then if #command.inputs > 0 then @@ -52,44 +41,53 @@ end --event(player,event,args) if the function that will be ran on the command use function define_command(name,help,inputs,event) if not name then error('Command requires a name') end - local help = help or 'No Help Given' + local help = help or {'commands.no-help'} local inputs = inputs or {true} if not event or type(event) ~= 'function' then error('Command requires a function') end - table.insert(Exp_commands,{name=name,help=help,inputs=inputs,event=event}) + Exp_commands[name]={name=name,help=help,inputs=inputs,event=event} 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 -function load_command(command) +local function load_command(command) + --is the command all ready loaded if commands.commands[command.name] then return end + --start loading command + global.exp_core.commands[command.name] = command debug_write({'COMMAND','LOAD'},command.name) - game.write_file('commands.log','\n'..game.tick..' Loaded Command: '..command.name, true, 0) - commands.add_command(command.name,command_inputs_to_string(command)..command.help,function(event) - 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 + --add command to game + commands.add_command(command.name,{command.help,command_inputs_to_string(command)},function(event) + --gets the command data + local command_data = global.exp_core.commands[event.name] debug_write({'COMMAND','RUN','START'},command.name) debug_write({'COMMAND','RUN','PLAYER-INDEX'},event.player_index) if event.player_index then + --player ran command so authoriz it local player = game.players[event.player_index] if not ranking.rank_allowed(ranking.get_player_rank(player),command.name) then debug_write({'COMMAND','RUN','ALLOWED'},false) - player.print('401 - Unauthorized: Access is denied due to invalid credentials') + player.print({'commands.unauthorized'}) game.write_file('commands.log','\n'..game.tick..' Player: '..player.name..' Failed to use command (Unauthorized): '..command.name..' With args of: '..table.tostring(get_command_args(event,command,true)), true, 0) return end + --start prossessing command inputs, check if valid debug_write({'COMMAND','RUN','ALLOWED'},true) local args = get_command_args(event,command) debug_write({'COMMAND','RUN','ARGS'},args) if args == 'Invalid' then - player.print('Invalid Input, /'..command.name..' '..command_inputs_to_string(command)) return + player.print({'commands.invalid-inputs',command.name,command_inputs_to_string(command)}) game.write_file('commands.log','\n'..game.tick..' Player: '..player.name..' Failed to use command (Invalid Args): '..command.name..' With args of: '..table.tostring(get_command_args(event,command,true)), true, 0) + return end + --run the callback function of the command debug_write({'COMMAND','RUN','FUNCTION'},command.name) command.event(player,event,args) - player.print('Command Complete') + player.print({'commands.command-ran'}) game.write_file('commands.log','\n'..game.tick..' Player: '..player.name..' Used command: '..command.name..' With args of: '..table.tostring(args), true, 0) else + --server ran command so skip authorizion local args = get_command_args(event,command) if args == 'Invalid' then print('Invalid Input, /'..command.name..' '..command_inputs_to_string(command)) return end debug_write({'COMMAND','RUN','ARGS'},args) + --run the callback function of the command debug_write({'COMMAND','RUN','FUNCTION'},command.name) command.event('',event,args) print('Command Complete') @@ -102,12 +100,11 @@ end function get_commands(rank) local rank = rank or 'Owner' local to_return = {} - for _,command in pairs(global.exp_core.commands) do - if ranking.rank_allowed(ranking.string_to_rank(rank),command.name) then table.insert(to_return,command) end + for command_name,command in pairs(global.exp_core.commands) do + if ranking.rank_allowed(ranking.string_to_rank(rank),command_name) then table.insert(to_return,command) end end return to_return end -Event.register(Event.soft_init,function() global.exp_core.commands = Exp_commands for _,command in pairs(Exp_commands) do load_command(command) end end) -Event.register(defines.events.on_player_joined_game,function() for _,command in pairs(Exp_commands) do load_command(command) end end) ---Please Only Edit Above This Line----------------------------------------------------------- -return credits \ No newline at end of file +Event.register(Event.soft_init,function() for command_name,command in pairs(Exp_commands) do load_command(command) end end) +--######TEST#####TEST#####TEST###### un comment below +--Event.register(defines.events.on_player_joined_game,function() for command_name,command in pairs(Exp_commands) do load_command(command) end end) \ No newline at end of file diff --git a/locale/ExpGaming-Core/file-header.lua b/locale/ExpGaming-Core/file-header.lua index c39959fa..f9b20e74 100644 --- a/locale/ExpGaming-Core/file-header.lua +++ b/locale/ExpGaming-Core/file-header.lua @@ -5,24 +5,13 @@ This file can be used with permission but this and the credit below must remain Contact a member of management on our discord to seek permission to use our code. Any changes that you may make to the code are yours but that does not make the script yours. Discord: https://discord.gg/XSsBV6b - -The credit below may be used by another script do not remove. ]] -local credits = {{ - name='File Header - Stand-Alone', - owner='Explosive Gaming', - dev='Cooldude2606', - description='Just A File Header To Organise Code', - factorio_version='0.15.23', - show=false - }} -local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end --Please Only Edit Below This Line----------------------------------------------------------- --As this is the core file, the order in which the files are loaded does matter. Do not change! -credit_loop(require("ExpGaming - Lib")) -credit_loop(require("ExpGaming - Rank Control")) -credit_loop(require("GUI/file-header")) -credit_loop(require("ExpGaming - Command Maker")) -credit_loop(require("ExpGaming - Server Interface")) +require("ExpGaming - Lib") +ranking = require("ExpGaming - Rank Control") +ExpGui = require("GUI/file-header") +require("ExpGaming - Command Maker") +server = require("ExpGaming - Server Interface") --Please Only Edit Above This Line----------------------------------------------------------- -return credits \ No newline at end of file +return ranking,ExpGui,server \ No newline at end of file diff --git a/locale/StdLib/event.lua b/locale/StdLib/event.lua index 3c68bb80..6725dacb 100644 --- a/locale/StdLib/event.lua +++ b/locale/StdLib/event.lua @@ -5,20 +5,10 @@ -- @module Event -- @usage require('stdlib/event/event') -local credits = {{ - name='Factorio StdLib', - owner='Afforess', - dev='Afforess', - description='The Factorio StdLib used here for the event handler', - factorio_version='0.15.23', - show=true - }} -local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end - local fail_if_missing = require 'core'['fail_if_missing'] local Game = require 'game' -Event = { --luacheck: allow defined top +local Event = { --luacheck: allow defined top _registry = {}, core_events = { init = -1, @@ -168,4 +158,4 @@ function Event.remove(event, handler) return Event end -return credits, Event \ No newline at end of file +return Event \ No newline at end of file diff --git a/locale/file-header.lua b/locale/file-header.lua deleted file mode 100644 index 7a67934f..00000000 --- a/locale/file-header.lua +++ /dev/null @@ -1,25 +0,0 @@ ---[[ -Explosive Gaming - -This file can be used with permission but this and the credit below must remain in the file. -Contact a member of management on our discord to seek permission to use our code. -Any changes that you may make to the code are yours but that does not make the script yours. -Discord: https://discord.gg/XSsBV6b - -The credit below may be used by another script do not remove. -]] -local credits = {{ - name='File Header - Stand-Alone', - owner='Explosive Gaming', - dev='Cooldude2606', - description='Just A File Header To Organise Code', - factorio_version='0.15.23', - show=false - }} -local function credit_loop(reg) for _,cred in pairs(reg) do table.insert(credits,cred) end end ---Please Only Edit Below This Line----------------------------------------------------------- -credit_loop(require("Stand-Alone/file-header")) -credit_loop(require("ExpGaming-Core/file-header")) -credit_loop(require("ExpGaming-Addons/file-header")) ---Please Only Edit Above This Line----------------------------------------------------------- -return credits \ No newline at end of file