Advertisement
dahpiglz

FF

Nov 18th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.92 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. --Script Start
  170.  
  171. player = game:GetService("Players").LocalPlayer
  172. character = player.Character
  173. CurrentFF = nil
  174. CurrentFFWeld = nil
  175.  
  176. FFRadius = 10
  177. FFTransparency = 0.5
  178. FFColor = Color3.fromRGB(255, 0, 0)
  179. FFMaterial = "Neon"
  180.  
  181. local RFF = Instance.new("ForceField")
  182. RFF.Visible = false
  183. RFF.Parent = character
  184.  
  185. character.Humanoid.MaxHealth = math.huge
  186. character.Humanoid.Health = math.huge
  187.  
  188. function CreateForceFieldPart(attachto)
  189. if CurrentFF then
  190. CurrentFF:Destroy()
  191. end
  192.  
  193. local NewFF = Instance.new("Part")
  194. NewFF.Parent = character
  195. NewFF.CanCollide = false
  196. NewFF.Size = Vector3.new(FFRadius, FFRadius, FFRadius)
  197. NewFF.Transparency = FFTransparency
  198. NewFF.Color = FFColor
  199. NewFF.Material = FFMaterial
  200.  
  201. CurrentFF = NewFF
  202.  
  203. CurrentFF.CFrame = attachto.CFrame
  204.  
  205. local FFWeld = Instance.new("Weld")
  206. FFWeld.Parent = NewFF
  207. FFWeld.Part0 = NewFF
  208. FFWeld.Part1 = attachto
  209.  
  210. CurrentFFWeld = FFWeld
  211.  
  212. NewFF.Parent = game.Workspace
  213. end
  214.  
  215. function Check(v)
  216. if v.Parent ~= character and v ~= CurrentFF then
  217. if v.ClassName ~= "Terrain" and v.Name ~= "Base" then
  218. return(true)
  219. end
  220. end
  221. end
  222.  
  223. function onTouched(hit)
  224. if Check(hit) then
  225. hit:Destroy()
  226. end
  227. end
  228.  
  229. function RemovingFF()
  230. CreateForceFieldPart(character.HumanoidRootPart)
  231. end
  232.  
  233. while true do
  234. wait(0.01)
  235. if not CurrentFF then
  236. CreateForceFieldPart(character.HumanoidRootPart)
  237. end
  238.  
  239. CurrentFF.AncestryChanged:Connect(RemovingFF)
  240. CurrentFF.Touched:Connect(onTouched)
  241.  
  242. local function check(object)
  243. for i,v in pairs(object:GetChildren()) do
  244. if v:IsA("BasePart") then
  245. local mag = (CurrentFF.Position - v.Position).Magnitude
  246.  
  247. if mag * 2 < FFRadius then
  248. if check(v) then
  249. v:Destroy()
  250. end
  251. end
  252. end
  253.  
  254. check(v)
  255. end
  256. end
  257.  
  258. --check(game.Workspace)
  259. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement