mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 03:25:23 +09:00
Merge branch 'explosivegaming:main' into aperx
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
[exp-commands]
|
||||
help=__1__- __2____3__
|
||||
usage=/__1__ __2__
|
||||
aliases=\n Aliaies: __1__
|
||||
argument=<__1__>
|
||||
optional=[__1__]
|
||||
@@ -10,7 +11,7 @@ error=Command failed to run: __1__
|
||||
error-default=Please check you gave the correct arguments.
|
||||
unauthorized=Unauthorized: __1__
|
||||
unauthorized-default=Access is denied due to insufficient permissions.
|
||||
invalid-usage=Wrong number of arguments, usage: /__1__ __2__
|
||||
invalid-usage=Wrong number of arguments, usage: __1__
|
||||
invalid-input=Invalid input: Please ensure everything is formated correctly.
|
||||
invalid-argument=Invalid argument "__1__"; __2__
|
||||
internal-error=Internal Error, Please contact an admin: __1__
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[exp-commands]
|
||||
help=__1__- __2____3__
|
||||
usage=/__1__ __2__
|
||||
aliases=\n 別名: __1__
|
||||
argument=<__1__>
|
||||
optional=[__1__]
|
||||
@@ -10,7 +11,7 @@ error=指令運行失敗: __1__
|
||||
error-default=檢查指令參數。
|
||||
unauthorized=未授權: __1__
|
||||
unauthorized-default=由於權限不足,存取被拒絕。
|
||||
invalid-usage=參數數量和用法錯誤,參考: /__1__ __2__
|
||||
invalid-usage=參數數量和用法錯誤,參考: __1__
|
||||
invalid-input=輸入錯誤: 確保格式正確。
|
||||
invalid-argument=參數錯誤 "__1__"; __2__
|
||||
internal-error=內部錯誤,請聯絡管理員: __1__
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[exp-commands]
|
||||
help=__1__- __2____3__
|
||||
usage=/__1__ __2__
|
||||
aliases=\n 別名: __1__
|
||||
argument=<__1__>
|
||||
optional=[__1__]
|
||||
@@ -10,7 +11,7 @@ error=指令運行失敗: __1__
|
||||
error-default=檢查指令參數。
|
||||
unauthorized=未授權: __1__
|
||||
unauthorized-default=由於權限不足,存取被拒絕。
|
||||
invalid-usage=參數數量和用法錯誤,參考: /__1__ __2__
|
||||
invalid-usage=參數數量和用法錯誤,參考: __1__
|
||||
invalid-input=輸入錯誤: 確保格式正確。
|
||||
invalid-argument=參數錯誤 "__1__"; __2__
|
||||
internal-error=內部錯誤,請聯絡管理員: __1__
|
||||
|
||||
@@ -106,6 +106,7 @@ end
|
||||
--- @class Commands.Command
|
||||
--- @field name string The name of the command
|
||||
--- @field description LocalisedString The description of the command
|
||||
--- @field usage LocalisedString The usage of the command
|
||||
--- @field help_text LocalisedString The full help text for the command
|
||||
--- @field aliases string[] Aliases that the command will also be registered under
|
||||
--- @field defined_at? string If present then this is an ExpCommand
|
||||
@@ -536,6 +537,7 @@ function Commands._prototype:register(callback)
|
||||
-- Generates a description to be used
|
||||
local argument_names = { "" } --- @type LocalisedString
|
||||
local argument_verbose = { "" } --- @type LocalisedString
|
||||
self.usage = { "exp-commands.usage", self.name, argument_names }
|
||||
self.help_text = { "exp-commands.help", argument_names, self.description, argument_verbose } --- @type LocalisedString
|
||||
if next(self.aliases) then
|
||||
argument_verbose[2] = { "exp-commands.aliases", table.concat(self.aliases, ", ") }
|
||||
@@ -670,20 +672,20 @@ function Commands._event_handler(event)
|
||||
-- Check the edge case of parameter being nil
|
||||
if command.min_arg_count > 0 and event.parameter == nil then
|
||||
log_command("Too few arguments", command, player, event.parameter, { minimum = command.min_arg_count, maximum = command.max_arg_count })
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.name, command.description }
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.usage }
|
||||
end
|
||||
|
||||
-- Get the arguments for the command, returns nil if there are too many arguments
|
||||
local raw_arguments = extract_arguments(event.parameter, command.max_arg_count, command.auto_concat)
|
||||
if raw_arguments == nil then
|
||||
log_command("Too many arguments", command, player, event.parameter, { minimum = command.min_arg_count, maximum = command.max_arg_count })
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.name, command.description }
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.usage }
|
||||
end
|
||||
|
||||
-- Check the minimum number of arguments is fulfilled
|
||||
if #raw_arguments < command.min_arg_count then
|
||||
log_command("Too few arguments", command, player, event.parameter, { minimum = command.min_arg_count, maximum = command.max_arg_count })
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.name, command.description }
|
||||
return Commands.error{ "exp-commands.invalid-usage", command.usage }
|
||||
end
|
||||
|
||||
-- Parse the arguments, optional arguments will attempt to use a default if provided
|
||||
|
||||
@@ -329,7 +329,7 @@ local roles = Roles.get_player_roles(game.player)
|
||||
|
||||
]]
|
||||
function Roles.get_player_roles(player)
|
||||
if not player then return { Roles.config.roles[Roles.config.internal.root] } end
|
||||
if not player or player.index == 0 then return { Roles.config.roles[Roles.config.internal.root] } end
|
||||
local roles = Roles.config.players[player.name] or {}
|
||||
local default = Roles.config.roles[Roles.config.internal.default]
|
||||
local rtn = { default }
|
||||
|
||||
@@ -167,6 +167,24 @@ function ExpUtil.get_function_name(func, raw)
|
||||
return "<" .. file_name .. ":" .. func_name .. ">"
|
||||
end
|
||||
|
||||
--- Attempt a simple autocomplete search from a set of options
|
||||
--- @param options table The table representing the possible options which can be selected
|
||||
--- @param input string The user input string which should be matched to an option
|
||||
--- @param use_key boolean? When true the keys will be searched, when false the values will be searched
|
||||
--- @param rtn_key boolean? When true the selected key will be returned, when false the selected value will be returned
|
||||
--- @param use_pattern boolean? When true the input will be treated as a lua pattern string
|
||||
--- @return any # The selected key or value which first matches the input text
|
||||
function ExpUtil.auto_complete_first(options, input, use_key, rtn_key, use_pattern)
|
||||
input = input:lower()
|
||||
local plain = use_pattern ~= true
|
||||
for k, v in pairs(options) do
|
||||
local str = use_key and k or v
|
||||
if str:lower():find(input, nil, plain) then
|
||||
if rtn_key then return k else return v end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Attempt a simple autocomplete search from a set of options
|
||||
--- @param options table The table representing the possible options which can be selected
|
||||
--- @param input string The user input string which should be matched to an option
|
||||
@@ -177,19 +195,30 @@ end
|
||||
function ExpUtil.auto_complete(options, input, use_key, rtn_key, use_pattern)
|
||||
input = input:lower()
|
||||
local plain = use_pattern ~= true
|
||||
if use_key then
|
||||
local found = {} --- @type { length: number, index: number, start: boolean, value: any }
|
||||
for k, v in pairs(options) do
|
||||
if k:lower():find(input, nil, plain) then
|
||||
if rtn_key then return k else return v end
|
||||
end
|
||||
end
|
||||
local str = use_key and k or v
|
||||
local index = str:lower():find(input, nil, plain)
|
||||
if index then
|
||||
local length = #str
|
||||
local start = index == 1 or str:sub(index - 1, index - 1) == " "
|
||||
if found.value == nil -- None found yet
|
||||
or not found.start and start -- Prefer matches at the start of words
|
||||
or found.length > length -- Prefer shorter matches
|
||||
or found.index > index -- Prefer earlier matches
|
||||
then
|
||||
found.length = length
|
||||
found.index = index
|
||||
found.start = start
|
||||
if rtn_key then
|
||||
found.value = k
|
||||
else
|
||||
for k, v in pairs(options) do
|
||||
if v:lower():find(input, nil, plain) then
|
||||
if rtn_key then return k else return v end
|
||||
found.value = v
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return found.value
|
||||
end
|
||||
|
||||
--- Formats any value into a safe representation, useful with inspect
|
||||
|
||||
Reference in New Issue
Block a user