mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 11:35:22 +09:00
Added /me and fixed some bugs in Commands
This commit is contained in:
@@ -15,7 +15,8 @@ Debug = require 'utils.debug'
|
|||||||
require 'resources.version'
|
require 'resources.version'
|
||||||
|
|
||||||
local files = {
|
local files = {
|
||||||
'modules.test'
|
'modules.test',
|
||||||
|
'modules.commands.me'
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Loads all files in array above and logs progress
|
-- Loads all files in array above and logs progress
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
:add_defaults{smiley=false} -- adds false as the default for smiley
|
:add_defaults{smiley=false} -- adds false as the default for smiley
|
||||||
:add_tag('admin_only',true) -- adds the tag admin_only: true which because of the above authenticator means you must be added to use this command
|
:add_tag('admin_only',true) -- adds the tag admin_only: true which because of the above authenticator means you must be added to use this command
|
||||||
:add_alias('name','rname') -- adds two aliases "name" and "rname" for this command which will work as if the ordinal name was used
|
:add_alias('name','rname') -- adds two aliases "name" and "rname" for this command which will work as if the ordinal name was used
|
||||||
--:auto_concat() -- cant be used due to optional param here, but this will make all user input params after the last expected one be added to the last expected one
|
--:enable_auto_concat() -- cant be used due to optional param here, but this will make all user input params after the last expected one be added to the last expected one
|
||||||
:register(function(player,repeat_count,smiley,raw) -- this registers the command to the game, notice the params are what were defined above
|
:register(function(player,repeat_count,smiley,raw) -- this registers the command to the game, notice the params are what were defined above
|
||||||
-- prints the raw input to show that it can be used
|
-- prints the raw input to show that it can be used
|
||||||
game.print(player.name..' used a command with input: '..raw)
|
game.print(player.name..' used a command with input: '..raw)
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
Commands._prototype:add_defaults(defaults) --- Adds default values to params only matters if the param is optional
|
Commands._prototype:add_defaults(defaults) --- Adds default values to params only matters if the param is optional
|
||||||
Commands._prototype:add_tag(name,value) --- Adds a tag to the command which is passed via the tags param to the authenticators, can be used to assign command roles or type
|
Commands._prototype:add_tag(name,value) --- Adds a tag to the command which is passed via the tags param to the authenticators, can be used to assign command roles or type
|
||||||
Commands._prototype:add_alias(...) --- Adds an alias or multiple that will also be registered with the same callback, eg /teleport can be /tp with both working
|
Commands._prototype:add_alias(...) --- Adds an alias or multiple that will also be registered with the same callback, eg /teleport can be /tp with both working
|
||||||
Commands._prototype:auto_concat() --- Enables auto concatenation of any params on the end so quotes are not needed for last param
|
Commands._prototype:enable_auto_concat() --- Enables auto concatenation of any params on the end so quotes are not needed for last param
|
||||||
Commands._prototype:register(callback) --- Adds the callback to the command and registers all aliases, params and help message with the game
|
Commands._prototype:register(callback) --- Adds the callback to the command and registers all aliases, params and help message with the game
|
||||||
|
|
||||||
Commands.error(error_message,play_sound) --- Sends an error message to the player and returns a constant to return to command handler to exit execution
|
Commands.error(error_message,play_sound) --- Sends an error message to the player and returns a constant to return to command handler to exit execution
|
||||||
@@ -173,7 +173,7 @@ local Commands = {
|
|||||||
commands={}, -- custom command data will be stored here
|
commands={}, -- custom command data will be stored here
|
||||||
authorization_fail_on_error=false, -- set true to have authorize fail if a callback fails to run, more secure
|
authorization_fail_on_error=false, -- set true to have authorize fail if a callback fails to run, more secure
|
||||||
authorization={}, -- custom function are stored here which control who can use what commands
|
authorization={}, -- custom function are stored here which control who can use what commands
|
||||||
parse={}, -- used to store default functions which are common parse function such as player or number in range
|
parse_functions={}, -- used to store default functions which are common parse function such as player or number in range
|
||||||
print=player_return, -- short cut so player_return does not need to be required in every module
|
print=player_return, -- short cut so player_return does not need to be required in every module
|
||||||
_prototype={}, -- used to store functions which gets added to new custom commands
|
_prototype={}, -- used to store functions which gets added to new custom commands
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,8 @@ local Commands = {
|
|||||||
-- callback param - reject: function(error_message?: string) - call to fail authorize with optional error message
|
-- callback param - reject: function(error_message?: string) - call to fail authorize with optional error message
|
||||||
-- @treturn number the index it was inserted at use to remove the callback, if anon function used
|
-- @treturn number the index it was inserted at use to remove the callback, if anon function used
|
||||||
function Commands.add_authenticator(callback)
|
function Commands.add_authenticator(callback)
|
||||||
return table.insert(Commands.authorization,callback)
|
table.insert(Commands.authorization,callback)
|
||||||
|
return #Commands.authorization
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Removes an authorization callback
|
--- Removes an authorization callback
|
||||||
@@ -320,10 +321,10 @@ end
|
|||||||
-- parse return - the value that will be passed to the command callback, must not be nil and if reject then command is not run
|
-- parse return - the value that will be passed to the command callback, must not be nil and if reject then command is not run
|
||||||
-- @treturn boolean was the parse added will be false if the name is already used
|
-- @treturn boolean was the parse added will be false if the name is already used
|
||||||
function Commands.add_parse(name,callback)
|
function Commands.add_parse(name,callback)
|
||||||
if Commands.parse[name] then
|
if Commands.parse_functions[name] then
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
Commands.parse[name] = callback
|
Commands.parse_functions[name] = callback
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -331,7 +332,7 @@ end
|
|||||||
--- Removes a parse function, see add_parse for adding them
|
--- Removes a parse function, see add_parse for adding them
|
||||||
-- @tparam name string the name of the parse to remove
|
-- @tparam name string the name of the parse to remove
|
||||||
function Commands.remove_parse(name)
|
function Commands.remove_parse(name)
|
||||||
Commands.parse[name] = nil
|
Commands.parse_functions[name] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Intended to be used within other parse functions, runs a parse and returns success and new value
|
--- Intended to be used within other parse functions, runs a parse and returns success and new value
|
||||||
@@ -339,8 +340,8 @@ end
|
|||||||
-- @tparam input string the input to pass to the parse, will always be a string but might not be the orginal input
|
-- @tparam input string the input to pass to the parse, will always be a string but might not be the orginal input
|
||||||
-- @treturn any the new value for the input, may be nil, if nil then either there was an error or input was nil
|
-- @treturn any the new value for the input, may be nil, if nil then either there was an error or input was nil
|
||||||
function Commands.parse(name,input,player,reject,...)
|
function Commands.parse(name,input,player,reject,...)
|
||||||
if not Commands.parse[name] then return end
|
if not Commands.parse_functions[name] then return end
|
||||||
local success,rtn = pcall(Commands.parse[name],input,player,reject,...)
|
local success,rtn = pcall(Commands.parse_functions[name],input,player,reject,...)
|
||||||
if not success then error(rtn,2) return end
|
if not success then error(rtn,2) return end
|
||||||
if not rtn then return end
|
if not rtn then return end
|
||||||
if rtn == Commands.defines.error then return end
|
if rtn == Commands.defines.error then return end
|
||||||
@@ -439,7 +440,7 @@ end
|
|||||||
-- nb: this will disable max param checking as they will be concated onto the end of that last param
|
-- nb: this will disable max param checking as they will be concated onto the end of that last param
|
||||||
-- this can be useful for reasons or longs text, can only have one per command
|
-- this can be useful for reasons or longs text, can only have one per command
|
||||||
-- @treturn Commands._prototype pass through to allow more functions to be called
|
-- @treturn Commands._prototype pass through to allow more functions to be called
|
||||||
function Commands._prototype:auto_concat()
|
function Commands._prototype:enable_auto_concat()
|
||||||
self.auto_concat = true
|
self.auto_concat = true
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@@ -544,12 +545,12 @@ function Commands.run_command(command_event)
|
|||||||
local quote_params = {} -- stores any " " params
|
local quote_params = {} -- stores any " " params
|
||||||
input_string = input_string:gsub('"[^"]-"',function(w)
|
input_string = input_string:gsub('"[^"]-"',function(w)
|
||||||
-- finds all " " params are removes spaces for the next part
|
-- finds all " " params are removes spaces for the next part
|
||||||
|
local no_spaces = w:gsub('%s','_')
|
||||||
local no_quotes = w:sub(2,-2)
|
local no_quotes = w:sub(2,-2)
|
||||||
local no_spaces = no_quotes:gsub('%s','_')
|
|
||||||
quote_params[no_spaces]=no_quotes
|
quote_params[no_spaces]=no_quotes
|
||||||
if command_data.auto_concat then
|
if command_data.auto_concat then
|
||||||
-- if auto concat then dont remove quotes as it should be included later
|
-- if auto concat then dont remove quotes as it should be included later
|
||||||
quote_params[w:gsub('%s','_')]=w
|
quote_params[no_spaces]=w
|
||||||
end
|
end
|
||||||
return no_spaces
|
return no_spaces
|
||||||
end)
|
end)
|
||||||
@@ -579,9 +580,11 @@ function Commands.run_command(command_event)
|
|||||||
-- all words are added to an array
|
-- all words are added to an array
|
||||||
if quote_params[word] then
|
if quote_params[word] then
|
||||||
-- if it was a " " param then the spaces are re added now
|
-- if it was a " " param then the spaces are re added now
|
||||||
last_index = table.insert(raw_params,quote_params[word])
|
table.insert(raw_params,quote_params[word])
|
||||||
|
last_index = last_index + 1
|
||||||
else
|
else
|
||||||
last_index = table.insert(raw_params,word)
|
table.insert(raw_params,word)
|
||||||
|
last_index = last_index + 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -600,7 +603,7 @@ function Commands.run_command(command_event)
|
|||||||
local parse_callback = param_data.parse
|
local parse_callback = param_data.parse
|
||||||
if type(parse_callback) == 'string' then
|
if type(parse_callback) == 'string' then
|
||||||
-- if its a string this allows it to be pulled from the common store
|
-- if its a string this allows it to be pulled from the common store
|
||||||
parse_callback = Commands.parse[parse_callback]
|
parse_callback = Commands.parse_functions[parse_callback]
|
||||||
end
|
end
|
||||||
if not type(parse_callback) == 'function' then
|
if not type(parse_callback) == 'function' then
|
||||||
-- if its not a function throw and error
|
-- if its not a function throw and error
|
||||||
@@ -642,5 +645,4 @@ function Commands.run_command(command_event)
|
|||||||
if err ~= Commands.defines.error and err ~= Commands.defines.success then Commands.success(err) end
|
if err ~= Commands.defines.error and err ~= Commands.defines.success then Commands.success(err) end
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'expcore.parse.command' -- loads some common parse types
|
|
||||||
return Commands
|
return Commands
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
local Commands = require 'expcore.commands'
|
local Commands = require 'expcore.commands'
|
||||||
|
require 'expcore.common_parse'
|
||||||
|
|
||||||
Commands.new_command('me','Sends an action message in the chat')
|
Commands.new_command('me','Sends an action message in the chat')
|
||||||
:add_param('action',false)
|
:add_param('action',false)
|
||||||
|
:enable_auto_concat()
|
||||||
:register(function(player,action,raw)
|
:register(function(player,action,raw)
|
||||||
game.print(string.format('%s %s',player.name,action))
|
game.print(string.format('* %s %s *',player.name,action),player.chat_color)
|
||||||
end)
|
end)
|
||||||
@@ -8,8 +8,6 @@ Event.add(defines.events.on_console_chat,function(event)
|
|||||||
if event.player_index then game.print('Message: '..event.message) end
|
if event.player_index then game.print('Message: '..event.message) end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local Commands = require 'expcore.commands' -- require the Commands module
|
local Commands = require 'expcore.commands' -- require the Commands module
|
||||||
|
|
||||||
Commands.add_authenticator(function(player,command,tags,reject)
|
Commands.add_authenticator(function(player,command,tags,reject)
|
||||||
|
|||||||
Reference in New Issue
Block a user