Cheat - GG Remote Spy
Cheat - GG Remote Spy
spawn(function()
local cGui = game:GetService'CoreGui';
local consoleUI = cGui:FindFirstChild('DevConsoleMaster') or
cGui:WaitForChild('DevConsoleMaster');
local clientLog = consoleUI:FindFirstChild('ClientLog', true);
if not clientLog then
repeat wait()
until consoleUI:FindFirstChild('ClientLog', true);
clientLog = consoleUI:FindFirstChild('ClientLog', true);
end;
for i,v in next, clientLog:GetChildren() do
if v:FindFirstChild'msg' then
v.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
then
setclipboard(v.msg.Text);
end;
end);
end;
end;
clientLog.ChildAdded:Connect(function(obj)
if not obj:FindFirstChild'msg' then obj:WaitForChild'msg'; end;
obj.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
setclipboard(obj.msg.Text);
end;
end);
end);
end);
local enabled = {
BindableEvent = false,
BindableFunction = false,
RemoteEvent = true,
RemoteFunction = true
}
local ignore = {
--[[ -- I'd personally recommend keeping this commented out, as game scripts
can name their remotes these
GetSetting = true,
GetSelection = true,
SelectionChanged = true,
GetAwaiting = true
--]]
}
local Globals = {
CFrame = 'CFrame.new(-)';
Vector3 = 'Vector3.new(-)';
Vector2 = 'Vector2.new(-)';
UDim2 = 'UDim2.new(-)';
Axis = 'Axis.new(-)';
BrickColor = 'BrickColor.new(-)';
Color3 = 'Color3.new(-)';
ColorSequence = 'ColorSequence.new(-)';
Region3 = 'Region3.new(-)';
TweenInfo = 'TweenInfo.new(-)';
NumberSequence = 'NumberSequence.new(-)';
Random = 'Random.new(-)';
NumberRange = 'NumberRange.new(-)';
Axis = 'Axis.new(-)';
};
local PrintTable
local function ParseObject(object, spacing, scope, checkedTables, keyBool)
spacing = keyBool and spacing .. '[' or spacing;
local objectType = type(object)
if Globals[typeof(object)] then
return spacing .. Globals[typeof(object)]:gsub('-', tostring(object));
elseif typeof(object) == 'Instance' then
return spacing .. object:GetFullName();
elseif objectType == "string" then
return spacing .. string.format("%q", object)
elseif objectType == "nil" then
return spacing .. "nil"
elseif objectType == "table" then
if checkedTables[object] then
return spacing .. tostring(object) .. " [recursive table]"
else
checkedTables[object] = true
return spacing .. PrintTable(object, scope + 1, checkedTables)
end
elseif objectType == "userdata" then
if typeof(object) == "userdata" then
return spacing .. "userdata"
else
return spacing .. tostring(object)
end
else -- userdata, function, boolean, thread, number
return spacing .. tostring(object)
end
end
function PrintTable(t, scope, checkedTables)
local mt = getrawmetatable(t)
local backup = {}
if mt and mt ~= t then
for i, v in pairs(mt) do
rawset(backup, i, v)
rawset(mt, i, nil)
end
end
checkedTables = checkedTables or {}
scope = scope or 1
local result = (checkedTables and "{" or "") .. "\n"
local spacing = string.rep(" ", scope)
local function parse(index, value)
result = result .. ParseObject(index, spacing, scope, checkedTables,
true) .. "] = " .. ParseObject(value, "", scope, checkedTables) .. "\n"
end
if CountTable(t) ~= #t then
table.foreach(t, parse) -- I'm very aware this is a deprecated function
else
for index = 1, select("#", unpack(t)) do
parse(index, t[index])
end
end
if mt and mt ~= t then
for i, v in pairs(mt) do
rawset(mt, rawget(backup, i), v)
end
end
local methods = {
BindableEvent = "Fire",
BindableFunction = "Invoke",
RemoteEvent = "FireServer",
RemoteFunction = "InvokeServer"
}
LocalizedRemoteCallback = newcclosure(LocalizedRemoteCallback)
return true;
end
function metatable:__namecall(...)
local arguments = {...}
local index = LuaU and getnamecallmethod() or table.remove(arguments)
if IsAuthorized(self, index) then
return RemoteCallback(self, unpack(arguments))
end
return __namecall(self, ...)
end
metatable.__namecall = newcclosure(metatable.__namecall)