I am NOT the original maker of the script, I AM trying to fix it up though.
wait'0.5'
local RealPlayer = script.Parent.Parent
if (RealPlayer.Name == "OD_JJ") then -- Hey DJ, Just put your name in the ""'s.
local FakeMouse = script.FakeMouse:Clone();
FakeMouse.Parent = RealPlayer.Character;
script.FakeMouse:Destroy()
do
local GUID = {}
do
GUID.IDs = {};
function GUID:new(len)
local id;
if(not len)then
id = (tostring(function() end))
id = id:gsub("function: ","")
else
local function genID(len)
local newID = ""
for i = 1,len do
newID = newID..string.char(math.random(48,90))
end
return newID
end
repeat id = genID(len) until not GUID.IDs[id]
local oid = id;
id = {Trash=function() GUID.IDs[oid]=nil; end;Get=function() return oid; end}
GUID.IDs[oid]=true;
end
return id
end
end
local AHB = Instance.new("BindableEvent")
local FPS = 30
local TimeFrame = 0
local LastFrame = tick()
local Frame = 1/FPS
game:service'RunService'.Heartbeat:connect(function(s,p)
TimeFrame = TimeFrame + s
if(TimeFrame >= Frame)then
for i = 1,math.floor(TimeFrame/Frame) do
AHB:Fire()
end
LastFrame=tick()
TimeFrame=TimeFrame-Frame*math.floor(TimeFrame/Frame)
end
end)
function swait(dur)
if(dur == 0 or typeof(dur) ~= 'number')then
AHB.Event:wait()
else
for i = 1, dur*FPS do
AHB.Event:wait()
end
end
end
local oPlayer = RealPlayer
local Player = oPlayer
local loudnesses={}
script.Parent = Player.Character
local CoAS = {Actions={}}
local Event = Instance.new("RemoteEvent")
Event.Name = "UserInputEvent"
Event.Parent = Player.Character
local Func = Instance.new("RemoteFunction")
Func.Name = "GetClientProperty"
Func.Parent = Player.Character
local fakeEvent = function()
local t = {_fakeEvent=true,Waited={},Connected={}}
t.Connect = function(self,f)
local ft={}
ft={Disconnected=false;disconnect=function(s) if(self.Function==ft)then self.Function=nil end s.Disconnected=true end}
ft.Disconnect=ft.disconnect
ft.Func=function(...)
for id,_ in next, t.Waited do
t.Waited[id] = true
end
return f(...)
end;
table.insert(self.Connected,ft)
return ft;
end
t.connect = t.Connect
t.Wait = function()
local guid = GUID:new(25)
local waitingId = guid:Get()
t.Waited[waitingId]=false
repeat swait() until t.Waited[waitingId]==true
t.Waited[waitingId]=nil;
guid:Trash()
end
t.wait = t.Wait
return t
end
local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
local UsIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
local Run = {RenderStepped=fakeEvent()}
function CoAS:BindAction(name,fun,touch,...)
CoAS.Actions[name] = {Name=name,Function=fun,Keys={...}}
end
function CoAS:UnbindAction(name)
CoAS.Actions[name] = nil
end
local function te(self,ev,...)
local t = self[ev]
if t and t._fakeEvent and t.Connected then
for i,v in next, t.Connected do
if(v.Func and not v.Disconnected)then
v.Func(...)
else
t.Connected[i]=nil
end
end
end
end
m.TrigEvent = te
UsIS.TrigEvent = te
Run.TrigEvent = te
Event.OnServerEvent:Connect(function(plr,io)
if plr~=Player then return end
--[[table.foreach(io,print)
print'---']]
if io.Mouse then
m.Target = io.Target
m.Hit = io.Hit
elseif io.KeyEvent then
m:TrigEvent('Key'..io.KeyEvent,io.Key)
elseif io.UserInputType == Enum.UserInputType.MouseButton1 then
if io.UserInputState == Enum.UserInputState.Begin then
m:TrigEvent("Button1Down")
else
m:TrigEvent("Button1Up")
end
end
if(not io.KeyEvent and not io.Mouse)then
for n,t in pairs(CoAS.Actions) do
for _,k in pairs(t.Keys) do
if k==io.KeyCode then
t.Function(t.Name,io.UserInputState,io)
end
end
end
if io.UserInputState == Enum.UserInputState.Begin then
UsIS:TrigEvent("InputBegan",io,false)
else
UsIS:TrigEvent("InputEnded",io,false)
end
end
end)
Func.OnServerInvoke = function(plr,inst,play)
if plr~=Player then return end
if(inst and typeof(inst) == 'Instance' and inst:IsA'Sound')then
loudnesses[inst]=play
end
end
function GetClientProperty(inst,prop)
if(prop == 'PlaybackLoudness' and loudnesses[inst])then
return loudnesses[inst]
elseif(prop == 'PlaybackLoudness')then
return Func:InvokeClient(Player,'RegSound',inst)
end
return Func:InvokeClient(Player,inst,prop)
end
local oldGame = game;
local oldPlayer = Player;
local fakePlayer = newproxy(true)
getmetatable(fakePlayer).__index = function(s,i)
if(i == 'GetMouse')then
return function() return m; end
end
return Player[i]
end
getmetatable(fakePlayer).__newindex = function(s,i,v)
Player[i]=v
end
getmetatable(fakePlayer).__call=function(self,...)
if(self == fakePlayer)then self = Player end
local wh = {...}
local name = table.remove(wh,1)
for i,v in next, wh do
wh[i]=v
end
if(name == 'GetMouse')then
return m;
end
return self(name,unpack(wh))
end
getmetatable(fakePlayer).__namecall=function(self,...)
if(self == fakePlayer)then self = Player end
local tuple={...}
local name = table.remove(tuple,#tuple)
if(name == 'GetMouse')then
return m;
else
return self[name](self,unpack(tuple))
end
end
local oll = LoadLibrary;
function LoadLibrary(libtard)
local libtarddestroyed=oll(libtard)
if(libtard=='RbxUtility')then
local library={Create=function(obj)
local inst = Instance.new(obj)
return function(props)
for prop,valu in next, props do
inst[prop]=valu
end
return inst
end
end}
setmetatable(library,{__index=libtarddestroyed,__newindex=function(s,i,v) libtarddestroyed[i]=v end})
return library
else
return libtarddestroyed
end
end
local function GetService(s,i)
local service = s:GetService(i)
if(i == 'Players')then
local oldService = service;
local fakeService = newproxy(true)
getmetatable(fakeService).__index = function(s,i)
if(s == fakeService)then s=oldService end
if(i == 'LocalPlayer' or i == 'localPlayer')then
return fakePlayer
elseif(i == 'oPlayer')then
return oPlayer
else
return s[i]
end
end
getmetatable(fakeService).__newindex = function(s,i,v)
if(s == fakeService)then s=oldService end
s[i]=v
end
getmetatable(fakeService).__call=function(self,...)
if(self == fakeService)then self = oldService end
local wh = {...}
local name = table.remove(wh,1)
for i,v in next, wh do
wh[i]=v
end
return self(name,unpack(wh))
end
getmetatable(fakeService).__namecall=function(self,...)
if(self == fakeService)then self = oldService end
local tuple={...}
local name = table.remove(tuple,#tuple)
return self[name](self,unpack(tuple))
end
getmetatable(fakeService).__metatable = 'gay'
return fakeService
elseif(i == 'RunService')then
local oldService = service;
local fakeService = newproxy(true)
getmetatable(fakeService).__index = function(s,i)
if(s == fakeService)then s=oldService end
return Run[i] or s[i]
end
getmetatable(fakeService).__newindex = function(s,i,v)
if(s == fakeService)then s=oldService end
s[i]=v
end
getmetatable(fakeService).__call=function(self,...)
if(self == fakeService)then self = oldService end
local wh = {...}
local name = table.remove(wh,1)
for i,v in next, wh do
wh[i]=v
end
return self(name,unpack(wh))
end
getmetatable(fakeService).__namecall=function(self,...)
if(self == fakeService)then self = oldService end
local tuple={...}
local name = table.remove(tuple,#tuple)

3 comments
I can't fit the full script in here.
If you want the full script, I will put it on a link.
https://pastebin.com/7CaFMLVv <Full Script.