Advertisement
iMannys

OOP admin script

Jul 30th, 2021
3,156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.47 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement