Warriorfoox

Untitled

Aug 17th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.86 KB | None | 0 0
  1. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  2. local Players = game:GetService("Players")
  3. local DefaultWalkSpeed = "8"
  4. local DataStoreService = game:GetService("DataStoreService")
  5. local HttpService = game:GetService("HttpService")
  6. local ServerStorage = game:GetService("ServerStorage")
  7. local ProcessCommandRunner = Instance.new("RemoteEvent", ReplicatedStorage)
  8. local ProcessAdminRemotes = Instance.new("RemoteEvent", ProcessCommandRunner)
  9. local ProcessErrorRunner = Instance.new("RemoteEvent", ProcessCommandRunner)
  10. local DSBans = DataStoreService:GetDataStore("OutbackBans")
  11. local LogUrl = "https://discordapp.com/api/webhooks/-------------------------------------------------------------------------"
  12. ProcessCommandRunner.Name = "ChatCommandRemote"
  13. ProcessAdminRemotes.Name = "AdminRemote"
  14. ProcessErrorRunner.Name = "CommandErrorRemote"
  15.  
  16. local Staff = {
  17.     {GroupId = 4044916; RankId = 229}
  18. }
  19.  
  20. local Prefix = "\\"
  21. local Commands = {}
  22. local Banned = {}
  23.  
  24. local function ExploitKick(Player)
  25.     Player:Kick("Stop exploiting!")
  26.     local data = {
  27.         ['embeds'] = {{
  28.             description = Player.Name.." was kicked from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
  29.             color = 13632027,
  30.             thumbnail = {
  31.                 url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
  32.             },
  33.             author = {
  34.                 name = "Command ran by SYSTEM"
  35.             },
  36.             fields = {{
  37.                 name = "Reason",
  38.                 value = "Exploiting administration system"
  39.             }}
  40.         }}
  41.     }
  42.     HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
  43. end
  44.  
  45. local function IsStaff(Player)
  46.     for _,v in pairs(Staff) do
  47.         if type(v) == "table" then
  48.             local Rank = Player:GetRankInGroup(v.GroupId)
  49.             if Rank >= (v.RankId) then return true end
  50.         end
  51.     end
  52.     return false
  53. end
  54.  
  55. local function IsAdmin(Player)
  56.     for _,v in pairs(Staff) do
  57.         if type(v) == "table" then
  58.             local Rank = Player:GetRankInGroup(v.GroupId)
  59.             if Rank >= (230) then return true end
  60.         end
  61.     end
  62.     return false
  63. end
  64.  
  65. --[[Commands.print = function(Player,Arguments)
  66.     if not IsStaff(Player) then return ExploitKick() end
  67.     local message = table.concat(Arguments," ")
  68.     local testUser = Arguments[1]
  69.     local printM = tostring("/print "..message)
  70.     for _,v in pairs(Players:GetPlayers()) do
  71.         if string.lower(v.Name):match(string.lower(testUser)) then
  72.             print(v.Name.." is equal to "..testUser)
  73.         end
  74.     end
  75. end]]
  76.  
  77. Commands.kick = function(Player,Arguments)
  78.     if not IsStaff(Player) then return ExploitKick() end
  79.     local message = table.concat(Arguments," ")
  80.     local toKick = Arguments[1]
  81.     if not toKick then
  82.         local printE = tostring("Error: No user specified.")
  83.         return ProcessErrorRunner:FireClient(Player,printE)
  84.     end
  85.     for _,v in pairs(Players:GetPlayers()) do
  86.         if string.lower(v.Name):match(string.lower(toKick)) then
  87.             toKick = v.Name
  88.             break
  89.         else
  90.             local printE = tostring("Error: \""..toKick.."\" doesn't exist!")
  91.             return ProcessErrorRunner:FireClient(Player,printE)
  92.         end
  93.     end
  94.     local Reason = string.sub(message,(string.len(toKick)+1),-1)
  95.     if Reason == nil then
  96.         Reason = "No reason specified."
  97.     end
  98.     local printM = tostring("/kick "..message)
  99.     --[[if Players[toKick]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
  100.         local printE = tostring("Error: This user has equal or higher permissions then you!")
  101.         return ProcessErrorRunner:FireClient(Player,printE)
  102.     end]]
  103.     xpcall(function()
  104.         Players[toKick]:Kick(Reason)
  105.         local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
  106.         local data = {
  107.             ['embeds'] = {{
  108.                 description = toKick.." was kicked from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
  109.                 color = 13632027,
  110.                 thumbnail = {
  111.                     url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&username="..toKick
  112.                 },
  113.                 author = {
  114.                     name = "Command ran by "..Runner,
  115.                     icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
  116.                 },
  117.                 fields = {{
  118.                     name = "Reason",
  119.                     value = Reason
  120.                 }}
  121.             }}
  122.         }
  123.         HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
  124.         ProcessCommandRunner:FireClient(Player,printM)
  125.     end, function(err)
  126.         local printE = tostring("Error: "..err)
  127.         return ProcessErrorRunner:FireClient(Player,printE)
  128.     end)
  129. end
  130.  
  131. Commands.ban = function(Player,Arguments)
  132.     if not IsStaff(Player) then return ExploitKick() end
  133.     if not IsAdmin(Player) then return end
  134.     local message = table.concat(Arguments," ")
  135.     local toBan = Arguments[1]
  136.     if not toBan then
  137.         local printE = tostring("Error: No user specified.")
  138.         return ProcessErrorRunner:FireClient(Player,printE)
  139.     end
  140.     for _,v in pairs(Players:GetPlayers()) do
  141.         if string.lower(v.Name):match(string.lower(toBan)) then
  142.             toBan = v.Name
  143.             break
  144.         end
  145.     end
  146.     local Reason = string.sub(message, (string.len(toBan)+1),-1)
  147.     if Reason == nil then
  148.         Reason = "No reason specified."
  149.     end
  150.     local printM = tostring("/ban "..message)
  151.     if Players[toBan]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
  152.         local printE = tostring("Error: This user has equal or higher permissions then you!")
  153.         return ProcessErrorRunner:FireClient(Player,printE)
  154.     end
  155.     xpcall(function()
  156.         DSBans:SetAsync(Players[toBan].UserId, true)
  157.         -- Call the datastore BEFORE kicking them just incase if they're not ingame
  158.         Players[toBan]:Kick(Reason)
  159.         local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
  160.         local data = {
  161.             ['embeds'] = {{
  162.                 description = toBan.." was banned from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
  163.                 color = 13632027,
  164.                 thumbnail = {
  165.                     url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&username="..toBan
  166.                 },
  167.                 author = {
  168.                     name = "Command ran by "..Runner,
  169.                     icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
  170.                 },
  171.                 fields = {{
  172.                     name = "Reason",
  173.                     value = Reason
  174.                 }}
  175.             }}
  176.         }
  177.         HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
  178.         ProcessCommandRunner:FireClient(Player,printM)
  179.     end, function(err)
  180.         print(err)
  181.     end)
  182. end
  183.  
  184. Commands.unban = function(Player,Arguments)
  185.     if not IsStaff(Player) then return ExploitKick() end
  186.     if not IsAdmin(Player) then return end
  187.     local message = table.concat(Arguments," ")
  188.     local toUnban = Arguments[1]
  189.     if not toUnban then
  190.         local printE = tostring("Error: No UserID specified")
  191.         return ProcessErrorRunner:FireClient(Player,printE)
  192.     end
  193.     for _,v in pairs(Players:GetPlayers()) do
  194.         if string.lower(v.Name):match(string.lower(toUnban)) then
  195.             toUnban = v.Name
  196.         end
  197.     end
  198.     local Reason = string.sub(message,(string.len(toUnban)+1),-1)
  199.     if Reason == nil then
  200.         Reason = "No reason specified."
  201.     end
  202.     local printM = tostring("/unban "..message)
  203.     DSBans:SetAsync(toUnban, false)
  204.     local Runner = Player.Name; if Runner == "Warriorfoox" or "kealynwolf" then Runner = "SYSTEM" end
  205.     local data = {
  206.         ['embeds'] = {{
  207.             description = toUnban.." was unbanned from ["..game.Name.."](https://www.roblox.com/games/"..game.PlaceId..")",
  208.             color = 13632027,
  209.             thumbnail = {
  210.                 url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Formant=Png&userid="..toUnban
  211.             },
  212.             author = {
  213.                 name = "Command ran by "..Runner,
  214.                 icon_url = "https://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&Format=Png&username="..Player.Name
  215.             },
  216.             fields = {{
  217.                 name = "Reason",
  218.                 value = Reason
  219.             }}
  220.         }}
  221.     }
  222.     HttpService:PostAsync(LogUrl, HttpService:JSONEncode(data))
  223.     ProcessCommandRunner:FireClient(Player,printM)
  224. end
  225.  
  226. Commands.to = function(Player,Arguments)
  227.     if not IsStaff(Player) then return ExploitKick() end
  228.     local message = table.concat(Arguments," ")
  229.     local toUser = Arguments[1]
  230.     if toUser == "me" then
  231.         toUser = Player.Name
  232.     end
  233.     if not toUser then
  234.         local printE = tostring("Error: No user specified.")
  235.         return ProcessErrorRunner:FireClient(Player,printE)
  236.     end
  237.     for _,v in pairs(Players:GetPlayers()) do
  238.         if string.lower(v.Name):match(string.lower(toUser)) then
  239.             toUser = v.Name
  240.             break
  241.         else
  242.             local printE = tostring("Error: \""..toUser.."\" doesn't exist!")
  243.             return ProcessErrorRunner:FireClient(Player,printE)
  244.         end
  245.     end
  246.     local tPos = CFrame.new(Players[toUser].Character.HumanoidRootPart.Position)
  247.     local printM = tostring("/to "..message)
  248.     if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
  249.         Player.Character.HumanoidRootPart.CFrame = tPos
  250.     end
  251.     ProcessCommandRunner:FireClient(Player,printM)
  252. end
  253.  
  254. Commands.freeze = function(Player,Arguments)
  255.     if not IsStaff(Player) then return ExploitKick() end
  256.     local message = table.concat(Arguments," ")
  257.     local toFreeze = Arguments[1]
  258.     if toFreeze == "me" then
  259.         toFreeze = Player.Name
  260.     end
  261.     if not toFreeze then
  262.         local printE = tostring("Error: No user specified.")
  263.         return ProcessErrorRunner:FireClient(Player,printE)
  264.     end
  265.     for _,v in pairs(Players:GetPlayers()) do
  266.         if string.lower(v.Name):match(string.lower(toFreeze)) then
  267.             toFreeze = v.Name
  268.             break
  269.         else
  270.             local printE = tostring("Error: \""..toFreeze.."\" doesn't exist!")
  271.             return ProcessErrorRunner:FireClient(Player,printE)
  272.         end
  273.     end
  274.     local printM = tostring("/freeze "..message)
  275.     if Players[toFreeze]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
  276.         local printE = tostring("Error: This user has equal or higher permissions then you!")
  277.         return ProcessErrorRunner:FireClient(Player,printE)
  278.     end
  279.     xpcall(function()
  280.         Players[toFreeze].Character.Humanoid.WalkSpeed = 0
  281.         Players[toFreeze].Character.Torso.Anchored = true
  282.         ProcessCommandRunner:FireClient(Player,printM)
  283.     end, function(err)
  284.         print(err)
  285.         local printE = tostring("Error: "..err)
  286.         return ProcessErrorRunner:FireClient(Player,printE)
  287.     end)
  288. end
  289.  
  290. Commands.unfreeze = function(Player,Arguments)
  291.     if not IsStaff(Player) then return ExploitKick() end
  292.     local message = table.concat(Arguments," ")
  293.     local toUnfreeze = Arguments[1]
  294.     if toUnfreeze == "me" then
  295.         toUnfreeze = Player.Name
  296.     end
  297.     if not toUnfreeze then
  298.         local printE = tostring("Error: No user specified.")
  299.         return ProcessErrorRunner:FireClient(Player,printE)
  300.     end
  301.     for _,v in pairs(Players:GetPlayers()) do
  302.         if string.lower(v.Name):match(string.lower(toUnfreeze)) then
  303.             toUnfreeze = v.Name
  304.             break
  305.         else
  306.             local printE = tostring("Error: \""..toUnfreeze.."\" doesn't exist!")
  307.             return ProcessErrorRunner:FireClient(Player,printE)
  308.         end
  309.     end
  310.     local printM = tostring("/unfreeze "..message)
  311.     if Players[toUnfreeze]:GetRankInGroup(4044916) >= Player:GetRankInGroup(4044916) then
  312.         local printE = tostring("Error: This user has equal or higher permissions then you!")
  313.         return ProcessErrorRunner:FireClient(Player,printE)
  314.     end
  315.     xpcall(function()
  316.         Players[toUnfreeze].Character.Humanoid.WalkSpeed = DefaultWalkSpeed
  317.         Players[toUnfreeze].Character.Torso.Anchored = false
  318.         ProcessCommandRunner:FireClient(Player,printM)
  319.     end, function(err)
  320.         print(err)
  321.         local printE = tostring("Error: "..err)
  322.         return ProcessErrorRunner:FireClient(Player,printE)
  323.     end)
  324. end
  325.    
  326. Commands.bring = function(Player,Arguments)
  327.     if not IsStaff(Player) then return ExploitKick() end
  328.     local message = table.concat(Arguments," ")
  329.     local toBring = Arguments[1]
  330.     if toBring == "me" then
  331.         toBring = Player.Name
  332.     end
  333.     if not toBring then
  334.         local printE = tostring("Error: No user specified.")
  335.         return ProcessErrorRunner:FireClient(Player,printE)
  336.     end
  337.     for _,v in pairs(Players:GetPlayers()) do
  338.         if string.lower(v.Name):match(string.lower(toBring)) then
  339.             toBring = v.Name
  340.             break
  341.         else
  342.             local printE = tostring("Error: \""..toBring.."\" doesn't exist!")
  343.             return ProcessErrorRunner:FireClient(Player,printE)
  344.         end
  345.     end
  346.     local tPos = CFrame.new(Player.Character.HumanoidRootPart.Position)
  347.    
  348.     local printM = tostring("/bring "..message)
  349.     if Players[toBring].Character and Players[toBring].Character:FindFirstChild("HumanoidRootPart") then
  350.         Players[toBring].Character.HumanoidRootPart.CFrame = tPos
  351.     end
  352.     ProcessCommandRunner:FireClient(Player,printM)
  353. end
  354.  
  355. Commands.invisible = function(Player,Arguments)
  356.     if not IsStaff(Player) then return ExploitKick() end
  357.     if not IsAdmin(Player) then return end
  358.     local message = table.concat(Arguments," ")
  359.     local makeInvisible = Arguments[1]
  360.     if not makeInvisible then
  361.         makeInvisible = Player.Name
  362.     elseif makeInvisible == "me" then
  363.         makeInvisible = Player.Name
  364.     end
  365.     for _,v in pairs(Players:GetPlayers()) do
  366.         if string.lower(v.Name):match(string.lower(makeInvisible)) then
  367.             makeInvisible = v.Name
  368.             break
  369.         else
  370.             local printE = tostring("Error: \""..makeInvisible.."\" doesn't exist!")
  371.             return ProcessErrorRunner:FireClient(Player,printE)
  372.         end
  373.     end
  374.     local printM = tostring("/invisible "..message)
  375.     for _,item in pairs(Players[makeInvisible].Character:GetChildren()) do
  376.         if item:IsA("Part") then
  377.             item.Transparency = 1
  378.         elseif item:IsA("Accessory") or item:IsA("Tool") then
  379.             for _,accessoryPart in pairs(item:GetChildren()) do
  380.                 if accessoryPart:IsA("Part") then
  381.                     accessoryPart.Transparency = 1
  382.                 end
  383.             end
  384.         end
  385.     end
  386.     ProcessCommandRunner:FireClient(Player,printM)
  387. end
  388.  
  389. local function ParseMessage(Player,message)
  390.     local PrefixMatch = string.match(message,"^"..Prefix)
  391.     if PrefixMatch then
  392.         message = string.gsub(message,PrefixMatch,"",1)
  393.         local Arguments = {}
  394.         for Argument in string.gmatch(message,"[^%s]+") do
  395.             table.insert(Arguments,Argument)
  396.         end
  397.         local CommandName = Arguments[1]
  398.         table.remove(Arguments,1)
  399.         local CommandFunc = Commands[CommandName]
  400.         if CommandFunc ~= nil then
  401.             CommandFunc(Player,Arguments)
  402.         end
  403.     end
  404. end
  405.  
  406. ProcessCommandRunner.OnServerEvent:Connect(function(Player, message)
  407.     if IsStaff(Player) then
  408.         ParseMessage(Player,message)
  409.     end
  410. end)
  411.  
  412. local function onPlayerAdded(Player)
  413.     if DSBans:GetAsync(Player.UserId) then
  414.         Player:Kick("You've been banned from this game!")
  415.     end
  416. end
Advertisement
Add Comment
Please, Sign In to add comment