A lightweight, lag-free Remote Spy script for Roblox:
local oldNamecall
oldNamecall = hookmetamethod(game, '__namecall', function(self, ...)
local method = getnamecallmethod()
local args = { ... }
if method == 'FireServer' and self:IsA('RemoteEvent') then
print('[REMOTEEVENT FIRED]:', self:GetFullName())
for i, v in ipairs(args) do
print(' Arg[' .. i .. ']:', type(v), v)
end
elseif method == 'InvokeServer' and self:IsA('RemoteFunction') then
print('[REMOTEFUNCTION INVOKED]:', self:GetFullName())
end
return oldNamecall(self, ...)
end)