roblox remote spy --[[ SimpleSpy v0.8 SOURCE Credits: Not By Me You can make script FE with it ]] ---- GENERATED BY GUI to LUA ---- local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") roblox remote spy How to use it? roblox remote spy local ScreenGui = Instance.new("ScreenGui") local main = Instance.new("Frame") local topbar = Instance.new("Frame") local minimize = Instance.new("TextButton") local titleLabel = Instance.new("TextLabel") local remotes = Instance.new("ScrollingFrame") local UIListLayout = Instance.new("UIListLayout") local eTemplate = Instance.new("TextButton") local icon = Instance.new("ImageLabel") local name = Instance.new("TextLabel") roblox remote spy PasteShr roblox remote spy local fTemplate = Instance.new("TextButton") local icon_2 = Instance.new("ImageLabel") local name_2 = Instance.new("TextLabel") local properties = Instance.new("Frame") local codeframe = Instance.new("ScrollingFrame") codebox = Instance.new("TextBox") local propertyframe = Instance.new("ScrollingFrame") local UIListLayout_2 = Instance.new("UIListLayout") local property = Instance.new("Frame") local name_3 = Instance.new("TextLabel") roblox remote spy How to use it? roblox remote spy local property_2 = Instance.new("TextButton") local methodToggle = Instance.new("TextButton") --Properties: ScreenGui.ResetOnSpawn = false ScreenGui.DisplayOrder = 999999999 ScreenGui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui") ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling roblox remote spy How to get it for free? roblox remote spy main.Name = "main" main.Parent = ScreenGui main.BackgroundColor3 = Color3.new(0.219608, 0.219608, 0.219608) main.BorderSizePixel = 0 main.Position = UDim2.new(0, 100, 0, 100) main.Size = UDim2.new(0.5, 0, 0.5, 0) topbar.Name = "topbar" topbar.Parent = main topbar.BorderSizePixel = 0 roblox remote spy How to get it? roblox remote spy topbar.BackgroundColor3 = Color3.new(0.121569, 0.121569, 0.121569) topbar.Size = UDim2.new(1, 0, 0, 18) minimize.Name = "minimize" minimize.Parent = topbar minimize.BackgroundColor3 = Color3.new(0, 0.105882, 0.792157) minimize.BorderSizePixel = 0 minimize.Position = UDim2.new(0, 0, 0, 0) minimize.Size = UDim2.new(0, 18, 0, 18) minimize.Font = Enum.Font.SourceSans roblox remote spy PasteShr roblox remote spy minimize.Text = "" minimize.TextColor3 = Color3.new(0, 0, 0) minimize.TextSize = 14 titleLabel.Parent = topbar titleLabel.BackgroundColor3 = Color3.new(1, 1, 1) titleLabel.BackgroundTransparency = 1 titleLabel.BorderSizePixel = 0 titleLabel.Position = UDim2.new(0.25, 0, 0, 0) titleLabel.Size = UDim2.new(0.5, 0, 1, 0) roblox remote spy How to dowload it? roblox remote spy titleLabel.Font = Enum.Font.SourceSansBold titleLabel.Text = "SimpleSpy v0.8 | exxtremewa#9394" titleLabel.TextColor3 = Color3.new(0.905882, 0.905882, 0.905882) titleLabel.TextSize = 14 remotes.Name = "remotes" remotes.Parent = main remotes.BackgroundColor3 = Color3.new(1, 1, 1) remotes.BackgroundTransparency = 1 remotes.BorderSizePixel = 0 roblox remote spy How to dowload it? roblox remote spy remotes.Position = UDim2.new(0, 0, 0, 18) remotes.Size = UDim2.new(0.5, 0, 1, -18) remotes.BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" remotes.ScrollBarThickness = 10 remotes.TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" UIListLayout.Parent = remotes UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder eTemplate.Name = "eTemplate" roblox remote spy PasteShr roblox remote spy eTemplate.Text = "" eTemplate.Parent = remotes eTemplate.BackgroundColor3 = Color3.new(0.219608, 0.219608, 0.219608) eTemplate.BorderColor3 = Color3.new(0.8, 0.8, 0.8) eTemplate.BorderSizePixel = 1 eTemplate.Size = UDim2.new(1, -10, 0, 20) eTemplate.BorderMode = Enum.BorderMode.Inset icon.Name = "icon" icon.Parent = eTemplate roblox remote spy How to use it? roblox remote spy icon.BackgroundColor3 = Color3.new(1, 1, 1) icon.BackgroundTransparency = 1 icon.BorderSizePixel = 0 icon.Size = UDim2.new(0, 18, 0, 18) icon.Position = UDim2.new(0, 2, 0, 2) icon.Image = "http://www.roblox.com/asset/?id=4640035463" icon.ScaleType = Enum.ScaleType.Fit name.Name = "name" name.Parent = eTemplate roblox remote spy How to get it? roblox remote spy name.BackgroundColor3 = Color3.new(1, 1, 1) name.BackgroundTransparency = 1 name.Position = UDim2.new(0, 25, 0, 0) name.Size = UDim2.new(1, -25, 1, 0) name.Font = Enum.Font.SourceSansBold name.Text = "RemoteEventName" name.TextColor3 = Color3.new(0.976471, 0.921569, 0.121569) name.TextSize = 14 name.TextXAlignment = Enum.TextXAlignment.Left roblox remote spy PasteShr roblox remote spy fTemplate.Name = "fTemplate" fTemplate.Text = "" fTemplate.Parent = remotes fTemplate.BackgroundColor3 = Color3.new(0.219608, 0.219608, 0.219608) fTemplate.BorderColor3 = Color3.new(0.8, 0.8, 0.8) fTemplate.BorderSizePixel = 1 fTemplate.Size = UDim2.new(1, -10, 0, 20) fTemplate.BorderMode = Enum.BorderMode.Inset icon_2.Name = "icon" roblox remote spy How to get it? roblox remote spy icon_2.Parent = fTemplate icon_2.BackgroundColor3 = Color3.new(1, 1, 1) icon_2.BackgroundTransparency = 1 icon_2.BorderSizePixel = 0 icon_2.Size = UDim2.new(0, 18, 0, 18) icon_2.Position = UDim2.new(0, 2, 0, 2) icon_2.Image = "http://www.roblox.com/asset/?id=4640035282" icon_2.ScaleType = Enum.ScaleType.Fit name_2.Name = "name" roblox remote spy How to dowload it? roblox remote spy name_2.Parent = fTemplate name_2.BackgroundColor3 = Color3.new(1, 1, 1) name_2.BackgroundTransparency = 1 name_2.Position = UDim2.new(0, 25, 0, 0) name_2.Size = UDim2.new(1, -25, 1, 0) name_2.Font = Enum.Font.SourceSansBold name_2.Text = "RemoteFunctionName" name_2.TextColor3 = Color3.new(0.666667, 0.12549, 1) name_2.TextSize = 14 name_2.TextXAlignment = Enum.TextXAlignment.Left roblox remote spy How to get it? roblox remote spy properties.Name = "properties" properties.Parent = main properties.BackgroundColor3 = Color3.new(1, 1, 1) properties.BackgroundTransparency = 1 properties.Position = UDim2.new(0.5, 0, 0, 18) properties.Size = UDim2.new(0.5, 0, 1, -18) codeframe.Name = "codeframe" codeframe.Parent = properties roblox remote spy How to get it? roblox remote spy codeframe.BackgroundColor3 = Color3.new(1, 1, 1) codeframe.BackgroundTransparency = 1 codeframe.Size = UDim2.new(1, 0, 0.5, 0) codeframe.BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" codeframe.ScrollBarThickness = 10 codeframe.TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" codebox.Name = "codebox" codebox.Parent = codeframe codebox.BackgroundColor3 = Color3.new(0.0784314, 0.0784314, 0.0784314) roblox remote spy How to use it? roblox remote spy codebox.BorderSizePixel = 0 codebox.Selectable = true codebox.Size = UDim2.new(1, -10, 1, 0) codebox.Font = Enum.Font.SourceSansSemibold codebox.Text = "{\\n [1] = true\\n}" codebox.TextColor3 = Color3.new(0.827451, 0.827451, 0.827451) codebox.TextSize = 14 codebox.TextXAlignment = Enum.TextXAlignment.Left codebox.TextYAlignment = Enum.TextYAlignment.Top codebox.ClearTextOnFocus = false roblox remote spy How to get it for free? roblox remote spy propertyframe.Name = "propertyframe" propertyframe.Parent = properties propertyframe.BackgroundColor3 = Color3.new(0.141176, 0.141176, 0.141176) propertyframe.BorderSizePixel = 0 propertyframe.Position = UDim2.new(0, 0, 0.5, 0) propertyframe.Size = UDim2.new(1, 0, 0.5, 0) propertyframe.BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" propertyframe.ScrollBarThickness = 10 propertyframe.TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png" roblox remote spy How to use it? roblox remote spy UIListLayout_2.Parent = propertyframe UIListLayout_2.SortOrder = Enum.SortOrder.LayoutOrder property.Name = "property" property.Parent = propertyframe property.BackgroundColor3 = Color3.new(0.164706, 0.164706, 0.164706) property.BorderColor3 = Color3.new(0.415686, 0.415686, 0.415686) property.BorderSizePixel = 0 property.Size = UDim2.new(1, -10, 0, 15) roblox remote spy How to get it for free? roblox remote spy name_3.Name = "name" name_3.Parent = property name_3.BackgroundColor3 = Color3.new(0.164706, 0.164706, 0.164706) name_3.BorderColor3 = Color3.new(0.478431, 0.478431, 0.478431) name_3.Size = UDim2.new(0.400000006, 0, 1, 0) name_3.Font = Enum.Font.SourceSans name_3.Text = "Name" name_3.TextColor3 = Color3.new(0.909804, 0.909804, 0.909804) name_3.TextSize = 14 roblox remote spy How to use it? roblox remote spy name_3.TextXAlignment = Enum.TextXAlignment.Left property_2.Name = "property" property_2.Parent = property property_2.BackgroundColor3 = Color3.new(0.0941177, 0.0941177, 0.0941177) property_2.BorderColor3 = Color3.new(0.478431, 0.478431, 0.478431) property_2.Position = UDim2.new(0.300000012, 0, 0, 0) property_2.Size = UDim2.new(0.699999988, 0, 1, 0) property_2.Font = Enum.Font.SourceSans property_2.Text = "Function" roblox remote spy How to get it? roblox remote spy property_2.TextColor3 = Color3.new(0.909804, 0.909804, 0.909804) property_2.TextSize = 14 property_2.TextXAlignment = Enum.TextXAlignment.Left methodToggle.Name = "MethodToggle" methodToggle.Parent = topbar methodToggle.BackgroundColor3 = Color3.new(0.7450980392156863, 0.7450980392156863, 0.7450980392156863) methodToggle.BorderSizePixel = 0 methodToggle.Position = UDim2.new(1, -80, 0, 0) methodToggle.Size = UDim2.new(0, 80, 1, 0) roblox remote spy How to get it for free? roblox remote spy methodToggle.TextScaled = true methodToggle.Font = Enum.Font.SourceSans ------------------------------------------------------------------------------- -- init local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local ContentProvider = game:GetService("ContentProvider") roblox remote spy How to dowload it? roblox remote spy --- UDim2 size of `main` while minimized local minSize = UDim2.new(0, 100, 0, 15) --- UDim2 size of `main` while expanded local mainSize = main.Size local selectedColor = Color3.new(0.321569, 0.333333, 1) local deselectedColor = Color3.new(0.8, 0.8, 0.8) --- So things are descending local layoutOrderNum = 999999999 --- Whether or not the gui is closed (defaults to false) closed = false roblox remote spy PasteShr roblox remote spy --- The event logs to be read from logs = {} --- The event currently selected.Log (defaults to nil) selected = nil --- The blacklist (can be a string name or the Remote Instance) blacklist = {} --- The block list (can be a string name or the Remote Instance) blocklist = {} --- Whether or not to add getNil function local getNil = false roblox remote spy PasteShr roblox remote spy --- Array of remotes (and original functions) connected to local connectedRemotes = {} --- True = hookfunction, false = namecall local toggle = false local gm = getrawmetatable(game) local original = gm.__namecall setreadonly(gm, false) --- This event is the main handler for remotes local remoteHandlerEvent = Instance.new("BindableEvent") roblox remote spy PasteShr roblox remote spy -- functions --- Toggles the remote spy method (when button clicked) function onToggleButtonClick() if toggle then methodToggle.Text = "Disabled" else methodToggle.Text = "Enabled" end toggleSpyMethod() roblox remote spy How to get it? roblox remote spy end --- Drags gui (so long as mouse is held down) function onBarInput(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then local lastPos = UserInputService:GetMouseLocation() RunService:BindToRenderStep( "drag", 1, function() roblox remote spy PasteShr roblox remote spy local newPos = UserInputService:GetMouseLocation() if newPos ~= lastPos then main.Position = UDim2.new( 0, main.Position.X.Offset + (newPos - lastPos).X, 0, main.Position.Y.Offset + (newPos - lastPos).Y ) lastPos = newPos roblox remote spy How to get it for free? roblox remote spy end end ) topbar.InputEnded:Connect( function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then RunService:UnbindFromRenderStep("drag") end end ) roblox remote spy How to get it for free? roblox remote spy end end --- Expands and minimizes the gui (closed is the toggle boolean) function toggleMinimize() if not closed then closed = not closed remotes.Visible = false properties.Visible = false titleLabel.Visible = false roblox remote spy How to dowload it? roblox remote spy methodToggle.Visible = false TweenService:Create(main, TweenInfo.new(0.5), {Size = minSize}):Play() else closed = not closed TweenService:Create(main, TweenInfo.new(0.5), {Size = mainSize}):Play() wait(0.5) methodToggle.Visible = true remotes.Visible = true properties.Visible = true titleLabel.Visible = true roblox remote spy How to get it for free? roblox remote spy end end --- Checks if the given Remote is blacklisted; returns true if blacklisted, false if not function blacklisted(remote) if #blacklist > 0 then for _, v in pairs(blacklist) do if type(v) == "string" and v == remote.Name then return true elseif typeof(v) == "Instance" and v == remote then roblox remote spy How to get it? roblox remote spy return true end end end return false end --- Checks if the given Remote is blocked; returns true if blacklisted, false if not function blocked(remote) if #blocklist > 0 then roblox remote spy How to dowload it? roblox remote spy for _, v in pairs(blocklist) do if type(v) == "string" and v == remote.Name then return true elseif typeof(v) == "Instance" and v == remote then return true end end end return false end roblox remote spy How to dowload it? roblox remote spy --- Runs on MouseButton1Click of an event frame function eventSelect(frame) if --[[input.UserInputType == Enum.UserInputType.MouseButton1 and]] (not selected or selected.Log ~= frame) then if selected then TweenService:Create(selected.Log, TweenInfo.new(0.5), {BorderColor3 = deselectedColor, BorderSizePixel = 1}):Play( ) selected = nil end roblox remote spy PasteShr roblox remote spy for _, v in pairs(logs) do if frame == v.Log then selected = v end end if selected then TweenService:Create(selected.Log, TweenInfo.new(0.5), {BorderColor3 = selectedColor, BorderSizePixel = 2}):Play( ) codebox.Text = selected.GenScript roblox remote spy PasteShr roblox remote spy end end end --- Creates new function button (below codebox) function newButton(name, defaultName, onClick) local button = property:Clone() button.name.Text = name button.property.Text = defaultName button.property.MouseButton1Click:Connect( roblox remote spy How to use it? roblox remote spy function(...) if selected then onClick(button.property, ...) end end ) button.Parent = propertyframe end --- Adds new RemoteEvent to logs roblox remote spy How to use it? roblox remote spy function newEvent(name, gen_script, remote, source_script, blocked, upvalues, constants, num) local remoteFrame = eTemplate:Clone() remoteFrame.name.Text = name local id = Instance.new("IntValue") id.Name = "ID" id.Value = #logs + 1 id.Parent = remoteFrame logs[#logs + 1] = { Name = name, GenScript = gen_script, roblox remote spy How to get it? roblox remote spy Source = source_script, Remote = remote, Log = remoteFrame, Upvalues = upvalues, Constants = constants, Blocked = blocked, FunNum = num } if blocked then logs[#logs].GenScript = "-- THIS REMOTE WAS PREVENTED FROM FIRING THE SERVER BY SIMPLESPY\n\n" .. logs[#logs].GenScript roblox remote spy How to get it? roblox remote spy end remoteFrame.MouseButton1Click:Connect( function(...) eventSelect(remoteFrame, ...) end ) if layoutOrderNum < 1 then layoutOrderNum = 999999999 end remoteFrame.LayoutOrder = layoutOrderNum roblox remote spy How to get it? roblox remote spy layoutOrderNum = layoutOrderNum - 1 remoteFrame.Parent = remotes end --- Adds new RemoteFunction to logs function newFunction(name, gen_script, remote, source_script, blocked, upvalues, constants, num) local remoteFrame = fTemplate:Clone() remoteFrame.name.Text = name local id = Instance.new("IntValue") id.Name = "ID" roblox remote spy How to dowload it? roblox remote spy id.Value = #logs + 1 id.Parent = remoteFrame logs[#logs + 1] = { Name = name, GenScript = gen_script, Source = source_script, Remote = remote, Log = remoteFrame, Upvalues = upvalues, Constants = constants, roblox remote spy PasteShr roblox remote spy Blocked = blocked, FunNum = num } if blocked then logs[#logs].GenScript = "-- THIS REMOTE WAS PREVENTED FROM FIRING THE SERVER BY SIMPLESPY\n\n" .. logs[#logs].GenScript end remoteFrame.MouseButton1Click:Connect( function(...) eventSelect(remoteFrame, ...) end roblox remote spy How to dowload it? roblox remote spy ) if layoutOrderNum < 1 then layoutOrderNum = 999999999 end remoteFrame.LayoutOrder = layoutOrderNum layoutOrderNum = layoutOrderNum - 1 remoteFrame.Parent = remotes end --- Generates a script from the provided arguments (first has to be remote path) roblox remote spy PasteShr roblox remote spy function genScript(remote, ...) local gen = "" local args = {...} if #args > 0 then if not pcall( function() gen = gen .. "local args = " .. tableToString(args) .. "\n\n" end ) roblox remote spy PasteShr roblox remote spy then gen = gen .. "-- TableToString failure! Reverting to legacy functionality (results may vary)\nlocal args = {" if not pcall( function() for i, v in pairs(args) do if type(i) ~= "Instance" and type(i) ~= "userdata" then gen = gen .. "\n [" .. tostring(i) .. "] = " elseif type(i) == "string" then roblox remote spy PasteShr roblox remote spy gen = gen .. '\n ["' .. tostring(i) .. '"] = ' elseif type(i) == "userdata" and typeof(i) ~= "Instance" then gen = gen .. "\n [" .. typeof(i) .. ".new(" .. tostring(i) .. ")] = " elseif type(i) == "userdata" then gen = gen .. "\n [game." .. i:GetFullName() .. ")] = " end if type(v) ~= "Instance" and type(v) ~= "userdata" then gen = gen .. tostring(v) elseif type(v) == "string" then gen = gen .. '"' .. tostring(v) .. '"' roblox remote spy How to dowload it? roblox remote spy elseif type(v) == "userdata" and typeof(v) ~= "Instance" then gen = gen .. typeof(v) .. ".new(" .. tostring(v) .. ")" elseif type(v) == "userdata" then gen = gen .. "game." .. v:GetFullName() end end gen = gen .. "\n}\n\n" end ) then roblox remote spy PasteShr roblox remote spy gen = gen .. "}\n-- Legacy tableToString failure! Unable to decompile." end end if remote:IsA("RemoteEvent") then gen = gen .. typeToString(remote) .. ":FireServer(unpack(args))" elseif remote:IsA("RemoteFunction") then gen = gen .. typeToString(remote) .. ":InvokeServer(unpack(args))" end else if remote:IsA("RemoteEvent") then roblox remote spy PasteShr roblox remote spy gen = gen .. typeToString(remote) .. ":FireServer()" elseif remote:IsA("RemoteFunction") then gen = gen .. typeToString(remote) .. ":InvokeServer()" end end if getNil then gen = "function getNil(name,class) for _,v in pairs(getnilinstances())do if v.ClassName==class and v.Name==name then return v;end end end\n\n" .. gen getNil = false roblox remote spy PasteShr roblox remote spy end gen = "-- Script generated by SimpleSpy - credits to exxtremewa#9394\n-- This generator is IN DEVELOPMENT, not compatible with all types/classes yet\n\n" .. gen return gen end --- Generates spaces based on the provided level function space(level) local out = "" roblox remote spy How to use it? roblox remote spy for i = 1, level do out = out .. " " end return out end --- Adds \'s to the text as a replacement to whitespace chars and other things function getSpecials(s, nested) if not nested then s = s:gsub("\\", "\\\\") roblox remote spy How to get it? roblox remote spy end if s:match("\n") then local pos, pos2 = s:find("\n") s = s:sub(0, pos - 1) .. "\\n" .. s:sub(pos2 + 1, s:len()) return getSpecials(s, true) elseif s:match("\t") then local pos, pos2 = s:find("\t") s = s:sub(0, pos - 1) .. "\\t" .. s:sub(pos2 + 1, s:len()) return getSpecials(s, true) elseif s:match("\t") then roblox remote spy How to dowload it? roblox remote spy local pos, pos2 = s:find("\t") s = s:sub(0, pos - 1) .. "\\t" .. s:sub(pos2 + 1, s:len()) return getSpecials(s, true) elseif s:match("\"") and (s:sub(s:find("\"") - 1, s:find("\"") - 1) ~= "\\") then local pos, pos2 = s:find("\"") s = s:sub(0, pos - 1) .. "\\\"" .. s:sub(pos2 + 1, s:len()) return getSpecials(s, true) elseif s:match("'") and (s:sub(s:find("'") - 1, s:find("'") - 1) ~= "\\") then local pos, pos2 = s:find("'") s = s:sub(0, pos - 1) .. "\\'" .. s:sub(pos2 + 1, s:len()) roblox remote spy How to use it? roblox remote spy return getSpecials(s, true) else return s end end --- Converts a var to a string (including userdata) function typeToString(var, level) if not level then level = 4 roblox remote spy How to use it? roblox remote spy end local out = "" if type(var) ~= "userdata" and type(var) ~= "table" and type(var) ~= "string" then -- Number, booleans out = out .. tostring(var) elseif type(var) == "string" then -- Strings out = out .. '"' .. getSpecials(var) .. '"' elseif type(var) == "table" then -- Tables roblox remote spy How to get it? roblox remote spy out = out .. tableToString(var, level) elseif typeof(var) == "TweenInfo" then -- TweenInfo out = out .. "TweenInfo.new(" .. tostring(var.Time) .. ", Enum.EasingStyle." .. tostring(var.EasingStyle) .. ", Enum.EasingDirection." .. roblox remote spy How to get it? roblox remote spy tostring(var.EasingDirection) .. ", " .. tostring(var.RepeatCount) .. ", " .. tostring(var.Reverses) .. ", " .. tostring(var.DelayTime) .. ")" elseif typeof(var) == "Ray" then -- Ray out = out .. "Ray.new(Vector3.new(" .. tostring(var.Origin) .. "), Vector3.new(" .. tostring(var.Direction) .. "))" elseif typeof(var) == "NumberSequence" then roblox remote spy How to get it? roblox remote spy -- NumberSequence out = out .. "NumberSequence.new(" for i, v in pairs(var.KeyPoints) do out = out .. tostring(v) if i < #var.Keypoints then out = out .. ", " end end out = out .. ")" elseif typeof(var) == "DockWidgetPluginGuiInfo" then roblox remote spy How to get it? roblox remote spy -- DockWidgetPluginGuiInfo out = out .. "DockWidgetPluginGuiInfo.new(Enum.InitialDockState" .. tostring(var) .. ")" elseif typeof(var) == "ColorSequence" then -- ColorSequence out = out .. "ColorSequence.new(" for i, v in pairs(var.KeyPoints) do out = out .. "Color3.new(" .. tostring(v) .. ")" if i < #var.Keypoints then out = out .. ", " end roblox remote spy How to use it? roblox remote spy end out = out .. ")" elseif typeof(var) == "BrickColor" then -- BrickColor out = out .. "BrickColor.new(" .. tostring(var.Number) .. ")" elseif typeof(var) == "NumberRange" then -- NumberRange out = out .. "NumberRange.new(" .. tostring(var.Min) .. ", " .. tostring(var.Max) .. ")" elseif typeof(var) == "Region3" then -- Region3 roblox remote spy How to use it? roblox remote spy local center = var.CFrame.Position local size = var.CFrame.Size local vector1 = center - size / 2 local vector2 = center + size / 2 out = out .. "Region3.new(Vector3.new(" .. tostring(vector1) .. "), Vector3.new(" .. tostring(vector2) .. ")" elseif type(var) == "userdata" and typeof(var) ~= "Instance" then -- Default userdata (no instances) local dataName = typeof(var) local args = tostring(var) for i = 1, args:len() do roblox remote spy How to get it for free? roblox remote spy if args:sub(i, i) == "}" or args:sub(i, i) == "{" then if i > 1 and i < args:len() then args = args:sub(1, i - 1) .. " " .. args:sub(i + 1, args:len()) elseif i == 1 then args = " " .. args:sub(i + 1, args:len()) elseif i == args:len() then args = args:sub(1, i - 1) .. " " end end end roblox remote spy How to get it? roblox remote spy out = out .. dataName .. ".new(" .. args .. ")" elseif type(var) == "userdata" and typeof(var) == "Instance" then -- Instances local parent = var if parent == nil then out = "nil" elseif parent ~= game then while true do if parent and parent.Parent == game then if game:GetService(parent.ClassName) then roblox remote spy How to dowload it? roblox remote spy if parent.ClassName == "Workspace" then out = "workspace" .. out else out = 'game:GetService("' .. parent.ClassName .. '")' .. out end break else out = 'game["' .. getSpecials(parent.Name) .. '"]' break end roblox remote spy How to get it for free? roblox remote spy elseif parent.Parent == nil then getNil = true out = 'getNil("' .. getSpecials(parent.Name) .. '", "' .. parent.ClassName .. '")' break else if parent.Name:match("%a+") ~= parent.Name then out = '["' .. getSpecials(parent.Name) .. '"]' .. out else out = "." .. parent.Name .. out end roblox remote spy How to get it for free? roblox remote spy end parent = parent.Parent end else out = "game" end -- legacy method -- out = out .. "game." .. var:GetFullName() .. "," end return out roblox remote spy How to dowload it? roblox remote spy end --- Converts a table to a string (includes nested tables) function tableToString(t, level) if type(level) ~= "number" then level = 4 else level = level + 4 end local out = "" roblox remote spy How to dowload it? roblox remote spy for i, v in pairs(t) do out = out .. "\n" .. space(level) .. "[" .. typeToString(i, level) .. "] = " .. typeToString(v, level) .. "," end out = "{" .. out .. "\n" .. space(level - 4) .. "}" return out end --- Toggles on and off the Hookfunction remote spy method (DISABLED- will not run) function toggleHook() if toggle then roblox remote spy How to use it? roblox remote spy -- local function connect(remote) -- spawn( -- function() -- if remote:IsA("RemoteEvent") then -- local old -- old = -- hookfunction( -- remote.FireServer, -- function(...) -- newEvent(remote.Name, genScript(remote, ...), remote, rawget(getfenv(2), "script")) roblox remote spy How to get it? roblox remote spy -- return old(...) -- end -- ) -- table.insert(connectedRemotes, {remote, old}) -- elseif remote:IsA("RemoteFunction") then -- local old -- old = -- hookfunction( -- remote.InvokeServer, -- function(...) roblox remote spy How to use it? roblox remote spy -- newEvent(remote.Name, genScript(remote, ...), remote, rawget(getfenv(2), "script")) -- return old(...) -- end -- ) -- table.insert(connectedRemotes, {remote, old}) -- end -- end -- ) -- end -- game.ChildAdded:Connect( roblox remote spy How to use it? roblox remote spy -- function(c) -- pcall( -- function() -- if c:IsA("RemoteEvent") and c:IsA("RemoteFunction") then -- connect(c) -- end -- end -- ) -- end -- ) roblox remote spy How to dowload it? roblox remote spy -- spawn( -- function() -- for _, v in pairs(game:GetDescendants()) do -- if toggle then -- pcall( -- function() -- if v:IsA("RemoteEvent") or v:IsA("RemoteFunction") then -- connect(v) -- end -- end roblox remote spy How to use it? roblox remote spy -- ) -- wait() -- end -- end -- end -- ) else -- for _, v in pairs(connectedRemotes) do -- if v[1] and v[2] then -- if v[1]:IsA("RemoteEvent") then roblox remote spy How to use it? roblox remote spy -- hookfunction(v[1].FireServer, v[2]) -- elseif v[1]:IsA("RemoteFunction") then -- hookfunction(v[1].InvokeServer, v[2]) -- end -- end -- end -- connectedRemotes = {} end end roblox remote spy How to dowload it? roblox remote spy --- Toggles on and off the namecall remote spy method function toggleNamecall() if not toggle then gm.__namecall = function(...) local args = {...} local remote = args[1] local methodName = getnamecallmethod() if methodName == "FireServer" and not blacklisted(remote) then table.remove(args, 1) local script = rawget(getfenv(2), "script") roblox remote spy How to get it? roblox remote spy local func = debug.getinfo(2).func spawn( function() local funNum for i, v in pairs(getgc()) do if v == func then funNum = i break end end roblox remote spy PasteShr roblox remote spy remoteHandlerEvent:Fire("RemoteEvent", remote.Name, genScript(remote, unpack(args)), remote, script, blocked(remote), tableToString(debug.getupvalues(func)), tableToString(debug.getconstants(func)), funNum) end ) elseif methodName == "InvokeServer" and not blacklisted(remote) then table.remove(args, 1) local script = rawget(getfenv(2), "script") local func = debug.getinfo(2).func spawn( function() local funNum roblox remote spy How to dowload it? roblox remote spy for i, v in pairs(getgc()) do if v == func then funNum = i break end end remoteHandlerEvent:Fire("RemoteFunction", remote.Name, genScript(remote, unpack(args)), remote, script, blocked(remote), tableToString(debug.getupvalues(func)), tableToString(debug.getconstants(func)), funNum) end ) end roblox remote spy How to dowload it? roblox remote spy if (methodName == "InvokeServer" or methodName == "FireServer") and blocked(remote) then return nil else return original(...) end end else gm.__namecall = original end end roblox remote spy PasteShr roblox remote spy --- Toggles between the two remotespy methods (hookfunction currently = disabled) function toggleSpyMethod() toggleHook() toggleNamecall() toggle = not toggle end --- Handles the button creation things... Connected to `remoteHandlerEvent` function bindableHandler(type, ...) roblox remote spy How to use it? roblox remote spy if type == "RemoteEvent" then newEvent(...) elseif type == "RemoteFunction" then newFunction(...) end end -- main if not _G.SimpleSpyExecuted then ContentProvider:PreloadAsync({icon, icon_2}) roblox remote spy PasteShr roblox remote spy property.Parent = nil fTemplate.Parent = nil eTemplate.Parent = nil codebox.Text = "" topbar.InputBegan:Connect(onBarInput) minimize.MouseButton1Click:Connect(toggleMinimize) methodToggle.MouseButton1Click:Connect(onToggleButtonClick) remoteHandlerEvent.Event:Connect(bindableHandler) onToggleButtonClick() _G.SimpleSpyExecuted = true roblox remote spy How to get it? roblox remote spy else ScreenGui:Destroy() collectgarbage() end ----- ADD ONS ----- (easily add or remove additonal functionality to the RemoteSpy!) --[[ Some helpful things: - add your function in here, and create buttons for them through the 'newButton' function - the first argument provided is the TextButton the player clicks to run the function roblox remote spy How to get it for free? roblox remote spy - generated scripts are generated when the namecall is initially fired and saved in remoteFrame objects - blacklisted remotes will be ignored directly in namecall (less lag) - the properties of a 'remoteFrame' object: { Name: (string) The name of the Remote GenScript: (string) The generated script that appears in the codebox (generated when namecall fired) Source: (Instance (LocalScript)) The script that fired/invoked the remote Remote: (Instance (RemoteEvent) | Instance (RemoteFunction)) The remote that was fired/invoked Log: (Instance (TextButton)) The button being used for the remote (same as 'selected.Log') } roblox remote spy PasteShr roblox remote spy - globals list: (contact @exxtremewa#9394 for more information or if you have suggestions for more to be added) - closed: (boolean) whether or not the GUI is currently minimized - logs: (table[remoteFrame]) full of remoteFrame objects (properties listed above) - selected: (remoteFrame) the currently selected remoteFrame (properties listed above) - blacklist: (string[] | Instance[] (RemoteEvent) | Instance[] (RemoteFunction)) an array of blacklisted names and remotes - codebox: (Instance (TextBox)) the textbox that holds all the code- cleared often ]] -- Copies the contents of the codebox newButton( "Copy Code", roblox remote spy How to dowload it? roblox remote spy "Click to copy code", function(button) local orText = "Click to copy code" syn.write_clipboard(codebox.Text) button.Text = "Copied successfully!" wait(2) button.Text = orText end ) roblox remote spy PasteShr roblox remote spy --- Copies the source script (that fired the remote) newButton( "Copy Remote", "Click to copy the path of the remote", function(button) local orText = "Click to copy the path of the remote" syn.write_clipboard(typeToString(selected.Remote)) button.Text = "Copied!" wait(3) button.Text = orText roblox remote spy How to get it for free? roblox remote spy end ) --- Copies the source script (that fired the remote) newButton( "Copy Source", "Click to copy the path of the source script", function(button) local orText = "Click to copy the path of the source script" syn.write_clipboard(typeToString(selected.Source)) roblox remote spy PasteShr roblox remote spy button.Text = "Copied!" wait(3) button.Text = orText end ) --- Puts the upvalues from the remote into the console for your viewing pleasure... (also puts function #) newButton( "Get Upvalues", "Click to get the upvalues from the source", roblox remote spy How to use it? roblox remote spy function(button) local orText = "Click to get upvalues from the source script" codebox.Text = "-- Serialized with SimpleSpy's TableToString! (credits to @exxtremewa#9394)\n-- (getgc) Function #" .. tostring(selected.FunNum) .. "\n\n" .. selected.Upvalues button.Text = "Put in Code Box!" wait(3) button.Text = orText end ) --- Puts the constants from the remote into the console for your viewing pleasure... (also puts function #) roblox remote spy How to use it? roblox remote spy newButton( "Get Constants", "Click to get the constants from the source", function(button) local orText = "Click to get constants from the source script" codebox.Text = "-- Serialized with SimpleSpy's TableToString! (credits to @exxtremewa#9394)\n-- (getgc) Function #" .. tostring(selected.FunNum) .. "\n\n" .. selected.Constants button.Text = "Put in Code Box!" wait(3) button.Text = orText end roblox remote spy How to use it? roblox remote spy ) --- Decompiles the script that fired the remote and puts it in the code box newButton( "Decompile Source", "Click to decompile the source script", function(button) local orText = "Click to decompile the source script" codebox.Text = "-- Decompiled code from:\n-- " .. typeToString(selected.Source) .. "\n\n" .. decompile(selected.Source) button.Text = "Decompiled!" roblox remote spy How to get it? roblox remote spy wait(3) button.Text = orText end ) -- Executes the contents of the codebox through loadstring newButton( "Run Code", "Click to execute code", function(button) roblox remote spy How to get it? roblox remote spy local orText = "Click to execute code" button.Text = "Executing..." local execute = { pcall( function() return loadstring(codebox.Text)() end ) } if execute[1] then roblox remote spy How to use it? roblox remote spy button.Text = "Executed successfully!" else warn(execute[2], execute[3]) button.Text = "Execution error!" end wait(3) button.Text = orText end ) roblox remote spy How to get it? roblox remote spy --- Clears the Remote logs newButton( "Clear Logs", "Click to clear logs", function(button) local orText = "Click to clear logs" button.Text = "Clearing..." logs = {} for _, v in pairs(remotes:GetChildren()) do if not v:IsA("UIListLayout") then roblox remote spy How to get it? roblox remote spy v:Destroy() end end codebox.Text = "" selected = nil button.Text = "Logs cleared!" wait(3) button.Text = orText end ) roblox remote spy How to dowload it? roblox remote spy --- Excludes the selected.Log Remote from the RemoteSpy newButton( "Exclude (single)", "Click to exclude this Remote", function(button) local orText = "Click to exclude this Remote" table.insert(blacklist, #blacklist + 1, selected.Remote) button.Text = "Excluded!" wait(3) roblox remote spy How to get it for free? roblox remote spy button.Text = orText end ) --- Excludes all Remotes that share the same name as the selected.Log remote from the RemoteSpy newButton( "Exclude (by name)", "Click to exclude all remotes with this name", function(button) local orText = "Click to exclude all remotes with this name" roblox remote spy PasteShr roblox remote spy table.insert(blacklist, #blacklist + 1, selected.Name) button.Text = "Excluded!" wait(3) button.Text = orText end ) --- clears blacklist newButton( "Clear Blacklist", roblox remote spy How to get it? roblox remote spy "Click to clear the blacklist", function(button) local orText = "Click to clear the blacklist" blacklist = {} button.Text = "Blacklist cleared!" wait(3) button.Text = orText end ) roblox remote spy How to get it? roblox remote spy --- Prevents the selected.Log Remote from firing the server (still logged) newButton( "Block (single)", "Click to stop this remote from firing", function(button) local orText = "Click to stop this remote from firing" table.insert(blocklist, #blocklist + 1, selected.Remote) button.Text = "Excluded!" wait(3) button.Text = orText roblox remote spy How to dowload it? roblox remote spy end ) --- Prevents all remotes from firing that share the same name as the selected.Log remote from the RemoteSpy (still logged) newButton( "Block (by name)", "Click to stop remotes with this name from firing", function(button) local orText = "Click to stop remotes with this name from firing" table.insert(blocklist, #blocklist + 1, selected.Name) roblox remote spy How to get it for free? roblox remote spy button.Text = "Excluded!" wait(3) button.Text = orText end ) --- clears blacklist newButton( "Clear Blocklist", "Click to stop blocking remotes", roblox remote spy How to use it? roblox remote spy function(button) local orText = "Click to stop blocking remotes" blocklist = {} button.Text = "Blocklist cleared!" wait(3) button.Text = orText end ) roblox remote spy