Advertisement
dahpiglz

Head Throw

Nov 4th, 2017
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.93 KB | None | 0 0
  1. if game:GetService("RunService"):IsClient() then error("Please run as a server script. Use h/ instead of hl/.") end
  2. print("FE Compatibility: by WaverlyCole & Mokiros")
  3. InternalData = {}
  4. do
  5. script.Parent = owner.Character
  6. local Event = Instance.new("RemoteEvent")
  7. Event.Name = "UserInput"
  8. local function NewFakeEvent()
  9. local Fake = {fakeEvent=true,Connect=function(self,Func)self.Function=Func end}Fake.connect = Fake.Connect
  10. return Fake
  11. end
  12. local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()}
  13. local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()}
  14. local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
  15. self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
  16. end};ContextActionService.UnBindAction = ContextActionService.BindAction
  17. local function TriggerEvent(self,Event,...)
  18. local Trigger = Mouse[Event]
  19. if Trigger and Trigger.fakeEvent and Trigger.Function then
  20. Trigger.Function(...)
  21. end
  22. end
  23. Mouse.TrigEvent = TriggerEvent
  24. UserInputService.TrigEvent = TriggerEvent
  25. Event.OnServerEvent:Connect(function(FiredBy,Input)
  26. if FiredBy.Name ~= owner.Name then end
  27. if Input.MouseEvent then
  28. Mouse.Target = Input.Target
  29. Mouse.Hit = Input.Hit
  30. else
  31. local Begin = Input.UserInputState == Enum.UserInputState.Begin
  32. if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  33. return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up")
  34. end
  35. for _,Action in pairs(ContextActionService.Actions) do
  36. for _,Key in pairs(Action.Keys) do
  37. if Key==Input.KeyCode then
  38. Action.Function(Action.Name,Input.UserInputState,Input)
  39. end
  40. end
  41. end
  42. Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower())
  43. UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false)
  44. end
  45. end)
  46. InternalData["Mouse"] = Mouse
  47. InternalData["ContextActionService"] = ContextActionService
  48. InternalData["UserInputService"] = UserInputService
  49. Event.Parent = NLS([[
  50. local Player = owner
  51. local Event = script:WaitForChild("UserInput")
  52. local UserInputService = game:GetService("UserInputService")
  53. local Mouse = Player:GetMouse()
  54. local Input = function(Input,gameProcessedEvent)
  55. if gameProcessedEvent then return end
  56. Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
  57. end
  58. UserInputService.InputBegan:Connect(Input)
  59. UserInputService.InputEnded:Connect(Input)
  60. local Hit,Target
  61. while wait(1/30) do
  62. if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
  63. Hit,Targer = Mouse.Hit,Mouse.Target
  64. Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
  65. end
  66. end
  67. ]],owner.Character)
  68. end
  69. RealGame = game;game = setmetatable({},{
  70. __index = function (self,Index)
  71. local Sandbox = function (Thing)
  72. if Thing:IsA("Player") then
  73. local RealPlayer = Thing
  74. return setmetatable({},{
  75. __index = function (self,Index)
  76. local Type = type(RealPlayer[Index])
  77. if Type == "function" then
  78. if Index:lower() == "getmouse" or Index:lower() == "mouse" then
  79. return function (self)
  80. return InternalData["Mouse"]
  81. end
  82. end
  83. return function (self,...)
  84. return RealPlayer[Index](RealPlayer,...)
  85. end
  86. else
  87. return RealPlayer[Index]
  88. end
  89. end;
  90. __tostring = function(self)
  91. return RealPlayer.Name
  92. end
  93. })
  94. end
  95. end
  96. if RealGame[Index] then
  97. local Type = type(RealGame[Index])
  98. if Type == "function" then
  99. if Index:lower() == "getservice" or Index:lower() == "service" then
  100. return function (self,Service)
  101. if Service:lower() == "players" then
  102. return setmetatable({},{
  103. __index = function (self2,Index2)
  104. local RealService = RealGame:GetService(Service)
  105. local Type2 = type(Index2)
  106. if Type2 == "function" then
  107. return function (self,...)
  108. return RealService[Index2](RealService,...)
  109. end
  110. else
  111. if Index2:lower() == "localplayer" then
  112. return Sandbox(owner)
  113. end
  114. return RealService[Index2]
  115. end
  116. end;
  117. __tostring = function(self)
  118. return RealGame:GetService(Service).Name
  119. end
  120. })
  121. elseif Service:lower() == "contextactionservice" then
  122. return InternalData["ContextActionService"]
  123. elseif Service:lower() == "contextactionservice" then
  124. return InternalData["UserInputService"]
  125. elseif Service:lower() == "runservice" then
  126. return setmetatable({},{
  127. __index = function(self2,Index2)
  128. local RealService = RealGame:GetService(Service)
  129. local Type2 = type(Index2)
  130. if Type2 == "function" then
  131. return function (self,...)
  132. return RealService[Index2](RealService,...)
  133. end
  134. else
  135. if Index2:lower() == "bindtorenderstep" then
  136. return function (self,Name,Priority,Function)
  137. return RealGame:GetService("RunService").Stepped:Connect(Function)
  138. end
  139. end
  140. if Index2:lower() == "renderstepped" then
  141. return RealService["Stepped"]
  142. end
  143. return RealService[Index2]
  144. end
  145. end
  146. })
  147. else
  148. return RealGame:GetService(Service)
  149. end
  150. end
  151. end
  152. return function (self,...)
  153. return RealGame[Index](RealGame,...)
  154. end
  155. else
  156. if game:GetService(Index) then
  157. return game:GetService(Index)
  158. end
  159. return RealGame[Index]
  160. end
  161. else
  162. return nil
  163. end
  164. end
  165. });Game = game;owner = game:GetService("Players").LocalPlayer;script = {}
  166. print("Complete! Running...")
  167.  
  168.  
  169. local player = game:GetService("Players").LocalPlayer
  170. local character = player.Character
  171. local mouse = player:GetMouse()
  172.  
  173. local introscreengui = Instance.new("ScreenGui")
  174. local introlabel = Instance.new("TextLabel")
  175. introscreengui.Parent = game.Players.LocalPlayer.PlayerGui
  176. introlabel.Parent = introscreengui
  177. introlabel.BackgroundTransparency = 1
  178. introlabel.Size = UDim2.new(0, 1270, 0, 707)
  179. introlabel.Position = UDim2.new(0, 15, 0, 25)
  180. introlabel.TextColor3 = Color3.new(130, 203, 255)
  181. introlabel.TextSize = 12
  182. introlabel.TextStrokeTransparency = (0)
  183. introlabel.Text = ("Press E to throw")
  184.  
  185. local head = nil
  186. local headd = nil
  187. local headspeed = 2
  188.  
  189. local headylock = 0
  190.  
  191. local spinmode = 0
  192.  
  193. function onKeyPress(inputObject, gameProcessedEvent)
  194. local key = inputObject.KeyCode
  195. if key == Enum.KeyCode.E and spinmode == 0 then
  196. spinmode = 1
  197. headylock = character.Head.Position.Y
  198. h = character.Head:Clone()
  199. character.Head.Transparency = 1
  200. character.Head.CanCollide = false
  201. character.Head.face.Transparency = 1
  202. h.Parent = character
  203. h.Name = ("FakeHead")
  204. h.Anchored = true
  205. h.CanCollide = false
  206. head = h
  207.  
  208. for i,v in pairs(character:GetChildren()) do
  209. if v.ClassName == ("Accessory") then
  210. local a = v:Clone()
  211. a.Parent = h
  212. a.Handle.AccessoryWeld.Part0 = v.Handle
  213. a.Handle.AccessoryWeld.Part1 = h
  214.  
  215. v.Handle.Transparency = 1
  216. end
  217. end
  218.  
  219. h2 = Instance.new("Part")
  220. h2.Anchored = true
  221. h2.Size = Vector3.new(4,4,4)
  222. h2.CFrame = h.CFrame
  223. h2.Position = h2.Position + Vector3.new(0, -2, 0)
  224. h2.Transparency = 1
  225. h2.Parent = character
  226. h2.Name = ("FakeHeadDirection")
  227. h2.CanCollide = false
  228. headd = h2
  229.  
  230. wait(0.5)
  231.  
  232. headspeed = 2
  233. spinmode = -2
  234. headd.Anchored = false
  235. -- head.Anchored = false
  236. m = Instance.new("BodyPosition")
  237. m.Parent = headd
  238. m.Position = character.Head.Position
  239. m.MaxForce = Vector3.new(40000, 40000, 40000)
  240. m.P = 100
  241.  
  242. wait(0.5)
  243.  
  244. character.Head.Transparency = 0
  245. character.Head.face.Transparency = 0
  246. spinmode = 0
  247. head:Destroy()
  248. headd:Destroy()
  249. head = nil
  250. headd = nil
  251. character.Head.CanCollide = true
  252. for i,v in pairs(character:GetChildren()) do
  253. if v.ClassName == ("Accessory") then
  254. v.Handle.Transparency = 0
  255. end
  256. end
  257. end
  258. end
  259.  
  260. game:GetService("UserInputService").InputBegan:connect(onKeyPress)
  261.  
  262. while true do
  263. wait(0.01)
  264. if headd ~= nil then
  265. if spinmode == 1 then
  266. headd.CFrame = headd.CFrame + (headd.CFrame.lookVector * headspeed)
  267. head.Position = headd.Position
  268. head.Orientation = head.Orientation + Vector3.new(0, 90, 0)
  269.  
  270. headspeed = headspeed - 0.04
  271. end
  272.  
  273. if spinmode == 2 then
  274. headd.CFrame = headd.CFrame - (headd.CFrame.lookVector * headspeed)
  275. head.Position = headd.Position
  276. head.Orientation = head.Orientation + Vector3.new(0, -90, 0)
  277. headspeed = headspeed + 0.04
  278. end
  279.  
  280.  
  281. headd.Touched:connect(function(hit)
  282. if hit.Parent:FindFirstChild("HumanoidRootPart") ~= nil then
  283. if hit.Parent ~= character then
  284. print("Switch")
  285.  
  286. for i,v in pairs(player.Character:GetChildren()) do
  287. if v.Name ~= ("q") then
  288. v.Parent = nil
  289. end
  290. end
  291.  
  292. for i,v in pairs(hit.Parent:GetChildren()) do
  293. v.Parent = player.Character
  294. end
  295. game.Workspace.Camera.CameraSubject = player.Character.Humanoid
  296. end
  297. end
  298. if hit.Parent.Parent:FindFirstChild("HumanoidRootPart") ~= nil then
  299. if hit.Parent.Parent ~= character then
  300. print("Switch")
  301.  
  302. for i,v in pairs(player.Character:GetChildren()) do
  303. if v.Name ~= ("q") then
  304. v.Parent = nil
  305. end
  306. end
  307.  
  308. for i,v in pairs(hit.Parent.Parent:GetChildren()) do
  309. v.Parent = player.Character
  310. end
  311. game.Workspace.Camera.CameraSubject = player.Character.Humanoid
  312. end
  313. end
  314. end)
  315. end
  316. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement