From 43b587353051ed032fea8b8078f00015a5dd36ec Mon Sep 17 00:00:00 2001 From: Cooldude2606 Date: Fri, 8 Mar 2019 17:42:52 +0000 Subject: [PATCH] Fixed bugs with /chelp --- expcore/common_parse.lua | 2 +- locale/en/commands-local.cfg | 6 ++++-- modules/commands/commands-local.cfg | 6 ++++-- modules/commands/help.lua | 30 +++++++++++++++++++++-------- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/expcore/common_parse.lua b/expcore/common_parse.lua index 5da9b68b..8c719996 100644 --- a/expcore/common_parse.lua +++ b/expcore/common_parse.lua @@ -67,7 +67,7 @@ Commands.add_parse('integer',function(input,player,reject) if not number then return reject{'expcore-commands.reject-number'} else - return number:floor() + return math.floor(number) end end) diff --git a/locale/en/commands-local.cfg b/locale/en/commands-local.cfg index 20b325c8..ddf4213b 100644 --- a/locale/en/commands-local.cfg +++ b/locale/en/commands-local.cfg @@ -3,6 +3,8 @@ kill-already-dead=You are already dead. admin-chat-format=[Admin Chat] [color=__3__]__1__: __2__ tp-no-position-found=No position to teleport to was found, please try again later. tp-to-self=Player can not be teleported to themselves. -chelp-title=Help results for __1__ page __2__ of __3__ -chelp-format=/__1__ __2__ - __3__ +chelp-title=Help results for "__1__": +chelp-footer=(__1__ results found; page __2__ of __3__) +chelp-format=/__1__ __2__ - __3__ __4__ +chelp-alias=Alias: __1__ chelp-out-of-range=__1__ is an invalid page number. \ No newline at end of file diff --git a/modules/commands/commands-local.cfg b/modules/commands/commands-local.cfg index 20b325c8..ddf4213b 100644 --- a/modules/commands/commands-local.cfg +++ b/modules/commands/commands-local.cfg @@ -3,6 +3,8 @@ kill-already-dead=You are already dead. admin-chat-format=[Admin Chat] [color=__3__]__1__: __2__ tp-no-position-found=No position to teleport to was found, please try again later. tp-to-self=Player can not be teleported to themselves. -chelp-title=Help results for __1__ page __2__ of __3__ -chelp-format=/__1__ __2__ - __3__ +chelp-title=Help results for "__1__": +chelp-footer=(__1__ results found; page __2__ of __3__) +chelp-format=/__1__ __2__ - __3__ __4__ +chelp-alias=Alias: __1__ chelp-out-of-range=__1__ is an invalid page number. \ No newline at end of file diff --git a/modules/commands/help.lua b/modules/commands/help.lua index 9483dcb6..432560f6 100644 --- a/modules/commands/help.lua +++ b/modules/commands/help.lua @@ -10,50 +10,64 @@ Global.register(search_cache,function(tbl) end) Commands.new_command('chelp','Searches for a keyword in all commands you are allowed to use.') -:add_param('keyword',false) -- the keyword that will be looked for +:add_param('keyword',true) -- the keyword that will be looked for :add_param('page',true,'integer') -- the keyword that will be looked for -:add_defaults{page=1} +:add_defaults{keyword='',page=1} :register(function(player,keyword,page,raw) + -- if keyword is a number then treat it as page number + if tonumber(keyword) then + page = math.floor(tonumber(keyword)) + keyword = '' + end -- gets a value for pages, might have result in cache local pages + local found = 0 if search_cache[player.index] and search_cache[player.index].keyword == keyword:lower() then pages = search_cache[player.index].pages + found = search_cache[player.index].found else pages = {{}} local current_page = 1 local page_count = 0 + local commands = Commands.search(keyword,player) -- loops other all commands returned by search, includes game commands - for _,command_data in pairs(Commands.search(keyword,player)) do + for _,command_data in pairs(commands) do -- if the number of results if greater than the number already added then it moves onto a new page - if page_count > results_per_page then + if page_count >= results_per_page then page_count = 0 current_page = current_page + 1 table.insert(pages,{}) end -- adds the new command to the page page_count = page_count + 1 + found = found + 1 + local alias_format = #command_data.aliases > 0 and {'exp-commands.chelp-alias',table.concat(command_data.aliases,', ')} or '' table.insert(pages[current_page],{ 'exp-commands.chelp-format', command_data.name, command_data.description, command_data.help, - command_data.aliases:concat(', ') + alias_format }) end -- adds the result to the cache search_cache[player.index] = { keyword=keyword:lower(), - pages=pages + pages=pages, + found=found } end -- print the requested page - Commands.print{'exp-commands.chelp-title',keyword,page,#pages} + keyword = keyword == '' and '' or keyword + Commands.print({'exp-commands.chelp-title',keyword},'cyan') if pages[page] then for _,command in pairs(pages[page]) do Commands.print(command) end + Commands.print({'exp-commands.chelp-footer',found,page,#pages},'cyan') else - Commands.print{'exp-commands.chelp-out-of-range',page} + Commands.print({'exp-commands.chelp-footer',found,page,#pages},'cyan') + return Commands.error{'exp-commands.chelp-out-of-range',page} end -- blocks command complete message return Commands.success