diff options
Diffstat (limited to 'MCServer/Plugins/Core/help.lua')
-rw-r--r-- | MCServer/Plugins/Core/help.lua | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/MCServer/Plugins/Core/help.lua b/MCServer/Plugins/Core/help.lua new file mode 100644 index 000000000..fe8c50492 --- /dev/null +++ b/MCServer/Plugins/Core/help.lua @@ -0,0 +1,43 @@ +function HandleHelpCommand( Split, Player ) + + local PluginManager = cRoot:Get():GetPluginManager() + + local LinesPerPage = 8 + local CurrentPage = 1 + local CurrentLine = 0 + local PageRequested = 1 + local Output = {} + + if (#Split == 2) then + PageRequested = tonumber( Split[2] ) + end + + local Process = function( Command, Permission, HelpString ) + if not (Player:HasPermission(Permission)) then + return false + end + if (HelpString == "") then + return false + end + + CurrentLine = CurrentLine + 1 + CurrentPage = math.floor( CurrentLine / LinesPerPage ) + 1 + if (CurrentPage ~= PageRequested) then + return false + end + table.insert( Output, Command .. HelpString ) + end + + PluginManager:ForEachCommand( Process ) + + -- CurrentPage now contains the total number of pages, and Output has the individual help lines to be sent + + SendMessage( Player, "Page " .. PageRequested .. " out of " .. CurrentPage .. "." ) + SendMessage( Player, "'-' means no prefix, '~' means a value is required." ) + for idx, msg in ipairs( Output ) do + SendMessage( Player, msg ) + end + + return true + +end |