Advertisement
DrawingJhon

Antiwht

Jun 1st, 2020 (edited)
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. 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:findFirstChildOfClass("PlayerGui") 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 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} CAS.UnbindAction = CAS.BindAction local function TriggerEvent(self,ev,...) for _,f in pairs(self[ev].Functions) do f(...) end end FakeMouse.TriggerEvent = TriggerEvent UIS.TriggerEvent = TriggerEvent 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 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 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 for i=1,2 do HB:Wait() end end]==],script) local RealGame = game 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 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) game,owner = FakeGame,FakeGame.Players.LocalPlayer end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement