summaryrefslogblamecommitdiffstats
path: root/MCServer/Plugins/Core/help.lua
blob: fe8c50492db8d2ab480604066ca6cb04b705e68e (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                           
                                                            






                               
                             
                                                    
           




                                                                   
                                          

                                    
 

                                                                          
                                                      


                                                             

           
                                               


                                                                                                                  





                                                                                           
                   

   
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