Run it
Copy the script and paste it into your executor.
= () ()
Logger = {}
Limits = {
BindableEvent = ,
BindableFunction = ,
RemoteFunction = ,
RemoteEvent =
}
vers =
(a)
(a) == ():(a) ():((a))
(a, b)
(b):() ==
b.Name:(, )
(b) == .. (a) (b) == .. (a) (b) == .. (a) (b) == .. (a) (b) .. (a)
BootlegDebug = {}
Output =
BootlegDebug.(thread)
CurrentLine = (debug.(thread, ))
Source = debug.(thread, )
name = debug.(thread, )
numparams, isvrg = debug.(thread, )
#name == name =
a, b = debug.(thread, )
{
[] = CurrentLine,
[] = Source,
[] = (name),
[] = (numparams),
[] = isvrg ,
[] = (Source:(, ))
}
(instance)
p = instance
lo = {}
(p ~= p.Parent ~= )
.(lo, p)
p = p.Parent
fullName
#lo ==
lo[#lo].ClassName ~=
fullName = .. lo[#lo].ClassName ..
fullName =
i = #lo - , , -
fullName = fullName .. .. lo[i].Name ..
fullName
(tbl, indent, equal, meta)
meta = meta
indent = indent
result = ( equal .(, indent) ) ..
equal =
(tbl) ~= (tbl, indent)
_AM =
key, value (tbl)
_AM = _AM +
(value) ==
(value)
result = result .. .(, indent) .. .. (meta ~= (meta) ) .. .. ((value), indent, , meta+)
meta = meta +
result = result .. .. ( equal .(, indent + ) ) .. (key) .. (value, indent + , , meta)
result = result .. .. ( equal .(, indent + ) ) .. (key) .. (value, indent + , (key, value)) ..
_AM > (result .. .. .(, indent) .. )
(data, indent, identifier)
dataType = (data)
constructors = {
[] = (data) .. data .. ,
[] = (data) (data, indent indent + , identifier ) ,
[] = (data) .(, BootlegDebug.(data).numparams) ,
[] = (data) (data) ,
[] = (data) .(, data.X, data.Y, data.Z) ,
[] = (data) .(, data.X, data.Y) ,
[] = (data) .(, data.Scale, data.Offset) ,
[] = (data) .(, data.X.Scale, data.X.Offset, data.Y.Scale, data.Y.Offset) ,
[] = (data) components = {data:()} .(, .(components, )) ,
[] = (data) .(, .(data.R * ), .(data.G * ), .(data.B * )) ,
[] = (data) .(, (data)) ,
[] = (data) .(, (data)) ,
[] = (data) .(, (data)) ,
[] = (data) ():((data)) ,
[] = (data) .(, indent) .. ():(buffer.(data)) ,
[] = (data) (data)
}
constructors[dataType]
constructors[dataType](data)
((data)) .. .. (data) ..
()
Events = {}
i, v (:())
v:() v:()
v:(:()) v:(:().LocalPlayer)
.(Events, v)
v:(:())
.(Events, v)
Events
()
Events = {}
i, v (:())
v:()
v:(:()) v:(:().LocalPlayer)
.(Events, v)
v:(:())
.(Events, v)
Events
()
Funcs = {}
i, v (:())
v:()
v:(:()) v:(:().LocalPlayer)
.(Funcs, v)
v:(:())
.(Funcs, v)
Funcs
()
Funcs = {}
i, v (:())
v:()
v:(:()) v:(:().LocalPlayer)
.(Funcs, v)
v:(:())
.(Funcs, v)
Funcs
(Event)
Logger[Event] =
Event.OnClientEvent:((...)
Logger[Event] > Limits[Event.ClassName]
Logger[Event] = Logger[Event] +
StrArgs = ({...})
FullData = .(, vers, Event.ClassName, StrArgs, (Event), :().LocalPlayer.Name)
(FullData)
.(, ()
Logger[Event] = Logger[Event] -
)
)
(Event)
Logger[Event] =
Event.Event:((...)
Logger[Event] > Limits[Event.ClassName]
Logger[Event] = Logger[Event] +
StrArgs = ({...})
FullData = .(, vers, Event.ClassName, StrArgs, (Event), :().LocalPlayer.Name)
.(, ()
Logger[Event] = Logger[Event] -
)
(FullData)
)
(Func)
Logger[Func] =
Func.OnClientInvoke = (...)
Logger[Func] > Limits[Func.ClassName]
Logger[Func] = Logger[Func] +
StrArgs = ({...})
FullData = .(, vers, Func.ClassName, StrArgs, (Func), :().LocalPlayer.Name)
(FullData)
.(, ()
Logger[Func] = Logger[Func] -
)
(Func)
Logger[Func] =
Func.OnInvoke = (...)
Logger[Func] > Limits[Func.ClassName]
Logger[Func] = Logger[Func] +
StrArgs = ({...})
FullData = .(, vers, Func.ClassName, StrArgs, (Func))
(FullData)
.(, ()
Logger[Func] = Logger[Func] -
)
a, b, c, d = (), (), (), ()
_, v (a)
(v)
_, v (b)
(v)
_, v (c)
(v)
_, v (d)
(v)
()BootSpy (Bootleg Spy) is open source. Credits: @zeroxx987 for the idea, He made a similar script for the server, Here's the url: https://scriptblox.com/script/Universal-Script-Remote-Spy-12957 Note: To copy when an event happens of any sort, You can change the local Output = print to local Output = setclipboard or local Output = toclipboard Release Version: Log EVERY Client event What i mean is, Whenever the server calls RemoteEvent:FireClient, BindableEvent:Fire, RemoteFunction:InvokeClient, BindableFunction:Invoke This script will log that! This is just a worse version of simplespy, for executors with no hookmetamethod or hook function support, This doesnt do the same thing but it works for the client.