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.lua43
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