remote spy pastebin --[[ 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") remote spy pastebin How to dowload it? remote spy pastebin 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") remote spy pastebin PasteShr remote spy pastebin 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") remote spy pastebin How to use it? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to get it for free? remote spy pastebin 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) remote spy pastebin How to use it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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" remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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" remote spy pastebin How to get it for free? remote spy pastebin 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" remote spy pastebin How to use it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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) remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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" remote spy pastebin PasteShr remote spy pastebin 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) remote spy pastebin How to use it? remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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" remote spy pastebin How to dowload it? remote spy pastebin 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) remote spy pastebin PasteShr remote spy pastebin 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") remote spy pastebin How to get it? remote spy pastebin --- 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 remote spy pastebin How to get it for free? remote spy pastebin --- 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 remote spy pastebin How to get it? remote spy pastebin --- 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") remote spy pastebin How to use it? remote spy pastebin -- functions --- Toggles the remote spy method (when button clicked) function onToggleButtonClick() if toggle then methodToggle.Text = "Disabled" else methodToggle.Text = "Enabled" end toggleSpyMethod() remote spy pastebin How to use it? remote spy pastebin 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() remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to get it for free? remote spy pastebin end end ) topbar.InputEnded:Connect( function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then RunService:UnbindFromRenderStep("drag") end end ) remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin --- 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 remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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( remote spy pastebin How to use it? remote spy pastebin function(...) if selected then onClick(button.property, ...) end end ) button.Parent = propertyframe end --- Adds new RemoteEvent to logs remote spy pastebin PasteShr remote spy pastebin 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, remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin end remoteFrame.MouseButton1Click:Connect( function(...) eventSelect(remoteFrame, ...) end ) if layoutOrderNum < 1 then layoutOrderNum = 999999999 end remoteFrame.LayoutOrder = layoutOrderNum remote spy pastebin How to use it? remote spy pastebin 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" remote spy pastebin How to get it for free? remote spy pastebin 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, remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin ) 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) remote spy pastebin How to use it? remote spy pastebin function genScript(remote, ...) local gen = "" local args = {...} if #args > 0 then if not pcall( function() gen = gen .. "local args = " .. tableToString(args) .. "\n\n" end ) remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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) .. '"' remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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 = "" remote spy pastebin How to use it? remote spy pastebin 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("\\", "\\\\") remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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()) remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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." .. remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to get it for free? remote spy pastebin -- 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 remote spy pastebin How to dowload it? remote spy pastebin -- 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 remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin end parent = parent.Parent end else out = "game" end -- legacy method -- out = out .. "game." .. var:GetFullName() .. "," end return out remote spy pastebin How to get it? remote spy pastebin 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 = "" remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin PasteShr remote spy pastebin -- 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")) remote spy pastebin How to dowload it? remote spy pastebin -- return old(...) -- end -- ) -- table.insert(connectedRemotes, {remote, old}) -- elseif remote:IsA("RemoteFunction") then -- local old -- old = -- hookfunction( -- remote.InvokeServer, -- function(...) remote spy pastebin How to dowload it? remote spy pastebin -- newEvent(remote.Name, genScript(remote, ...), remote, rawget(getfenv(2), "script")) -- return old(...) -- end -- ) -- table.insert(connectedRemotes, {remote, old}) -- end -- end -- ) -- end -- game.ChildAdded:Connect( remote spy pastebin How to get it for free? remote spy pastebin -- function(c) -- pcall( -- function() -- if c:IsA("RemoteEvent") and c:IsA("RemoteFunction") then -- connect(c) -- end -- end -- ) -- end -- ) remote spy pastebin How to get it for free? remote spy pastebin -- 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 remote spy pastebin How to dowload it? remote spy pastebin -- ) -- wait() -- end -- end -- end -- ) else -- for _, v in pairs(connectedRemotes) do -- if v[1] and v[2] then -- if v[1]:IsA("RemoteEvent") then remote spy pastebin How to dowload it? remote spy pastebin -- hookfunction(v[1].FireServer, v[2]) -- elseif v[1]:IsA("RemoteFunction") then -- hookfunction(v[1].InvokeServer, v[2]) -- end -- end -- end -- connectedRemotes = {} end end remote spy pastebin PasteShr remote spy pastebin --- 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") remote spy pastebin PasteShr remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin 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 remote spy pastebin How to dowload it? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin if (methodName == "InvokeServer" or methodName == "FireServer") and blocked(remote) then return nil else return original(...) end end else gm.__namecall = original end end remote spy pastebin PasteShr remote spy pastebin --- 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, ...) remote spy pastebin How to get it? remote spy pastebin if type == "RemoteEvent" then newEvent(...) elseif type == "RemoteFunction" then newFunction(...) end end -- main if not _G.SimpleSpyExecuted then ContentProvider:PreloadAsync({icon, icon_2}) remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin 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 remote spy pastebin How to get it? remote spy pastebin - 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') } remote spy pastebin How to dowload it? remote spy pastebin - 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", remote spy pastebin How to get it for free? remote spy pastebin "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 ) remote spy pastebin How to dowload it? remote spy pastebin --- 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 remote spy pastebin How to get it for free? remote spy pastebin 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)) remote spy pastebin PasteShr remote spy pastebin 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", remote spy pastebin How to use it? remote spy pastebin 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 #) remote spy pastebin How to get it for free? remote spy pastebin 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 remote spy pastebin How to use it? remote spy pastebin ) --- 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!" remote spy pastebin How to get it for free? remote spy pastebin wait(3) button.Text = orText end ) -- Executes the contents of the codebox through loadstring newButton( "Run Code", "Click to execute code", function(button) remote spy pastebin PasteShr remote spy pastebin local orText = "Click to execute code" button.Text = "Executing..." local execute = { pcall( function() return loadstring(codebox.Text)() end ) } if execute[1] then remote spy pastebin How to use it? remote spy pastebin button.Text = "Executed successfully!" else warn(execute[2], execute[3]) button.Text = "Execution error!" end wait(3) button.Text = orText end ) remote spy pastebin How to get it for free? remote spy pastebin --- 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 remote spy pastebin How to dowload it? remote spy pastebin v:Destroy() end end codebox.Text = "" selected = nil button.Text = "Logs cleared!" wait(3) button.Text = orText end ) remote spy pastebin How to get it for free? remote spy pastebin --- 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) remote spy pastebin PasteShr remote spy pastebin 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" remote spy pastebin How to get it? remote spy pastebin table.insert(blacklist, #blacklist + 1, selected.Name) button.Text = "Excluded!" wait(3) button.Text = orText end ) --- clears blacklist newButton( "Clear Blacklist", remote spy pastebin PasteShr remote spy pastebin "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 ) remote spy pastebin How to get it for free? remote spy pastebin --- 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 remote spy pastebin How to dowload it? remote spy pastebin 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) remote spy pastebin How to use it? remote spy pastebin button.Text = "Excluded!" wait(3) button.Text = orText end ) --- clears blacklist newButton( "Clear Blocklist", "Click to stop blocking remotes", remote spy pastebin How to use it? remote spy pastebin function(button) local orText = "Click to stop blocking remotes" blocklist = {} button.Text = "Blocklist cleared!" wait(3) button.Text = orText end ) remote spy pastebin