summaryrefslogtreecommitdiffstats
path: root/MCServer/Plugins/Core/help.lua
diff options
context:
space:
mode:
Diffstat (limited to 'MCServer/Plugins/Core/help.lua')
-rw-r--r--MCServer/Plugins/Core/help.lua76
1 files changed, 30 insertions, 46 deletions
diff --git a/MCServer/Plugins/Core/help.lua b/MCServer/Plugins/Core/help.lua
index 800a65924..68cdeca66 100644
--- a/MCServer/Plugins/Core/help.lua
+++ b/MCServer/Plugins/Core/help.lua
@@ -1,56 +1,40 @@
-function HandleHelpCommand( Split, Player )
+function HandleHelpCommand(Split, Player)
local PluginManager = cRoot:Get():GetPluginManager()
- local LinesPerPage = 9
- local CurrentPage = 1
- local CurrentLine = 0
+ local LinesPerPage = 9;
+ local CurrentPage = 1;
+ local CurrentLine = 0;
+ local PageRequested = 1;
+ local Output = {};
- if( #Split == 2 ) then
- CurrentPage = tonumber(Split[2])
+ if (#Split == 2) then
+ PageRequested = tonumber(Split[2]);
end
- local Pages = {}
+ local Process = function(Command, Permission, HelpString)
+ if not(Player:HasPermission(Permission)) then
+ return false;
+ end;
+ if (HelpString == "") then
+ return false;
+ end;
- local PluginList = PluginManager:GetAllPlugins()
- for k, Plugin in pairs(PluginList) do
- if( Plugin ) then
- local Commands = Plugin:GetCommands()
- for i, v in ipairs( Commands ) do
- if( Player:HasPermission( v.Permission ) ) then
- local PageNum = math.floor( CurrentLine/LinesPerPage )+1
- if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
-
- if( Pages[ PageNum ].ShownName ~= Plugin:GetName() and SHOW_PLUGIN_NAMES == true ) then
- if( CurrentLine == LinesPerPage * PageNum -1 ) then -- Don't add if it's the last line of the page, it looks silly
- -- Add it to the next page instead
- CurrentLine = CurrentLine+1
- PageNum = math.floor( CurrentLine/LinesPerPage )+1
-
- if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
- table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() )
- else
- Pages[ PageNum ].ShownName = Plugin:GetName()
- table.insert( Pages[ PageNum ], cChatColor.Gold .. Plugin:GetName() )
- end
- CurrentLine = CurrentLine+1
- PageNum = math.floor( CurrentLine/LinesPerPage )+1
- if( Pages[ PageNum ] == nil ) then Pages[ PageNum ] = {} end -- Create page
- end
- local Message = cChatColor.Blue .. v.Command .. v.Description;
- table.insert( Pages[ PageNum ], Message )
- CurrentLine = CurrentLine+1
- end
- end
- end
- end
-
- Player:SendMessage( cChatColor.Purple .. "- All commands - " .. cChatColor.Gold .. "[Page " .. (CurrentPage) .."/"..#Pages.."]" )
-
- if( Pages[CurrentPage] ~= nil ) then
- for i, v in ipairs(Pages[CurrentPage]) do
- Player:SendMessage( v )
- end
+ CurrentLine = CurrentLine + 1;
+ CurrentPage = math.floor(CurrentLine / LinesPerPage) + 1;
+ if (CurrentPage ~= PageRequested) then
+ return false;
+ end;
+ table.insert(Output, cChatColor.Blue .. Command .. HelpString);
end
+
+ PluginManager:ForEachCommand(Process);
+
+ -- CurrentPage now contains the total number of pages, and Output has the individual help lines to be sent
+
+ Player:SendMessage(cChatColor.Purple .. "- All commands - " .. cChatColor.Gold .. "[Page " .. PageRequested .. " / " .. CurrentPage .. "]");
+ for idx, msg in ipairs(Output) do
+ Player:SendMessage(msg);
+ end;
return true
end \ No newline at end of file