Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Players = game:GetService("Players")
- local DefaultWalkSpeed = "8"
- local DataStoreService = game:GetService("DataStoreService")
- local HttpService = game:GetService("HttpService")
- local ServerStorage = game:GetService("ServerStorage")
- local ProcessCommandRunner = Instance.new("RemoteEvent", ReplicatedStorage)
- local ProcessAdminRemotes = Instance.new("RemoteEvent", ProcessCommandRunner)
- local ProcessErrorRunner = Instance.new("RemoteEvent", ProcessCommandRunner)
- local DSBans = DataStoreService:GetDataStore("OutbackBans")
- local LogUrl = "https://discordapp.com/api/webhooks/-------------------------------------------------------------------------"
- ProcessCommandRunner.Name = "ChatCommandRemote"
- ProcessAdminRemotes.Name = "AdminRemote"
- ProcessErrorRunner.Name = "CommandErrorRemote"
- local Staff = {
- {GroupId = 4044916; RankId = 229}
- }
- local Prefix = "\\"
- local Commands = {}
- local Banned = {}
- local function ExploitKick(Player)
- Player:Kick("Stop exploiting!")
- local data = {
- ['embeds'] = {{
- description = Player.Name.." was kicked from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
- color = 13632027,
- thumbnail = {
- url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
- },
- author = {
- name = "Command ran by SYSTEM"
- },
- fields = {{
- name = "Reason",
- value = "Exploiting administration system"
- }}
- }}
- }
- HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
- end
- local function IsStaff(Player)
- for _,v in pairs(Staff) do
- if type(v) == "table" then
- local Rank = Player:GetRankInGroup(v.GroupId)
- if Rank >= (v.RankId) then return true end
- end
- end
- return false
- end
- local function IsAdmin(Player)
- for _,v in pairs(Staff) do
- if type(v) == "table" then
- local Rank = Player:GetRankInGroup(v.GroupId)
- if Rank >= (230) then return true end
- end
- end
- return false
- end
- --[[Commands.print = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local testUser = Arguments[1]
- local printM = tostring("/print "..message)
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(testUser)) then
- print(v.Name.." is equal to "..testUser)
- end
- end
- end]]
- Commands.kick = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local toKick = Arguments[1]
- if not toKick then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toKick)) then
- toKick = v.Name
- break
- else
- local printE = tostring("Error: \""..toKick.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local Reason = string.sub(message,(string.len(toKick)+1),-1)
- if Reason == nil then
- Reason = "No reason specified."
- end
- local printM = tostring("/kick "..message)
- --[[if Players[toKick]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
- local printE = tostring("Error: This user has equal or higher permissions then you!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end]]
- xpcall(function()
- Players[toKick]:Kick(Reason)
- local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
- local data = {
- ['embeds'] = {{
- description = toKick.." was kicked from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
- color = 13632027,
- thumbnail = {
- url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&username="..toKick
- },
- author = {
- name = "Command ran by "..Runner,
- icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
- },
- fields = {{
- name = "Reason",
- value = Reason
- }}
- }}
- }
- HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
- ProcessCommandRunner:FireClient(Player,printM)
- end, function(err)
- local printE = tostring("Error: "..err)
- return ProcessErrorRunner:FireClient(Player,printE)
- end)
- end
- Commands.ban = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- if not IsAdmin(Player) then return end
- local message = table.concat(Arguments," ")
- local toBan = Arguments[1]
- if not toBan then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toBan)) then
- toBan = v.Name
- break
- end
- end
- local Reason = string.sub(message, (string.len(toBan)+1),-1)
- if Reason == nil then
- Reason = "No reason specified."
- end
- local printM = tostring("/ban "..message)
- if Players[toBan]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
- local printE = tostring("Error: This user has equal or higher permissions then you!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- xpcall(function()
- DSBans:SetAsync(Players[toBan].UserId, true)
- -- Call the datastore BEFORE kicking them just incase if they're not ingame
- Players[toBan]:Kick(Reason)
- local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
- local data = {
- ['embeds'] = {{
- description = toBan.." was banned from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
- color = 13632027,
- thumbnail = {
- url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&username="..toBan
- },
- author = {
- name = "Command ran by "..Runner,
- icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
- },
- fields = {{
- name = "Reason",
- value = Reason
- }}
- }}
- }
- HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
- ProcessCommandRunner:FireClient(Player,printM)
- end, function(err)
- print(err)
- end)
- end
- Commands.unban = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- if not IsAdmin(Player) then return end
- local message = table.concat(Arguments," ")
- local toUnban = Arguments[1]
- if not toUnban then
- local printE = tostring("Error: No UserID specified")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toUnban)) then
- toUnban = v.Name
- end
- end
- local Reason = string.sub(message,(string.len(toUnban)+1),-1)
- if Reason == nil then
- Reason = "No reason specified."
- end
- local printM = tostring("/unban "..message)
- DSBans:SetAsync(toUnban, false)
- local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
- local data = {
- ['embeds'] = {{
- description = toUnban.." was unbanned from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
- color = 13632027,
- thumbnail = {
- url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&userid="..toUnban
- },
- author = {
- name = "Command ran by "..Runner,
- icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
- },
- fields = {{
- name = "Reason",
- value = Reason
- }}
- }}
- }
- HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
- ProcessCommandRunner:FireClient(Player,printM)
- end
- Commands.to = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local toUser = Arguments[1]
- if toUser == "me" then
- toUser = Player.Name
- end
- if not toUser then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toUser)) then
- toUser = v.Name
- break
- else
- local printE = tostring("Error: \""..toUser.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local tPos = CFrame.new(Players[toUser].Character.HumanoidRootPart.Position)
- local printM = tostring("/to "..message)
- if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
- Player.Character.HumanoidRootPart.CFrame = tPos
- end
- ProcessCommandRunner:FireClient(Player,printM)
- end
- Commands.freeze = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local toFreeze = Arguments[1]
- if toFreeze == "me" then
- toFreeze = Player.Name
- end
- if not toFreeze then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toFreeze)) then
- toFreeze = v.Name
- break
- else
- local printE = tostring("Error: \""..toFreeze.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local printM = tostring("/freeze "..message)
- if Players[toFreeze]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
- local printE = tostring("Error: This user has equal or higher permissions then you!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- xpcall(function()
- Players[toFreeze].Character.Humanoid.WalkSpeed = 0
- Players[toFreeze].Character.Torso.Anchored = true
- ProcessCommandRunner:FireClient(Player,printM)
- end, function(err)
- print(err)
- local printE = tostring("Error: "..err)
- return ProcessErrorRunner:FireClient(Player,printE)
- end)
- end
- Commands.unfreeze = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local toUnfreeze = Arguments[1]
- if toUnfreeze == "me" then
- toUnfreeze = Player.Name
- end
- if not toUnfreeze then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toUnfreeze)) then
- toUnfreeze = v.Name
- break
- else
- local printE = tostring("Error: \""..toUnfreeze.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local printM = tostring("/unfreeze "..message)
- if Players[toUnfreeze]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
- local printE = tostring("Error: This user has equal or higher permissions then you!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- xpcall(function()
- Players[toUnfreeze].Character.Humanoid.WalkSpeed = DefaultWalkSpeed
- Players[toUnfreeze].Character.Torso.Anchored = false
- ProcessCommandRunner:FireClient(Player,printM)
- end, function(err)
- print(err)
- local printE = tostring("Error: "..err)
- return ProcessErrorRunner:FireClient(Player,printE)
- end)
- end
- Commands.bring = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- local message = table.concat(Arguments," ")
- local toBring = Arguments[1]
- if toBring == "me" then
- toBring = Player.Name
- end
- if not toBring then
- local printE = tostring("Error: No user specified.")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(toBring)) then
- toBring = v.Name
- break
- else
- local printE = tostring("Error: \""..toBring.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local tPos = CFrame.new(Player.Character.HumanoidRootPart.Position)
- local printM = tostring("/bring "..message)
- if Players[toBring].Character and Players[toBring].Character:FindFirstChild("HumanoidRootPart") then
- Players[toBring].Character.HumanoidRootPart.CFrame = tPos
- end
- ProcessCommandRunner:FireClient(Player,printM)
- end
- Commands.invisible = function(Player,Arguments)
- if not IsStaff(Player) then return ExploitKick() end
- if not IsAdmin(Player) then return end
- local message = table.concat(Arguments," ")
- local makeInvisible = Arguments[1]
- if not makeInvisible then
- makeInvisible = Player.Name
- elseif makeInvisible == "me" then
- makeInvisible = Player.Name
- end
- for _,v in pairs(Players:GetPlayers()) do
- if string.lower(v.Name):match(string.lower(makeInvisible)) then
- makeInvisible = v.Name
- break
- else
- local printE = tostring("Error: \""..makeInvisible.."\" doesn't exist!")
- return ProcessErrorRunner:FireClient(Player,printE)
- end
- end
- local printM = tostring("/invisible "..message)
- for _,item in pairs(Players[makeInvisible].Character:GetChildren()) do
- if item:IsA("Part") then
- item.Transparency = 1
- elseif item:IsA("Accessory") or item:IsA("Tool") then
- for _,accessoryPart in pairs(item:GetChildren()) do
- if accessoryPart:IsA("Part") then
- accessoryPart.Transparency = 1
- end
- end
- end
- end
- ProcessCommandRunner:FireClient(Player,printM)
- end
- local function ParseMessage(Player,message)
- local PrefixMatch = string.match(message,"^"..Prefix)
- if PrefixMatch then
- message = string.gsub(message,PrefixMatch,"",1)
- local Arguments = {}
- for Argument in string.gmatch(message,"[^%s]+") do
- table.insert(Arguments,Argument)
- end
- local CommandName = Arguments[1]
- table.remove(Arguments,1)
- local CommandFunc = Commands[CommandName]
- if CommandFunc ~= nil then
- CommandFunc(Player,Arguments)
- end
- end
- end
- ProcessCommandRunner.OnServerEvent:Connect(function(Player, message)
- if IsStaff(Player) then
- ParseMessage(Player,message)
- end
- end)
- local function onPlayerAdded(Player)
- if DSBans:GetAsync(Player.UserId) then
- Player:Kick("You've been banned from this game!")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment