diff options
Diffstat (limited to 'MCServer/Plugins/ProtectionAreas/CommandHandlers.lua')
-rw-r--r-- | MCServer/Plugins/ProtectionAreas/CommandHandlers.lua | 322 |
1 files changed, 0 insertions, 322 deletions
diff --git a/MCServer/Plugins/ProtectionAreas/CommandHandlers.lua b/MCServer/Plugins/ProtectionAreas/CommandHandlers.lua deleted file mode 100644 index 26df73075..000000000 --- a/MCServer/Plugins/ProtectionAreas/CommandHandlers.lua +++ /dev/null @@ -1,322 +0,0 @@ - --- CommandHandlers.lua --- Defines the individual command handlers - - - - - -function InitializeCommandHandlers() - local PlgMgr = cRoot:Get():GetPluginManager(); - for idx, Cmd in ipairs(CommandReg()) do - PlgMgr:BindCommand(Cmd[2], Cmd[3], Cmd[1], Cmd[4]); - end -end - - - - - ---- Handles the ProtAdd command -function HandleAddArea(a_Split, a_Player) - -- Command syntax: ProtAdd username1 [username2] [username3] ... - if (#a_Split < 2) then - a_Player:SendMessage(g_Msgs.ErrExpectedListOfUsernames); - return true; - end - - -- Get the cuboid that the player had selected - local CmdState = GetCommandStateForPlayer(a_Player); - if (CmdState == nil) then - a_Player:SendMessage(g_Msgs.ErrCmdStateNilAddArea); - return true; - end - local Cuboid = CmdState:GetCurrentCuboid(); - if (Cuboid == nil) then - a_Player:SendMessage(g_Msgs.ErrNoAreaWanded); - return true; - end - - -- Put all allowed players into a table: - AllowedNames = {}; - for i = 2, #a_Split do - table.insert(AllowedNames, a_Split[i]); - end - - -- Add the area to the storage - local AreaID = g_Storage:AddArea(Cuboid, a_Player:GetWorld():GetName(), a_Player:GetName(), AllowedNames); - a_Player:SendMessage(string.format(g_Msgs.AreaAdded, AreaID)); - - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - -function HandleAddAreaCoords(a_Split, a_Player) - -- Command syntax: ProtAddCoords x1 z1 x2 z2 username1 [username2] [username3] ... - if (#a_Split < 6) then - a_Player:SendMessage(g_Msgs.ErrExpectedCoordsUsernames); - return true; - end - - -- Convert the coords to a cCuboid - local x1, z1 = tonumber(a_Split[2]), tonumber(a_Split[3]); - local x2, z2 = tonumber(a_Split[4]), tonumber(a_Split[5]); - if ((x1 == nil) or (z1 == nil) or (x2 == nil) or (z2 == nil)) then - a_Player:SendMessage(g_Msgs.ErrParseCoords); - return true; - end - local Cuboid = cCuboid(x1, 0, z1, x2, 255, z1); - Cuboid:Sort(); - - -- Put all allowed players into a table: - AllowedNames = {}; - for i = 6, #a_Split do - table.insert(AllowedNames, a_Split[i]); - end - - -- Add the area to the storage - local AreaID = g_Storage:AddArea(Cuboid, a_Player:GetWorld():GetName(), a_Player:GetName(), AllowedNames); - a_Player:SendMessage(string.format(g_Msgs.AreaAdded, AreaID)); - - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - -function HandleAddAreaUser(a_Split, a_Player) - -- Command syntax: ProtAddUser AreaID username1 [username2] [username3] ... - if (#a_Split < 3) then - a_Player:SendMessage(g_Msgs.ErrExpectedAreaIDUsernames); - return true; - end - - -- Put all allowed players into a table: - AllowedNames = {}; - for i = 3, #a_Split do - table.insert(AllowedNames, a_Split[i]); - end - - -- Add the area to the storage - if (not(g_Storage:AddAreaUsers( - tonumber(a_Split[2]), a_Player:GetWorld():GetName(), a_Player:GetName(), AllowedNames)) - ) then - LOGWARNING("g_Storage:AddAreaUsers failed"); - a_Player:SendMessage(g_Msgs.ErrDBFailAddUsers); - return true; - end - if (#AllowedNames == 0) then - a_Player:SendMessage(g_Msgs.AllUsersAlreadyAllowed); - else - a_Player:SendMessage(string.format(g_Msgs.UsersAdded, table.concat(AllowedNames, ", "))); - end - - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - -function HandleDelArea(a_Split, a_Player) - -- Command syntax: ProtDelArea AreaID - if (#a_Split ~= 2) then - a_Player:SendMessage(g_Msgs.ErrExpectedAreaID); - return true; - end - - -- Parse the AreaID - local AreaID = tonumber(a_Split[2]); - if (AreaID == nil) then - a_Player:SendMessage(g_Msgs.ErrParseAreaID); - return true; - end - - -- Delete the area - g_Storage:DelArea(a_Player:GetWorld():GetName(), AreaID); - - a_Player:SendMessage(string.format(g_Msgs.AreaDeleted, AreaID)); - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - -function HandleGiveWand(a_Split, a_Player) - local NumGiven = a_Player:GetInventory():AddItem(cConfig:GetWandItem()); - if (NumGiven == 1) then - a_Player:SendMessage(g_Msgs.WandGiven); - else - a_Player:SendMessage(g_Msgs.ErrNoSpaceForWand); - end - return true; -end - - - - - -function HandleListAreas(a_Split, a_Player) - -- Command syntax: ProtListAreas [x, z] - - local x, z; - if (#a_Split == 1) then - -- Get the last "wanded" coord - local CmdState = GetCommandStateForPlayer(a_Player); - if (CmdState == nil) then - a_Player:SendMessage(g_Msgs.ErrCmdStateNilListAreas); - return true; - end - x, z = CmdState:GetLastCoords(); - if ((x == nil) or (z == nil)) then - a_Player:SendMessage(g_Msgs.ErrListNotWanded); - return true; - end - elseif (#a_Split == 3) then - -- Parse the coords from the command params - x = tonumber(a_Split[2]); - z = tonumber(a_Split[3]); - if ((x == nil) or (z == nil)) then - a_Player:SendMessage(g_Msgs.ErrParseCoordsListAreas); - return true; - end - else - -- Wrong number of params, report back to the user - a_Player:SendMessage(g_Msgs.ErrSyntaxErrorListAreas); - return true; - end - - a_Player:SendMessage(string.format(g_Msgs.ListAreasHeader, x, z)); - - -- List areas intersecting the coords - local PlayerName = a_Player:GetName(); - local WorldName = a_Player:GetWorld():GetName(); - g_Storage:ForEachArea(x, z, WorldName, - function(AreaID, MinX, MinZ, MaxX, MaxZ, CreatorName) - local Coords = string.format("%s: {%d, %d} - {%d, %d} ", AreaID, MinX, MinZ, MaxX, MaxZ); - local Allowance; - if (g_Storage:IsAreaAllowed(AreaID, PlayerName, WorldName)) then - Allowance = g_Msgs.AreaAllowed; - else - Allowance = g_Msgs.AreaNotAllowed; - end - a_Player:SendMessage(string.format(g_Msgs.ListAreasRow, Coords, Allowance, CreatorName)); - end - ); - - a_Player:SendMessage(g_Msgs.ListAreasFooter); - return true; -end - - - - ---- Lists all allowed users for a particular area -function HandleListUsers(a_Split, a_Player) - -- Command syntax: ProtListUsers AreaID - if (#a_Split ~= 2) then - a_Player:SendMessage(g_Msgs.ErrExpectedAreaID); - end - - -- Get the general info about the area - local AreaID = a_Split[2]; - local WorldName = a_Player:GetWorld():GetName(); - local MinX, MinZ, MaxX, MaxZ, CreatorName = g_Storage:GetArea(AreaID, WorldName); - if (MinX == nil) then - a_Player:SendMessage(string.format(g_Msgs.ErrNoSuchArea, AreaID)); - return true; - end - - -- Send the header - a_Player:SendMessage(string.format(g_Msgs.ListUsersHeader, AreaID, MinX, MinZ, MaxX, MaxZ, CreatorName)); - - -- List and count the allowed users - local NumUsers = 0; - g_Storage:ForEachUserInArea(AreaID, WorldName, - function(UserName) - a_Player:SendMessage(string.format(g_Msgs.ListUsersRow, UserName)); - NumUsers = NumUsers + 1; - end - ); - - -- Send the footer - a_Player:SendMessage(string.format(g_Msgs.ListUsersFooter, AreaID, NumUsers)); - - return true; -end - - - - - -function HandleRemoveUser(a_Split, a_Player) - -- Command syntax: ProtRemUser AreaID UserName - if (#a_Split ~= 3) then - a_Player:SendMessage(g_Msgs.ErrExpectedAreaIDUserName); - return true; - end - - -- Parse the AreaID - local AreaID = tonumber(a_Split[2]); - if (AreaID == nil) then - a_Player:SendMessage(g_Msgs.ErrParseAreaID); - return true; - end - - -- Remove the user from the DB - local UserName = a_Split[3]; - g_Storage:RemoveUser(AreaID, UserName, a_Player:GetWorld():GetName()); - - -- Send confirmation - a_Player:SendMessage(string.format(g_Msgs.RemovedUser, UserName, AreaID)); - - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - -function HandleRemoveUserAll(a_Split, a_Player) - -- Command syntax: ProtRemUserAll UserName - if (#a_Split ~= 2) then - a_Player:SendMessage(g_Msgs.ErrExpectedUserName); - return true; - end - - -- Remove the user from the DB - g_Storage:RemoveUserAll(a_Split[2], a_Player:GetWorld():GetName()); - - -- Send confirmation - a_Player:SendMessage(string.format(g_Msgs.RemovedUserAll, UserName)); - - -- Reload all currently logged in players - ReloadAllPlayersInWorld(a_Player:GetWorld():GetName()); - - return true; -end - - - - - |