iMannys

OOP admin script

Jul 30th, 2021
874
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local class = require(game.ReplicatedStorage.Modules.Class)
  2. local perms = require(game.ReplicatedStorage.Modules.Admin.Config.Permissions)
  3. local Config = require(game.ReplicatedStorage.Modules.Admin.Config.Config)
  4. local RunService = game:GetService("RunService")
  5. local Commands = game.ReplicatedStorage.Modules.Admin.Commands:GetChildren()
  6. local CommandEvent = game.ReplicatedStorage.RemoteEvents.Command
  7. local Chat = game:GetService("Chat")
  8.  
  9. local Admin = class:extend()
  10.  
  11.  
  12. function Admin:new()
  13.  
  14. end
  15.  
  16. function Admin.CheckRank(Player)
  17.     local result = {}
  18.     if RunService:IsStudio() then
  19.         result["RankId"] = Player.UserId
  20.         result["RankName"] = "Owner"
  21.         return result
  22.     end
  23.     for i, v in pairs(perms.Ranks) do
  24.         for i, v2 in pairs(v[3]) do
  25.             if v2[2] == Player.UserId then
  26.                 result["RankId"] = v[1]
  27.                 result["RankName"] = v[2]
  28.                 return result
  29.             else
  30.                 result["RankName"] = "NonAdmin"
  31.                 return result
  32.             end
  33.         end
  34.     end
  35. end
  36.  
  37.  
  38. -- This is entirely written by me (peter21340) This took some time, but it ended up working like a charm. I dont really have a use for this anymore.
  39. function Admin.RunCommand(Player, cmd)
  40.     cmd = string.upper(cmd)
  41.     cmd = string.lower(cmd)
  42.     for i, v in pairs(perms.Ranks) do
  43.         for i, v2 in pairs(v[3]) do
  44.             if v2[1] == Player.Name and v2[2] == Player.UserId or RunService:IsStudio() then
  45.                 local splitString
  46.                 splitString = string.split(cmd, " ")
  47.                 local CommandName = splitString[1]
  48.                 local CMDLower = CommandName:lower()
  49.                 local Command = {}
  50.                 local CMDOptions = {}
  51.                 for i, v3 in pairs(Commands) do
  52.                     if CMDLower == v3.Name:lower():sub(1, #CMDLower) then
  53.                         table.insert(Command, v3.Name)
  54.                         table.insert(CMDOptions, v3)
  55.                     end
  56.                 end
  57.                 if #Command ~= 0 then
  58.                     local CMD = require(CMDOptions[1])
  59.                     local NumberArgs = #CMD.Args + 1
  60.                     if #splitString < NumberArgs then
  61.                         return Config.Errors.NoArgs
  62.                     end
  63.                     if v[1] >= CMD.RankReq or RunService:IsStudio() then
  64.                         local arguments = {}
  65.                         for _, v4 in pairs(game.Players:GetPlayers()) do
  66.                             for I, v5 in pairs(splitString) do
  67.                                 local i = I - 1
  68.                                 if v5 ~= CommandName then
  69.                                     if v5 == v4.Name:lower():sub(1, #v5) and tonumber(v5) == nil then
  70.                                         arguments[i] = {v4}
  71.                                     elseif v5:lower() == "me" then
  72.                                         arguments[i] = {Player}
  73.                                     elseif v5:lower() == "all" then
  74.                                         arguments[i] = game.Players:GetPlayers()
  75.                                     elseif v5:lower() == "others" then
  76.                                         local plrs = {}
  77.                                         plrs = game.Players:GetPlayers()
  78.                                         local index = table.find(plrs, Player)
  79.                                         table.remove(plrs, index)
  80.                                         arguments[i] = plrs
  81.                                     elseif CMD.Args[i] == "Number" then                                    
  82.                                         local number = tonumber(v5)
  83.                                         if number == nil then return Config.Errors.NotNumber end
  84.                                         arguments[i] = number
  85.                                     elseif CMD.Args[i] == "Player" then
  86.                                         if tonumber(v5) == nil then
  87.                                             if v5 ~= v4.Name:lower():sub(1, #v5) then
  88.                                                 return Config.Errors.NoPlrFound
  89.                                             end
  90.                                         elseif tonumber(v5) ~= nil then
  91.                                             return Config.Errors.WrongArgs
  92.                                         end
  93.                                     end
  94.                                 end
  95.                             end
  96.                         end
  97.                         CommandEvent:FireServer(Command[1], arguments)
  98.                         return CMD.Success
  99.                     else
  100.                         return Config.Errors.NoRankPerms
  101.                     end
  102.                 else
  103.                     return '"'..CommandName..'" is not a valid Command.'
  104.                 end
  105.             else
  106.                 return Config.Errors.NotAdmin
  107.             end
  108.         end
  109.     end
  110. end
  111.  
  112.  
  113.  
  114. return Admin
RAW Paste Data