mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-29 12:16:37 +09:00
Command maker clean
This commit is contained in:
@@ -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('<server>',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
|
||||
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)
|
||||
Reference in New Issue
Block a user