From 019c8b5bc71708e2d895a95757643406f75b4149 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 1 Feb 2013 19:55:42 +0000 Subject: Moved command API into cPluginManager. As specified in http://forum.mc-server.org/showthread.php?tid=765 , commands are now bound using a single function, cPluginManager:BindCommand(). git-svn-id: http://mc-server.googlecode.com/svn/trunk@1183 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- MCServer/Plugins/Core/help.lua | 76 +++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 46 deletions(-) (limited to 'MCServer/Plugins/Core/help.lua') 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 -- cgit v1.2.3