--https://github.com/Mokiros/roblox-FE-compatibility if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end local Player,game,owner = owner,game local RealPlayer = Player do print("FE Compatibility code V2 by Mokiros") local RealPlayer = RealPlayer script.Parent = RealPlayer.Character --Fake event to make stuff like Mouse.KeyDown work local Disconnect_Function = function(this) this[1].Functions[this[2]] = nil end local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}} local FakeEvent_Metatable = {__index={ Connect = function(this,f) local i = tostring(math.random(0,10000)) while this.Functions[i] do i = tostring(math.random(0,10000)) end this.Functions[i] = f return setmetatable({this,i},Disconnect_Metatable) end }} FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect local function fakeEvent() return setmetatable({Functions={}},FakeEvent_Metatable) end --Creating fake input objects with fake variables local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()} FakeMouse.keyUp = FakeMouse.KeyUp FakeMouse.keyDown = FakeMouse.KeyDown local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()} local CAS = {Actions={},BindAction=function(self,name,fun,touch,...) CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil end} --Merged 2 functions into one by checking amount of arguments CAS.UnbindAction = CAS.BindAction --This function will trigger the events that have been :Connect()'ed local function TriggerEvent(self,ev,...) for _,f in pairs(self[ev].Functions) do f(...) end end FakeMouse.TriggerEvent = TriggerEvent UIS.TriggerEvent = TriggerEvent --Client communication local Event = Instance.new("RemoteEvent") Event.Name = "UserInput_Event" Event.OnServerEvent:Connect(function(plr,io) if plr~=RealPlayer then return end FakeMouse.Target = io.Target FakeMouse.Hit = io.Hit if not io.isMouse then local b = io.UserInputState == Enum.UserInputState.Begin if io.UserInputType == Enum.UserInputType.MouseButton1 then return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up") end if io.UserInputType == Enum.UserInputType.MouseButton2 then return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up") end for _,t in pairs(CAS.Actions) do for _,k in pairs(t.Keys) do if k==io.KeyCode then t.Function(t.Name,io.UserInputState,io) end end end FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower()) UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false) end end) Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event") local Mouse = owner:GetMouse() local UIS = game:GetService("UserInputService") local input = function(io,RobloxHandled) if RobloxHandled then return end --Since InputObject is a client-side instance, we create and pass table instead Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target}) end UIS.InputBegan:Connect(input) UIS.InputEnded:Connect(input) local h,t --Give the server mouse data every second frame, but only if the values changed --If player is not moving their mouse, client won't fire events local HB = game:GetService("RunService").Heartbeat while true do if h~=Mouse.Hit or t~=Mouse.Target then h,t=Mouse.Hit,Mouse.Target Event:FireServer({isMouse=true,Target=t,Hit=h}) end --Wait 2 frames for i=1,2 do HB:Wait() end end]==],script) ----Sandboxed game object that allows the usage of client-side methods and services --Real game object local RealGame = game --Metatable for fake service local FakeService_Metatable = { __index = function(self,k) local s = rawget(self,"_RealService") if s then return typeof(s[k])=="function" and function(_,...)return s[k](s,...)end or s[k] end end, __newindex = function(self,k,v) local s = rawget(self,"_RealService") if s then s[k]=v end end } local function FakeService(t,RealService) t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService return setmetatable(t,FakeService_Metatable) end --Fake game object local FakeGame = { GetService = function(self,s) return rawget(self,s) or RealGame:GetService(s) end, Players = FakeService({ LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player) },"Players"), UserInputService = FakeService(UIS,"UserInputService"), ContextActionService = FakeService(CAS,"ContextActionService"), RunService = FakeService({ _btrs = {}, RenderStepped = RealGame:GetService("RunService").Heartbeat, BindToRenderStep = function(self,name,_,fun) self._btrs[name] = self.Heartbeat:Connect(fun) end, UnbindFromRenderStep = function(self,name) self._btrs[name]:Disconnect() end, },"RunService") } rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer) FakeGame.service = FakeGame.GetService FakeService(FakeGame,game) --Changing owner to fake player object to support owner:GetMouse() game,owner = FakeGame,FakeGame.Players.LocalPlayer end game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 0 game.Players.LocalPlayer.Character.Humanoid.JumpPower = 0 for i=1,2,0.1 do wait(.1) game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame+Vector3.new(0,1,0) for _,anim in pairs(game.Players.LocalPlayer.Character.Humanoid:GetPlayingAnimationTracks()) do anim:Stop() end end for _,part in pairs(game.Players.LocalPlayer.Character:GetChildren()) do if part.ClassName == "Accessory" or part.ClassName == "Shirt" or part.ClassName == "Pants" or part.ClassName == "ShirtGraphic" or part.ClassName == "BodyColors" then part:remove() end if part:IsA("BasePart") then part.Color = Color3.fromRGB(255, 204, 153) end end game.Players.LocalPlayer.Character.Head.Color = Color3.fromRGB(0,255,0) game.Players.LocalPlayer.Character.Head.Mesh.Offset = Vector3.new(0,-0.75,-0.5) game.Players.LocalPlayer.Character.Head.Mesh.MeshId = "rbxassetid://785024366" game.Players.LocalPlayer.Character.Head.face.Texture = "rbxassetid://785492382" game.Players.LocalPlayer.Character.Head.Mesh.Scale = Vector3.new(13, 20, 13) local shirt = Instance.new("Shirt",game.Players.LocalPlayer.Character) shirt.ShirtTemplate = "rbxassetid://1037676911" local pants = Instance.new("Pants",game.Players.LocalPlayer.Character) pants.PantsTemplate = "rbxassetid://1010828432" local fidget1 = Instance.new("Part",game.Players.LocalPlayer.Character) fidget1.Anchored = false fidget1.Size = Vector3.new(0,0,0) fidget1.Color = Color3.fromRGB(0,255,0) fidget1.CanCollide = false game.Players.LocalPlayer.Character.Head.Mesh:Clone().Parent = fidget1 fidget1.Mesh.Scale = Vector3.new(3,4,3) fidget1.Mesh.Offset = Vector3.new(0,-1,-0.1) game.Players.LocalPlayer.Character.Head.face:Clone().Parent = fidget1 fidget1.CFrame = game.Players.LocalPlayer.Character["Right Arm"].CFrame for i=1,3 do wait() fidget1.Position = fidget1.Position+Vector3.new(0,1,0) end local weld = Instance.new("Weld",fidget1) weld.Part0 = fidget1 weld.Part1= game.Players.LocalPlayer.Character["Right Arm"] weld.Name = "FidgetHip" local fidget2 = Instance.new("Part",game.Players.LocalPlayer.Character) fidget2.Anchored = false fidget2.Size = Vector3.new(0,0,0) fidget2.Color = Color3.fromRGB(0,255,0) fidget2.CanCollide = false game.Players.LocalPlayer.Character.Head.Mesh:Clone().Parent = fidget2 fidget2.Mesh.Scale = Vector3.new(3,4,3) fidget2.Mesh.Offset = Vector3.new(0,-1,-0.1) game.Players.LocalPlayer.Character.Head.face:Clone().Parent = fidget2 fidget2.CFrame = game.Players.LocalPlayer.Character["Left Arm"].CFrame for i=1,3 do wait() fidget2.Position = fidget2.Position+Vector3.new(0,1,0) end local weld = Instance.new("Weld",fidget2) weld.Part0 = fidget2 weld.Part1= game.Players.LocalPlayer.Character["Left Arm"] weld.Name = "FidgetHip2" local fidget3 = Instance.new("Part",game.Players.LocalPlayer.Character) fidget3.Anchored = false fidget3.Size = Vector3.new(0,0,0) fidget3.Color = Color3.fromRGB(0,255,0) fidget3.CanCollide = false game.Players.LocalPlayer.Character.Head.Mesh:Clone().Parent = fidget3 fidget3.Mesh.Scale = Vector3.new(3,4,3) fidget3.Mesh.Offset = Vector3.new(0,-1,-0.1) game.Players.LocalPlayer.Character.Head.face:Clone().Parent = fidget3 fidget3.CFrame = game.Players.LocalPlayer.Character["Right Leg"].CFrame for i=1,3 do wait() fidget3.Position = fidget3.Position+Vector3.new(0,1,0) end local weld = Instance.new("Weld",fidget3) weld.Part0 = fidget3 weld.Part1= game.Players.LocalPlayer.Character["Right Leg"] weld.Name = "FidgetHip3" local fidget4 = Instance.new("Part",game.Players.LocalPlayer.Character) fidget4.Anchored = false fidget4.Size = Vector3.new(0,0,0) fidget4.Color = Color3.fromRGB(0,255,0) fidget4.CanCollide = false game.Players.LocalPlayer.Character.Head.Mesh:Clone().Parent = fidget4 fidget4.Mesh.Scale = Vector3.new(3,4,3) fidget4.Mesh.Offset = Vector3.new(0,-1,-0.1) game.Players.LocalPlayer.Character.Head.face:Clone().Parent = fidget4 fidget4.CFrame = game.Players.LocalPlayer.Character["Left Leg"].CFrame for i=1,3 do wait() fidget4.Position = fidget4.Position+Vector3.new(0,1,0) end local weld = Instance.new("Weld",fidget4) weld.Part0 = fidget4 weld.Part1= game.Players.LocalPlayer.Character["Left Leg"] weld.Name = "FidgetHip4" game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 75 game.Players.LocalPlayer.Character.Humanoid.MaxHealth = 333333333 game.Players.LocalPlayer.Character.Humanoid.Health = 333333333 game.Players.LocalPlayer.Character.Humanoid.JumpPower = 50 rot = 0 armrot = 0 speed = 0.25 armspeed = 0.25 flying = nil flyingtornado1 = nil flyingtornado2 = nil tornado1 = nil tornado2 = nil fullspin = false counter = 0 function fullrot() local part = Instance.new("Part",game.Players.LocalPlayer.Character) part.Material = Enum.Material.Neon part.Color = Color3.fromRGB(0,255,0) part.Anchored = true part.Transparency = 0.9 part.CanCollide = false part.Shape = Enum.PartType.Cylinder part.Size = Vector3.new(math.huge,1,1) part.Name = "FullSpinC" part.CFrame = CFrame.new(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)*CFrame.Angles(0,0,math.rad(90)) game:GetService("Debris"):AddItem(part,1.5) for i=0.9,1,0.004 do wait() part.Size = part.Size+Vector3.new(0,2,2) part.Transparency = i end part:remove() end game:GetService("RunService").RenderStepped:connect(function() for _,part in pairs(game.Players.LocalPlayer.Character:GetChildren()) do if part.Name == "Torso" or part.Name == "Right Leg" or part.Name == "Left Leg" or part.Name == "Right Arm" or part.Name == "Left Arm" then part.Color = Color3.fromRGB(255, 204, 153) end end game.Players.LocalPlayer.Character.Head.Color = Color3.fromRGB(0,255,0) counter = counter+1 if counter >= 10 then counter= 0 if fullspin == true then fullrot() end end rot = rot+speed armrot = armrot+armspeed game.Players.LocalPlayer.Character.Head.CanCollide = false fidget1.FidgetHip.C0 = CFrame.new(fidget1.FidgetHip.C0.p)*CFrame.Angles(0,armrot,0) fidget2.FidgetHip2.C0 = CFrame.new(fidget2.FidgetHip2.C0.p)*CFrame.Angles(0,-armrot,0) for _,child in pairs(game.Players.LocalPlayer.Character:GetChildren()) do if child.Name == "FullSpinC" then child.CFrame = CFrame.new(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)*CFrame.Angles(0,0,math.rad(90)) end end if flying ~= nil then fidget3.FidgetHip3.C0 = CFrame.new(fidget3.FidgetHip3.C0.p)*CFrame.Angles(0,rot*2,0) fidget4.FidgetHip4.C0 = CFrame.new(fidget4.FidgetHip4.C0.p)*CFrame.Angles(0,-rot*2,0) flying.CFrame = CFrame.new(game.Players.LocalPlayer.Character.HumanoidRootPart.Position+Vector3.new(0,-3.5,0)) end game.Players.LocalPlayer.Character.Torso.Neck.C0 = CFrame.new(game.Players.LocalPlayer.Character.Torso.Neck.C0.p)*CFrame.Angles(math.rad(90),0,rot) if fullspin == true then game.Players.LocalPlayer.Character.HumanoidRootPart.RootJoint.C0 = game.Players.LocalPlayer.Character.HumanoidRootPart.RootJoint.C0*CFrame.Angles(0,0,rot*10) for _,child in pairs(game.Workspace:GetChildren()) do if child ~= game.Players.LocalPlayer.Character then for _,InChild in pairs(child:GetChildren()) do if InChild:IsA("BasePart") then if InChild.Position.X > game.Players.LocalPlayer.Character.HumanoidRootPart.Position.X-20 and InChild.Position.X < game.Players.LocalPlayer.Character.HumanoidRootPart.Position.X+20 then if InChild.Position.Z > game.Players.LocalPlayer.Character.HumanoidRootPart.Position.Z-20 and InChild.Position.Z < game.Players.LocalPlayer.Character.HumanoidRootPart.Position.Z+20 then for _,InChild2 in pairs(child:GetChildren()) do if InChild2.ClassName == "Humanoid" then InChild2.Health = InChild2.Health-2 InChild.Velocity = game.Workspace.CurrentCamera.CFrame.lookVector*80 end end end end end end end end end if tornado1 ~= nil then local pos1 = game.Players.LocalPlayer.Character["Right Arm"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))).p local pos2 = game.Players.LocalPlayer:GetMouse().Hit:toWorldSpace(CFrame.new(7.5,0,0)).p tornado1.Mesh.Scale = Vector3.new(15,(pos1-pos2).magnitude,15) tornado1.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.rad(90),armrot*2,math.rad(180)) for _,child in pairs(game.Workspace:GetChildren()) do if child ~= game.Players.LocalPlayer.Character then for _,InChild in pairs(child:GetChildren()) do if InChild:IsA("BasePart") then if (InChild.Position-pos2).magnitude < 7.5 then for _,InChild2 in pairs(child:GetChildren()) do if InChild2.ClassName == "Humanoid" then InChild2.Health = InChild2.Health-2 InChild.Velocity = game.Workspace.CurrentCamera.CFrame.lookVector*80 end end end end end end end end if tornado2 ~= nil then local pos1 = game.Players.LocalPlayer.Character["Left Arm"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))).p local pos2 = game.Players.LocalPlayer:GetMouse().Hit:toWorldSpace(CFrame.new(-7.5,0,0)).p tornado2.Mesh.Scale = Vector3.new(15,(pos1-pos2).magnitude,15) tornado2.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.rad(90),armrot*2,math.rad(180)) for _,child in pairs(game.Workspace:GetChildren()) do if child ~= game.Players.LocalPlayer.Character then for _,InChild in pairs(child:GetChildren()) do if InChild:IsA("BasePart") then if (InChild.Position-pos2).magnitude < 10 then for _,InChild2 in pairs(child:GetChildren()) do if InChild2.ClassName == "Humanoid" then InChild2.Health = InChild2.Health-1 InChild.Velocity = game.Workspace.CurrentCamera.CFrame.lookVector*80 end end end end end end end end if flyingtornado1 ~= nil then local pos1 = game.Players.LocalPlayer.Character["Right Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))).p local cframe1 = game.Players.LocalPlayer.Character["Right Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))) local pos2 = game.Players.LocalPlayer.Character["Right Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(7.5,0,0))).p-Vector3.new(0,4000,0) local ray = Ray.new(pos1,cframe1:toWorldSpace(CFrame.new(Vector3.new(500,0,0))).p-Vector3.new(0,4000,0)) local hit,position,normal = game.Workspace:FindPartOnRay(ray,game.Players.LocalPlayer.Character) if hit ~= nil then pos2 = position end flyingtornado1.Mesh.Scale = Vector3.new(6,(pos1-pos2).magnitude,6) flyingtornado1.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.rad(90),armrot*2,math.rad(180)) for _,child in pairs(game.Workspace:GetChildren()) do if child ~= game.Players.LocalPlayer.Character then for _,InChild in pairs(child:GetChildren()) do if InChild:IsA("BasePart") then if (InChild.Position-pos2).magnitude < 3 then for _,InChild2 in pairs(child:GetChildren()) do if InChild2.ClassName == "Humanoid" then InChild2.Health = InChild2.Health-1 InChild.Velocity = game.Workspace.CurrentCamera.CFrame.lookVector*80 end end end end end end end end if flyingtornado2 ~= nil then local pos1 = game.Players.LocalPlayer.Character["Left Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))).p local cframe1 = game.Players.LocalPlayer.Character["Left Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(0,-1,0))) local pos2 = game.Players.LocalPlayer.Character["Left Leg"].CFrame:toWorldSpace(CFrame.new(Vector3.new(-7.5,0,0))).p-Vector3.new(0,4000,0) local ray = Ray.new(pos1,cframe1:toWorldSpace(CFrame.new(Vector3.new(-500,0,0))).p-Vector3.new(0,4000,0)) local hit,position,normal = game.Workspace:FindPartOnRay(ray,game.Players.LocalPlayer.Character) if hit ~= nil then pos2 = position end flyingtornado2.Mesh.Scale = Vector3.new(6,(pos1-pos2).magnitude,6) flyingtornado2.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.rad(90),armrot*2,math.rad(180)) for _,child in pairs(game.Workspace:GetChildren()) do if child ~= game.Players.LocalPlayer.Character then for _,InChild in pairs(child:GetChildren()) do if InChild:IsA("BasePart") then if (InChild.Position-pos2).magnitude < 3 then for _,InChild2 in pairs(child:GetChildren()) do if InChild2.ClassName == "Humanoid" then InChild2.Health = InChild2.Health-1 InChild.Velocity = game.Workspace.CurrentCamera.CFrame.lookVector*80 end end end end end end end end end) game:GetService("UserInputService").InputBegan:connect(function(key) if key.KeyCode == Enum.KeyCode.F then if flying == nil then flying = Instance.new("Part",game.Players.LocalPlayer.Character) flying.Transparency = 1 flying.Anchored = true flying.Size = Vector3.new(3,1,3) flyingtornado1 = Instance.new("Part",game.Players.LocalPlayer.Character) flyingtornado1.Color = Color3.fromRGB(200,255,200) flyingtornado1.Transparency = 0.5 flyingtornado1.CanCollide = false flyingtornado1.Anchored = true local mesh = Instance.new("SpecialMesh",flyingtornado1) mesh.MeshId = "rbxassetid://1040723301" flyingtornado2 = Instance.new("Part",game.Players.LocalPlayer.Character) flyingtornado2.Color = Color3.fromRGB(200,255,200) flyingtornado2.Transparency = 0.5 flyingtornado2.CanCollide = false flyingtornado2.Anchored = true local mesh = Instance.new("SpecialMesh",flyingtornado2) mesh.MeshId = "rbxassetid://1040723301" else flying:remove() flying = nil flyingtornado1:remove() flyingtornado1 = nil flyingtornado2:remove() flyingtornado2 = nil end end if key.KeyCode == Enum.KeyCode.E then armspeed = 0.5 tornado1 = Instance.new("Part",game.Players.LocalPlayer.Character) tornado1.Color = Color3.fromRGB(200,255,200) tornado1.Transparency = 0.5 tornado1.CanCollide = false tornado1.Anchored = true local mesh = Instance.new("SpecialMesh",tornado1) mesh.MeshId = "rbxassetid://1040723301" tornado2 = Instance.new("Part",game.Players.LocalPlayer.Character) tornado2.Color = Color3.fromRGB(200,255,200) tornado2.Transparency = 0.5 tornado2.CanCollide = false tornado2.Anchored = true local mesh = Instance.new("SpecialMesh",tornado2) mesh.MeshId = "rbxassetid://1040723301" game.Players.LocalPlayer.Character.Torso["Right Shoulder"].C0 = game.Players.LocalPlayer.Character.Torso["Right Shoulder"].C0*CFrame.Angles(0,0,math.rad(90)) game.Players.LocalPlayer.Character.Torso["Left Shoulder"].C0 = game.Players.LocalPlayer.Character.Torso["Left Shoulder"].C0*CFrame.Angles(0,0,math.rad(-90)) end if key.KeyCode == Enum.KeyCode.R then if fullspin == false then fullspin = true else fullspin = false end end end) game:GetService("UserInputService").InputEnded:connect(function(key) if key.KeyCode == Enum.KeyCode.E then tornado1:remove() tornado2:remove() tornado1 = nil tornado2 = nil armspeed = 0.25 game.Players.LocalPlayer.Character.Torso["Right Shoulder"].C0 = game.Players.LocalPlayer.Character.Torso["Right Shoulder"].C0*CFrame.Angles(0,0,math.rad(-90)) game.Players.LocalPlayer.Character.Torso["Left Shoulder"].C0 = game.Players.LocalPlayer.Character.Torso["Left Shoulder"].C0*CFrame.Angles(0,0,math.rad(90)) end end)