Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local class = require(game.ReplicatedStorage.Modules.Class)
- local perms = require(game.ReplicatedStorage.Modules.Admin.Config.Permissions)
- local Config = require(game.ReplicatedStorage.Modules.Admin.Config.Config)
- local RunService = game:GetService("RunService")
- local Commands = game.ReplicatedStorage.Modules.Admin.Commands:GetChildren()
- local CommandEvent = game.ReplicatedStorage.RemoteEvents.Command
- local Chat = game:GetService("Chat")
- local Admin = class:extend()
- function Admin:new()
- end
- function Admin.CheckRank(Player)
- local result = {}
- if RunService:IsStudio() then
- result["RankId"] = Player.UserId
- result["RankName"] = "Owner"
- return result
- end
- for i, v in pairs(perms.Ranks) do
- for i, v2 in pairs(v[3]) do
- if v2[2] == Player.UserId then
- result["RankId"] = v[1]
- result["RankName"] = v[2]
- return result
- else
- result["RankName"] = "NonAdmin"
- return result
- end
- end
- end
- end
- -- 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.
- function Admin.RunCommand(Player, cmd)
- cmd = string.upper(cmd)
- cmd = string.lower(cmd)
- for i, v in pairs(perms.Ranks) do
- for i, v2 in pairs(v[3]) do
- if v2[1] == Player.Name and v2[2] == Player.UserId or RunService:IsStudio() then
- local splitString
- splitString = string.split(cmd, " ")
- local CommandName = splitString[1]
- local CMDLower = CommandName:lower()
- local Command = {}
- local CMDOptions = {}
- for i, v3 in pairs(Commands) do
- if CMDLower == v3.Name:lower():sub(1, #CMDLower) then
- table.insert(Command, v3.Name)
- table.insert(CMDOptions, v3)
- end
- end
- if #Command ~= 0 then
- local CMD = require(CMDOptions[1])
- local NumberArgs = #CMD.Args + 1
- if #splitString < NumberArgs then
- return Config.Errors.NoArgs
- end
- if v[1] >= CMD.RankReq or RunService:IsStudio() then
- local arguments = {}
- for _, v4 in pairs(game.Players:GetPlayers()) do
- for I, v5 in pairs(splitString) do
- local i = I - 1
- if v5 ~= CommandName then
- if v5 == v4.Name:lower():sub(1, #v5) and tonumber(v5) == nil then
- arguments[i] = {v4}
- elseif v5:lower() == "me" then
- arguments[i] = {Player}
- elseif v5:lower() == "all" then
- arguments[i] = game.Players:GetPlayers()
- elseif v5:lower() == "others" then
- local plrs = {}
- plrs = game.Players:GetPlayers()
- local index = table.find(plrs, Player)
- table.remove(plrs, index)
- arguments[i] = plrs
- elseif CMD.Args[i] == "Number" then
- local number = tonumber(v5)
- if number == nil then return Config.Errors.NotNumber end
- arguments[i] = number
- elseif CMD.Args[i] == "Player" then
- if tonumber(v5) == nil then
- if v5 ~= v4.Name:lower():sub(1, #v5) then
- return Config.Errors.NoPlrFound
- end
- elseif tonumber(v5) ~= nil then
- return Config.Errors.WrongArgs
- end
- end
- end
- end
- end
- CommandEvent:FireServer(Command[1], arguments)
- return CMD.Success
- else
- return Config.Errors.NoRankPerms
- end
- else
- return '"'..CommandName..'" is not a valid Command.'
- end
- else
- return Config.Errors.NotAdmin
- end
- end
- end
- end
- return Admin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement