Advertisement
pitrioptixiop

Roblox | Police from hell script

Jul 15th, 2018
2,384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.67 KB | None | 0 0
  1. --https://github.com/Mokiros/roblox-FE-compatibility
  2. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  3. local Player,game,owner = owner,game
  4. local RealPlayer = Player
  5. do
  6.     print("FE Compatibility code V2 by Mokiros")
  7.     local RealPlayer = RealPlayer
  8.     script.Parent = RealPlayer.Character
  9.  
  10.     --Fake event to make stuff like Mouse.KeyDown work
  11.     local Disconnect_Function = function(this)
  12.         this[1].Functions[this[2]] = nil
  13.     end
  14.     local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
  15.     local FakeEvent_Metatable = {__index={
  16.         Connect = function(this,f)
  17.             local i = tostring(math.random(0,10000))
  18.             while this.Functions[i] do
  19.                 i = tostring(math.random(0,10000))
  20.             end
  21.             this.Functions[i] = f
  22.             return setmetatable({this,i},Disconnect_Metatable)
  23.         end
  24.     }}
  25.     FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
  26.     local function fakeEvent()
  27.         return setmetatable({Functions={}},FakeEvent_Metatable)
  28.     end
  29.  
  30.     --Creating fake input objects with fake variables
  31.     local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
  32.     FakeMouse.keyUp = FakeMouse.KeyUp
  33.     FakeMouse.keyDown = FakeMouse.KeyDown
  34.     local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  35.     local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
  36.         CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
  37.     end}
  38.     --Merged 2 functions into one by checking amount of arguments
  39.     CAS.UnbindAction = CAS.BindAction
  40.  
  41.     --This function will trigger the events that have been :Connect()'ed
  42.     local function TriggerEvent(self,ev,...)
  43.         for _,f in pairs(self[ev].Functions) do
  44.             f(...)
  45.         end
  46.     end
  47.     FakeMouse.TriggerEvent = TriggerEvent
  48.     UIS.TriggerEvent = TriggerEvent
  49.  
  50.     --Client communication
  51.     local Event = Instance.new("RemoteEvent")
  52.     Event.Name = "UserInput_Event"
  53.     Event.OnServerEvent:Connect(function(plr,io)
  54.         if plr~=RealPlayer then return end
  55.         FakeMouse.Target = io.Target
  56.         FakeMouse.Hit = io.Hit
  57.         if not io.isMouse then
  58.             local b = io.UserInputState == Enum.UserInputState.Begin
  59.             if io.UserInputType == Enum.UserInputType.MouseButton1 then
  60.                 return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
  61.             end
  62.             if io.UserInputType == Enum.UserInputType.MouseButton2 then
  63.                 return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
  64.             end
  65.             for _,t in pairs(CAS.Actions) do
  66.                 for _,k in pairs(t.Keys) do
  67.                     if k==io.KeyCode then
  68.                         t.Function(t.Name,io.UserInputState,io)
  69.                     end
  70.                 end
  71.             end
  72.             FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
  73.             UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
  74.         end
  75.     end)
  76.     Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
  77.     local Mouse = owner:GetMouse()
  78.     local UIS = game:GetService("UserInputService")
  79.     local input = function(io,RobloxHandled)
  80.         if RobloxHandled then return end
  81.         --Since InputObject is a client-side instance, we create and pass table instead
  82.         Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
  83.     end
  84.     UIS.InputBegan:Connect(input)
  85.     UIS.InputEnded:Connect(input)
  86.     local h,t
  87.     --Give the server mouse data every second frame, but only if the values changed
  88.     --If player is not moving their mouse, client won't fire events
  89.     local HB = game:GetService("RunService").Heartbeat
  90.     while true do
  91.         if h~=Mouse.Hit or t~=Mouse.Target then
  92.             h,t=Mouse.Hit,Mouse.Target
  93.             Event:FireServer({isMouse=true,Target=t,Hit=h})
  94.         end
  95.         --Wait 2 frames
  96.         for i=1,2 do
  97.             HB:Wait()
  98.         end
  99.     end]==],script)
  100.  
  101.     ----Sandboxed game object that allows the usage of client-side methods and services
  102.     --Real game object
  103.     local RealGame = game
  104.  
  105.     --Metatable for fake service
  106.     local FakeService_Metatable = {
  107.         __index = function(self,k)
  108.             local s = rawget(self,"_RealService")
  109.             if s then
  110.                 return typeof(s[k])=="function"
  111.                 and function(_,...)return s[k](s,...)end or s[k]
  112.             end
  113.         end,
  114.         __newindex = function(self,k,v)
  115.             local s = rawget(self,"_RealService")
  116.             if s then s[k]=v end
  117.         end
  118.     }
  119.     local function FakeService(t,RealService)
  120.         t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
  121.         return setmetatable(t,FakeService_Metatable)
  122.     end
  123.  
  124.     --Fake game object
  125.     local FakeGame = {
  126.         GetService = function(self,s)
  127.             return rawget(self,s) or RealGame:GetService(s)
  128.         end,
  129.         Players = FakeService({
  130.             LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
  131.         },"Players"),
  132.         UserInputService = FakeService(UIS,"UserInputService"),
  133.         ContextActionService = FakeService(CAS,"ContextActionService"),
  134.         RunService = FakeService({
  135.             _btrs = {},
  136.             RenderStepped = RealGame:GetService("RunService").Heartbeat,
  137.             BindToRenderStep = function(self,name,_,fun)
  138.                 self._btrs[name] = self.Heartbeat:Connect(fun)
  139.             end,
  140.             UnbindFromRenderStep = function(self,name)
  141.                 self._btrs[name]:Disconnect()
  142.             end,
  143.         },"RunService")
  144.     }
  145.     rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
  146.     FakeGame.service = FakeGame.GetService
  147.     FakeService(FakeGame,game)
  148.     --Changing owner to fake player object to support owner:GetMouse()
  149.     game,owner = FakeGame,FakeGame.Players.LocalPlayer
  150. end
  151. arrivedtexts = {"Arrived here to serve justice.","I hope not much criminals are around here.","Come out criminals, check out your new trip to hell!","Don't you dare break the rules, or else hell will never realease you loose."}
  152. prearresttexts = {"Get over here!","Stop, police here!","You got caught!","HEY!","YOU LITTLE PUNK!","*insert swear word here*-ING COME HERE!","Come here!","...hey sonny, you fowgwot youw hat for the go...Eh, nobody gets this trick."}
  153. arresttexts = {"Gotta arrest someone real quick...","I hope you're scared, because the prison you're going to is called...'hell'.","Handcuffs on!","Prepare to get arrested!","I hope there are less criminals around the world now...","Don't get cocky!","And stay down!","Anything you say can and WILL be used against you.","you're making everyone sad ( ͡° ʖ̯ ͡°)"}
  154. arrested = {}
  155. handcuffs = {}
  156. wait(1)
  157. victim = nil
  158. lp = game.Players.LocalPlayer
  159. char = lp.Character
  160. hellbase = Instance.new("Part",char)
  161. hellbase.Size = Vector3.new(2048,1,2048)
  162. hellbase.BrickColor = BrickColor.new("Really red")
  163. hellbase.Material = Enum.Material.Slate
  164. hellbase.Anchored = true
  165. hellbase.CFrame = CFrame.new(0,2048,0)
  166. torso = nil
  167. gc = char:GetChildren()
  168. char:FindFirstChildOfClass("Humanoid").WalkSpeed = 25
  169. hum = char:FindFirstChildOfClass("Humanoid")
  170. for i=1, #gc do
  171.     if gc[i].ClassName == "Shirt" or gc[i].ClassName == "Pants" or gc[i].ClassName == "ShirtGraphic" or gc[i].ClassName == "ShirtGraphics" then
  172.         gc[i]:Destroy()
  173.     end
  174. end
  175. if char:FindFirstChildOfClass("BodyColors") then
  176.     char:FindFirstChildOfClass("BodyColors"):Destroy()
  177. end
  178. newbc = Instance.new("BodyColors",char)
  179. newbc.TorsoColor = BrickColor.new("Bright red")
  180. newbc.LeftArmColor = BrickColor.new("Bright red")
  181. newbc.RightArmColor = BrickColor.new("Bright red")
  182. newbc.LeftLegColor = BrickColor.new("Medium red")
  183. newbc.RightLegColor = BrickColor.new("Medium red")
  184. head = char.Head
  185. ft = char:FindFirstChild("Torso")
  186. if ft then
  187.     torso = ft 
  188. elseif char:FindFirstChild("UpperTorso") then
  189.     torso = char:FindFirstChild("UpperTorso")
  190. end
  191. bgui = Instance.new("BillboardGui",torso)
  192. bgui.Name = "TextGui"
  193. bgui.Size = UDim2.new(0,500,0,1000)
  194. bgui.Adornee = torso
  195. text = Instance.new("TextLabel",bgui)
  196. text.BackgroundTransparency = 1
  197. text.Size = UDim2.new(0,500,0,100)
  198. text.Position = UDim2.new(0,0,0,250)
  199. text.TextColor3 = Color3.new(1,1,1)
  200. text.Font = Enum.Font.Antique
  201. text.Text = lp.Name.."\nthe Police from hell"
  202. text.TextScaled = true
  203. function changetext(msg)
  204. for ct=1, string.len(msg) do
  205. wait(0.01)
  206. text.Text = string.sub(msg,1,ct)
  207. end
  208. wait(2)
  209. for ct=1, string.len(msg) do
  210. wait(0.01)
  211. text.Text = string.sub(msg,1,string.len(msg)-ct)
  212. end
  213. text.Text = lp.Name.."\nthe Police from hell"
  214. end
  215.  
  216. lp:GetMouse().Button1Down:connect(function()
  217.     target = lp:GetMouse().Target
  218.     if target.Parent:FindFirstChildOfClass("Humanoid") then
  219.         victim = target.Parent
  220.         hum.WalkToPoint = victim.Head.Position
  221.         changetext(prearresttexts[math.random(1,#prearresttexts)])
  222.         repeat
  223.         wait(0.01)
  224.         hum.WalkToPoint = victim.Head.Position
  225.         until (head.Position - victim.Head.Position).magnitude < 5
  226.         head.Anchored = true
  227.         victim.Head.Anchored = true
  228.         table.insert(arrested,1,victim)
  229.         ft = victim:FindFirstChildOfClass("Tool")
  230.         if ft then
  231.         ft:Destroy()
  232.         end
  233.         hc = Instance.new("Tool",workspace)
  234.         table.insert(handcuffs,1,hc)
  235.         hc.CanBeDropped = false
  236.         hc.Name = "Handcuffs"
  237.         handle = Instance.new("Part",hc)
  238.         handle.Name = "Handle"
  239.         handle.Size = Vector3.new(5,1,1)
  240.         hc.Parent = victim
  241.         changetext(arresttexts[math.random(1,#arresttexts)])
  242.         victim.Head.Anchored = false
  243.         head.Anchored = false
  244.         victim.Head.CFrame = hellbase.CFrame + Vector3.new(0,35,0)
  245.     end
  246. end)
  247. changetext(arrivedtexts[math.random(1,#arrivedtexts)])
  248. hum.Died:connect(function()
  249. cframe = head.CFrame
  250. lp:LoadCharacter()
  251. wait(1)
  252. lp.Character.Head.CFrame = cframe
  253. error("oops you died")
  254. end)
  255. while true do
  256.     wait(0.01)
  257.     hum.Health = hum.MaxHealth
  258.     for ar=1, #arrested do
  259.         if arrested[ar] ~= nil then
  260.             if handcuffs[ar] ~= nil then
  261.                 handcuffs[ar].Parent = arrested[ar]
  262.             end
  263.             if (arrested[ar].Head.Position - hellbase.Position).magnitude > 25 then
  264.                 arrested[ar].Head.CFrame = hellbase.CFrame + Vector3.new(0,10,0)
  265.             end
  266.         end
  267.     end
  268. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement