From 604f231df116334481af50cfc6da6afda779872b Mon Sep 17 00:00:00 2001 From: Lukas Pioch Date: Mon, 26 Oct 2015 18:00:44 +0100 Subject: [PATCH] Use new InfoReg.lua --- CommandHandlers.lua | 1 + InfoReg.lua | 151 -------------------------------------------- ProtectionAreas.lua | 3 +- 3 files changed, 3 insertions(+), 152 deletions(-) delete mode 100644 InfoReg.lua diff --git a/CommandHandlers.lua b/CommandHandlers.lua index 374be0a..60ef933 100644 --- a/CommandHandlers.lua +++ b/CommandHandlers.lua @@ -222,6 +222,7 @@ function HandleListUsers(a_Split, a_Player) -- Command syntax: /protection user list AreaID if (#a_Split ~= 4) then a_Player:SendMessage(g_Msgs.ErrExpectedAreaID); + return true end -- Get the general info about the area diff --git a/InfoReg.lua b/InfoReg.lua deleted file mode 100644 index 61a3026..0000000 --- a/InfoReg.lua +++ /dev/null @@ -1,151 +0,0 @@ - --- InfoReg.lua - --- Implements registration functions that process g_PluginInfo - - - - - ---- Lists all the subcommands that the player has permissions for -local function ListSubcommands(a_Player, a_Subcommands, a_CmdString) - a_Player:SendMessage("The " .. a_CmdString .. " command requires another verb:"); - local Verbs = {}; - for cmd, info in pairs(a_Subcommands) do - if (a_Player:HasPermission(info.Permission or "")) then - table.insert(Verbs, a_CmdString .. " " .. cmd); - end - end - table.sort(Verbs); - for idx, verb in ipairs(Verbs) do - a_Player:SendMessage(verb); - end -end - - - - - ---- This is a generic command callback used for handling multicommands' parent commands --- For example, if there are "/gal save" and "/gal load" commands, this callback handles the "/gal" command -local function MultiCommandHandler(a_Split, a_Player, a_CmdString, a_CmdInfo, a_Level) - local Verb = a_Split[a_Level + 1]; - if (Verb == nil) then - -- No verb was specified. If there is a handler for the upper level command, call it: - if (a_CmdInfo.Handler ~= nil) then - return a_CmdInfo.Handler(a_Split, a_Player); - end - -- Let the player know they need to give a subcommand: - ListSubcommands(a_Player, a_CmdInfo.Subcommands, a_CmdString); - return true; - end - - -- A verb was specified, look it up in the subcommands table: - local Subcommand = a_CmdInfo.Subcommands[Verb]; - if (Subcommand == nil) then - if (a_Level > 1) then - -- This is a true subcommand, display the message and make MCS think the command was handled - -- Otherwise we get weird behavior: for "/cmd verb" we get "unknown command /cmd" although "/cmd" is valid - a_Player:SendMessage("The " .. a_CmdString .. " command doesn't support verb " .. Verb); - return true; - end - -- This is a top-level command, let MCS handle the unknown message - return false; - end - - -- Check the permission: - if not(a_Player:HasPermission(Subcommand.Permission or "")) then - a_Player:SendMessage("You don't have permission to execute this command"); - return true; - end - - -- Check if the handler is valid: - if (Subcommand.Handler == nil) then - if (Subcommand.Subcommands == nil) then - LOG("Cannot find handler for command " .. a_CmdString .. " " .. Verb); - return false; - end - ListSubcommands(a_Player, Subcommand.Subcommands, a_CmdString .. " " .. Verb); - return true; - end - - -- Execute: - return Subcommand.Handler(a_Split, a_Player); -end - - - - - ---- Registers all commands specified in the g_PluginInfo.Commands -function RegisterPluginInfoCommands() - -- A sub-function that registers all subcommands of a single command, using the command's Subcommands table - -- The a_Prefix param already contains the space after the previous command - -- a_Level is the depth of the subcommands being registered, with 1 being the top level command - local function RegisterSubcommands(a_Prefix, a_Subcommands, a_Level) - assert(a_Subcommands ~= nil); - - for cmd, info in pairs(a_Subcommands) do - local CmdName = a_Prefix .. cmd; - local Handler = info.Handler; - -- Provide a special handler for multicommands: - if (info.Subcommands ~= nil) then - Handler = function(a_Split, a_Player) - return MultiCommandHandler(a_Split, a_Player, CmdName, info, a_Level); - end - end - - if (Handler == nil) then - LOGWARNING(g_PluginInfo.Name .. ": Invalid handler for command " .. CmdName .. ", command will not be registered."); - else - cPluginManager.BindCommand(CmdName, info.Permission or "", Handler, info.HelpString or ""); - -- Register all aliases for the command: - if (info.Alias ~= nil) then - if (type(info.Alias) == "string") then - info.Alias = {info.Alias}; - end - for idx, alias in ipairs(info.Alias) do - cPluginManager.BindCommand(a_Prefix .. alias, info.Permission or "", info.Handler, info.HelpString or ""); - end - end - end - - -- Recursively register any subcommands: - if (info.Subcommands ~= nil) then - RegisterSubcommands(a_Prefix .. cmd .. " ", info.Subcommands, a_Level + 1); - end - end - end - - -- Loop through all commands in the plugin info, register each: - RegisterSubcommands("", g_PluginInfo.Commands, 1); -end - - - - - ---- Registers all console commands specified in the g_PluginInfo.ConsoleCommands -function RegisterPluginInfoConsoleCommands() - -- A sub-function that registers all subcommands of a single command, using the command's Subcommands table - -- The a_Prefix param already contains the space after the previous command - local function RegisterSubcommands(a_Prefix, a_Subcommands) - assert(a_Subcommands ~= nil); - - for cmd, info in pairs(a_Subcommands) do - local CmdName = a_Prefix .. cmd; - cPluginManager.BindConsoleCommand(cmd, info.Handler, info.HelpString or ""); - -- Recursively register any subcommands: - if (info.Subcommands ~= nil) then - RegisterSubcommands(a_Prefix .. cmd .. " ", info.Subcommands); - end - end - end - - -- Loop through all commands in the plugin info, register each: - RegisterSubcommands("", g_PluginInfo.ConsoleCommands); -end - - - - diff --git a/ProtectionAreas.lua b/ProtectionAreas.lua index 102990e..9a99b41 100644 --- a/ProtectionAreas.lua +++ b/ProtectionAreas.lua @@ -31,7 +31,8 @@ function Initialize(a_Plugin) return false; end InitializeHooks(a_Plugin); - RegisterPluginInfoCommands(); + dofile(cPluginManager:GetPluginsPath() .. "/InfoReg.lua") + RegisterPluginInfoCommands() -- We might be reloading, so there may be players already present in the server; reload all of them cRoot:Get():ForEachWorld(