SHARE
TWEET

t

a guest Jul 21st, 2019 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
  87.     local h,t
  88.     --Give the server mouse data every second frame, but only if the values changed
  89.     --If player is not moving their mouse, client won't fire events
  90.     local HB = game:GetService("RunService").Heartbeat
  91.     while true do
  92.         if h~=Mouse.Hit or t~=Mouse.Target then
  93.             h,t=Mouse.Hit,Mouse.Target
  94.             Event:FireServer({isMouse=true,Target=t,Hit=h})
  95.         end
  96.         --Wait 2 frames
  97.         for i=1,2 do
  98.             HB:Wait()
  99.         end
  100.     end]==],script)
  101.  
  102.     ----Sandboxed game object that allows the usage of client-side methods and services
  103.     --Real game object
  104.     local RealGame = game
  105.  
  106.     --Metatable for fake service
  107.     local FakeService_Metatable = {
  108.         __index = function(self,k)
  109.             local s = rawget(self,"_RealService")
  110.             if s then
  111.                 return typeof(s[k])=="function"
  112.                 and function(_,...)return s[k](s,...)end or s[k]
  113.             end
  114.         end,
  115.         __newindex = function(self,k,v)
  116.             local s = rawget(self,"_RealService")
  117.             if s then s[k]=v end
  118.         end
  119.     }
  120.     local function FakeService(t,RealService)
  121.         t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
  122.         return setmetatable(t,FakeService_Metatable)
  123.     end
  124.  
  125.     --Fake game object
  126.     local FakeGame = {
  127.         GetService = function(self,s)
  128.             return rawget(self,s) or RealGame:GetService(s)
  129.         end,
  130.         Players = FakeService({
  131.             LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
  132.         },"Players"),
  133.         UserInputService = FakeService(UIS,"UserInputService"),
  134.         ContextActionService = FakeService(CAS,"ContextActionService"),
  135.         RunService = FakeService({
  136.             _btrs = {},
  137.             RenderStepped = RealGame:GetService("RunService").Heartbeat,
  138.             BindToRenderStep = function(self,name,_,fun)
  139.                 self._btrs[name] = self.Heartbeat:Connect(fun)
  140.             end,
  141.             UnbindFromRenderStep = function(self,name)
  142.                 self._btrs[name]:Disconnect()
  143.             end,
  144.         },"RunService")
  145.     }
  146.     rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
  147.     FakeGame.service = FakeGame.GetService
  148.     FakeService(FakeGame,game)
  149.     --Changing owner to fake player object to support owner:GetMouse()
  150.     game,owner = FakeGame,FakeGame.Players.LocalPlayer
  151. end
  152.  
  153. script.Parent = workspace.CurrentCamera
  154. local plr = game:GetService("Players").LocalPlayer
  155.  
  156. local tool = Instance.new("Tool",plr:WaitForChild("Backpack"))
  157. tool.Grip = CFrame.new(0,-0.8,-0.2) * CFrame.Angles(math.rad(0),math.rad(180),math.rad(0))
  158. tool.Name = "bluE"
  159.  
  160. local part = Instance.new("Part",tool)
  161. part.Name = "Handle"
  162. part.Size = Vector3.new(4,6,4)
  163. part.TopSurface = "Smooth"
  164. part.BottomSurface = "Smooth"
  165. part.CanCollide = false
  166. part:BreakJoints()
  167.  
  168. local mesh = Instance.new("SpecialMesh",part)
  169. mesh.MeshId = "rbxassetid://431003868" --mesh.MeshId = "rbxassetid://132920499"
  170. mesh.TextureId = "rbxassetid://430627740" --"http://www.roblox.com/asset/?id=134479421"
  171. mesh.Scale = Vector3.new(2,2,2)
  172.  
  173. local sound = Instance.new("Sound",part)
  174. sound.SoundId = "rbxassetid://511340819"
  175. sound.Volume = 3
  176.  
  177. local sound2 = Instance.new("Sound",part)
  178. sound2.SoundId = "rbxassetid://280667448"
  179. sound2.Volume = 5
  180.  
  181. local sound3 = Instance.new("Sound",part)
  182. sound3.SoundId = "rbxassetid://139100774"
  183. sound3.Volume = 10
  184.  
  185. local sound4 = Instance.new("Sound",part)
  186. sound4.SoundId = "rbxassetid://258057783"
  187. sound4.Volume = 10
  188.  
  189. local sound5 = Instance.new("Sound",part)
  190. sound5.SoundId = "rbxassetid://130932305"
  191. sound5.Volume = 10
  192.  
  193. local sound6 = Instance.new("Sound",part)
  194. sound6.SoundId = "rbxassetid://906084456"
  195. sound6.Volume = 10
  196. sound6.TimePosition = 2
  197.  
  198. function firstHum(target)
  199.     for i,v in pairs(target:GetChildren()) do
  200.         if v:IsA("Humanoid") then
  201.             return v
  202.         end
  203.     end
  204.     return nil
  205. end
  206.  
  207. local slap = false
  208. local cd = false
  209.  
  210. plr:GetMouse().Button1Down:connect(function()
  211.     if tool.Parent == plr.Character then
  212.         if slap == false then
  213.             slap = true
  214.             sound2:Play()
  215.             local str = Instance.new("StringValue")
  216.             str.Name = "toolanim"
  217.             str.Value = "Slash"
  218.             str.Parent = tool
  219.             wait(1)
  220.             slap = false
  221.         end
  222.     end
  223. end)
  224.  
  225. part.Touched:connect(function(hit)
  226.     if slap == true then
  227.         if cd == false then
  228.             if not hit:IsDescendantOf(plr.Character) then
  229.                 if hit.Parent:IsA("Model") then
  230.                     local fhum = firstHum(hit.Parent)
  231.                     if fhum then
  232.                         cd = true
  233.                         fhum.PlatformStand = true
  234.                         sound:Play()
  235.                         local con1
  236.                         con1 = game:GetService("RunService").Heartbeat:connect(function()
  237.                             fhum.PlatformStand = true
  238.                         end)
  239.                         wait(0.1)
  240.                         local vel = Instance.new("BodyVelocity",hit)
  241.                         vel.Velocity = ((hit.Position - plr.Character:WaitForChild("HumanoidRootPart").Position).unit + Vector3.new(0,0.5,0))*50
  242.                         vel.MaxForce = Vector3.new(10000000,10000000,10000000)
  243.                         wait(1)
  244.                         cd = false
  245.                         vel:Destroy()
  246.                         local vel2 = Instance.new("BodyVelocity",hit)
  247.                         vel2.Velocity = Vector3.new(0,12.5,0)
  248.                         vel2.MaxForce = Vector3.new(10000000,10000000,10000000)
  249.                         local p2 = Instance.new("Part",hit)
  250.                         p2.Anchored = true
  251.                         p2.Transparency = 0.6
  252.                         p2.CanCollide = false
  253.                         p2.Size = Vector3.new(0.2,0.2,0.2)
  254.                         p2.CFrame = CFrame.new(hit.CFrame.p) * CFrame.Angles(math.rad(0),math.rad(90),math.rad(0))
  255.                         p2.BrickColor = BrickColor.new("New Yeller")
  256.                         p2.Material = "Neon"
  257.                         local m2 = Instance.new("CylinderMesh",p2)
  258.                         m2.Scale = Vector3.new(60,10000,60)
  259.                         local scln = sound3:Clone()
  260.                         scln.Parent = hit
  261.                         scln:Play()
  262.                         local con2
  263.                         con2 = game:GetService("RunService").Heartbeat:connect(function()
  264.                             p2.CFrame = CFrame.new(hit.CFrame.p) * CFrame.Angles(math.rad(0),math.rad(90),math.rad(0))
  265.                         end)
  266.                         wait(7)
  267.                         vel2.Velocity = Vector3.new(0,0,0)
  268.                         wait(0.5)
  269.                         scln:Stop()
  270.                         local scln3 = sound5:Clone()
  271.                         scln3.Parent = hit
  272.                         scln3:Play()
  273.                         wait(1)
  274.                         local bav = Instance.new("BodyAngularVelocity",hit)
  275.                         bav.AngularVelocity = Vector3.new(math.random(0,360),math.random(0,360),math.random(0,360))
  276.                         vel2.Velocity = Vector3.new(0,-250,0)
  277.                         p2.BrickColor = BrickColor.new("Really red")
  278.                         local scln6 = sound6:Clone()
  279.                         scln6.Parent = hit
  280.                         scln6:Play()
  281.                         local continue = false
  282.                         local htc
  283.                         htc = hit.Touched:connect(function(hitp)
  284.                             if not hitp:IsDescendantOf(hit.Parent) then
  285.                                 continue = true
  286.                                 scln6:Stop()
  287.                                 vel2:Destroy()
  288.                                 con2:Disconnect()
  289.                                 con1:Disconnect()
  290.                                 htc:Disconnect()
  291.                                 p2:Destroy()
  292.                             end
  293.                         end)
  294.                         repeat wait() until continue == true
  295.                         local ctab = {}
  296.                         for i=1,4 do
  297.                             local p = Instance.new("Part",hit)
  298.                             p.Size = Vector3.new(30,30,30)
  299.                             p.Anchored = true
  300.                             p.CanCollide = false
  301.                             p.TopSurface = "Smooth"
  302.                             p.BottomSurface = "Smooth"
  303.                             p.Color = Color3.fromRGB(255,math.random(0,255),0)
  304.                             p.CFrame = hit.CFrame
  305.                             local con
  306.                             con = game:GetService("RunService").Heartbeat:connect(function()
  307.                                 p.CFrame = p.CFrame * CFrame.Angles(math.rad(math.random(0,360)),math.rad(math.random(0,360)),math.rad(math.random(0,360)))
  308.                                 p.Transparency = p.Transparency + 0.01
  309.                                 if p.Transparency >= 1 then
  310.                                     con:Disconnect()
  311.                                 end
  312.                             end)
  313.                             table.insert(ctab,con)
  314.                         end
  315.                         Instance.new("Explosion",workspace).Position = hit.Position
  316.                         local scln2 = sound4:Clone()
  317.                         scln2.Parent = hit
  318.                         scln2:Play()
  319.                         vel2:Destroy()
  320.                         hit.Parent:BreakJoints()
  321.                         repeat wait() until not hit:IsDescendantOf(workspace)
  322.                         con2:Disconnect()
  323.                     end
  324.                 end
  325.             end
  326.         end
  327.     end
  328. end)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top