summaryrefslogtreecommitdiffstats
path: root/MCServer/Plugins/Core/help.lua
blob: 800a659246a98eb50a8774d11e3aa7921bdf614c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function HandleHelpCommand( Split, Player )
	local PluginManager = cRoot:Get():GetPluginManager()
	
	local LinesPerPage = 9
	local CurrentPage = 1
	local CurrentLine = 0
	
	if( #Split == 2 ) then
		CurrentPage = tonumber(Split[2])
	end
	
	local Pages = {}

	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
	end
	
	return true
end