Advertisement
unknownexploits

sentinel remote spy my version

Feb 25th, 2020
1,414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 43.30 KB | None | 0 0
  1. local SentinelSpy = Instance.new("ScreenGui")
  2. local mainFrame = Instance.new("ImageLabel")
  3. local properties = Instance.new("ImageLabel")
  4. local codeframe = Instance.new("ScrollingFrame")
  5. local codebox = Instance.new("TextLabel")
  6. local remotes = Instance.new("ImageLabel")
  7. local remotesScrollingFrame = Instance.new("ScrollingFrame")
  8. local UIListLayout = Instance.new("UIListLayout")
  9. local eTemplate = Instance.new("TextButton")
  10. local ImageLabel = Instance.new("ImageLabel")
  11. local name = Instance.new("TextLabel")
  12. local fTemplate = Instance.new("TextButton")
  13. local name_2 = Instance.new("TextLabel")
  14. local icon = Instance.new("ImageLabel")
  15. local copyBtn = Instance.new("ImageButton")
  16. local copyLabel = Instance.new("TextLabel")
  17. local clearBtn = Instance.new("ImageButton")
  18. local clearLabel = Instance.new("TextLabel")
  19. local enablespy = Instance.new("ImageButton")
  20. local text = Instance.new("TextLabel")
  21. local copyRemBtn = Instance.new("ImageButton")
  22. local copyRemLabel = Instance.new("TextLabel")
  23. local muteremoteBtn = Instance.new("ImageButton")
  24. local text_2 = Instance.new("TextLabel")
  25. local unmuteremoteBtn = Instance.new("ImageButton")
  26. local text_3 = Instance.new("TextLabel")
  27. local topbarFrame = Instance.new("ImageLabel")
  28. local exitBtn = Instance.new("ImageButton")
  29. local exitLabel = Instance.new("TextLabel")
  30. local miniBtn = Instance.new("ImageButton")
  31. local miniLabel = Instance.new("TextLabel")
  32. local sentinelLogo = Instance.new("ImageLabel")
  33.  
  34. SentinelSpy.Name = "SentinelSpy"
  35. SentinelSpy.Parent = game.CoreGui
  36. SentinelSpy.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
  37.  
  38. mainFrame.Name = "mainFrame"
  39. mainFrame.Parent = SentinelSpy
  40. mainFrame.BackgroundColor3 = Color3.fromRGB(32, 32, 32)
  41. mainFrame.BackgroundTransparency = 1.000
  42. mainFrame.BorderSizePixel = 0
  43. mainFrame.ClipsDescendants = true
  44. mainFrame.Position = UDim2.new(0.247382522, 0, 0.282317191, 0)
  45. mainFrame.Size = UDim2.new(0, 565, 0, 348)
  46. mainFrame.Image = "http://www.roblox.com/asset/?id=4530318781"
  47. mainFrame.ImageColor3 = Color3.fromRGB(32, 32, 32)
  48. mainFrame.ScaleType = Enum.ScaleType.Slice
  49. mainFrame.SliceCenter = Rect.new(20, 20, 480, 480)
  50.  
  51. properties.Name = "properties"
  52. properties.Parent = mainFrame
  53. properties.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
  54. properties.BackgroundTransparency = 1.000
  55. properties.BorderColor3 = Color3.fromRGB(27, 42, 53)
  56. properties.BorderSizePixel = 0
  57. properties.Position = UDim2.new(0, 153, 0, 38)
  58. properties.Size = UDim2.new(0, 428, 0, 277)
  59. properties.Image = "http://www.roblox.com/asset/?id=4530318781"
  60. properties.ImageColor3 = Color3.fromRGB(24, 24, 24)
  61. properties.ScaleType = Enum.ScaleType.Slice
  62. properties.SliceCenter = Rect.new(20, 20, 480, 480)
  63.  
  64. codeframe.Name = "codeframe"
  65. codeframe.Parent = properties
  66. codeframe.AnchorPoint = Vector2.new(0.5, 0.5)
  67. codeframe.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  68. codeframe.BackgroundTransparency = 1.000
  69. codeframe.BorderSizePixel = 0
  70. codeframe.Position = UDim2.new(0.5, 0, 0.5, 0)
  71. codeframe.Size = UDim2.new(0, 380, 0, 260)
  72. codeframe.BottomImage = "http://www.roblox.com/asset/?id=2991280711"
  73. codeframe.CanvasSize = UDim2.new(0, 0, 30, 0)
  74. codeframe.MidImage = "http://www.roblox.com/asset/?id=2991280711"
  75. codeframe.ScrollBarThickness = 5
  76. codeframe.TopImage = "http://www.roblox.com/asset/?id=2991280711"
  77.  
  78. codebox.Name = "codebox"
  79. codebox.Parent = codeframe
  80. codebox.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  81. codebox.BackgroundTransparency = 1.000
  82. codebox.BorderSizePixel = 0
  83. codebox.Size = UDim2.new(0, 380, 0, 260)
  84. codebox.Font = Enum.Font.Code
  85. codebox.Text = ""
  86. codebox.TextColor3 = Color3.fromRGB(255, 255, 255)
  87. codebox.TextSize = 16.000
  88. codebox.TextXAlignment = Enum.TextXAlignment.Left
  89. codebox.TextYAlignment = Enum.TextYAlignment.Top
  90.  
  91. remotes.Name = "remotes"
  92. remotes.Parent = mainFrame
  93. remotes.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
  94. remotes.BackgroundTransparency = 1.000
  95. remotes.BorderColor3 = Color3.fromRGB(27, 42, 53)
  96. remotes.BorderSizePixel = 0
  97. remotes.Position = UDim2.new(0, 10, 0, 38)
  98. remotes.Size = UDim2.new(0, 134, 0, 277)
  99. remotes.Image = "http://www.roblox.com/asset/?id=4530318781"
  100. remotes.ImageColor3 = Color3.fromRGB(24, 24, 24)
  101. remotes.ScaleType = Enum.ScaleType.Slice
  102. remotes.SliceCenter = Rect.new(20, 20, 480, 480)
  103.  
  104. remotesScrollingFrame.Name = "remotesScrollingFrame"
  105. remotesScrollingFrame.Parent = remotes
  106. remotesScrollingFrame.AnchorPoint = Vector2.new(0.5, 0)
  107. remotesScrollingFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  108. remotesScrollingFrame.BackgroundTransparency = 1.000
  109. remotesScrollingFrame.BorderSizePixel = 0
  110. remotesScrollingFrame.Position = UDim2.new(0.5, 0, 0, 5)
  111. remotesScrollingFrame.Size = UDim2.new(0, 125, 0, 265)
  112. remotesScrollingFrame.BottomImage = "http://www.roblox.com/asset/?id=2991280711"
  113. remotesScrollingFrame.CanvasSize = UDim2.new(0, 0, 30, 0)
  114. remotesScrollingFrame.MidImage = "http://www.roblox.com/asset/?id=2991280711"
  115. remotesScrollingFrame.ScrollBarThickness = 5
  116. remotesScrollingFrame.TopImage = "http://www.roblox.com/asset/?id=2991280711"
  117.  
  118. UIListLayout.Parent = remotesScrollingFrame
  119. UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
  120. UIListLayout.Padding = UDim.new(0, 7)
  121.  
  122. eTemplate.Name = "eTemplate"
  123. eTemplate.Parent = remotesScrollingFrame
  124. eTemplate.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  125. eTemplate.BackgroundTransparency = 1.000
  126. eTemplate.Size = UDim2.new(0, 129, 0, 19)
  127. eTemplate.Font = Enum.Font.SourceSans
  128. eTemplate.Text = ""
  129. eTemplate.TextColor3 = Color3.fromRGB(181, 181, 181)
  130. eTemplate.TextSize = 14.000
  131.  
  132. ImageLabel.Parent = eTemplate
  133. ImageLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  134. ImageLabel.BackgroundTransparency = 1.000
  135. ImageLabel.Size = UDim2.new(0, 19, 0, 19)
  136. ImageLabel.Image = "rbxassetid://4640035463"
  137.  
  138. name.Name = "name"
  139. name.Parent = eTemplate
  140. name.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  141. name.BackgroundTransparency = 1.000
  142. name.Position = UDim2.new(0.147286817, 0, 0, 0)
  143. name.Size = UDim2.new(0, 104, 0, 19)
  144. name.Font = Enum.Font.SourceSans
  145. name.TextColor3 = Color3.fromRGB(181, 181, 181)
  146. name.TextSize = 14.000
  147.  
  148. fTemplate.Name = "fTemplate"
  149. fTemplate.Parent = remotesScrollingFrame
  150. fTemplate.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  151. fTemplate.BackgroundTransparency = 1.000
  152. fTemplate.Size = UDim2.new(0, 129, 0, 19)
  153. fTemplate.Font = Enum.Font.SourceSans
  154. fTemplate.Text = ""
  155. fTemplate.TextColor3 = Color3.fromRGB(181, 181, 181)
  156. fTemplate.TextSize = 14.000
  157.  
  158. name_2.Name = "name"
  159. name_2.Parent = fTemplate
  160. name_2.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  161. name_2.BackgroundTransparency = 1.000
  162. name_2.Position = UDim2.new(0.147286817, 0, 0, 0)
  163. name_2.Size = UDim2.new(0, 104, 0, 19)
  164. name_2.Font = Enum.Font.SourceSans
  165. name_2.TextColor3 = Color3.fromRGB(181, 181, 181)
  166. name_2.TextSize = 14.000
  167.  
  168. icon.Name = "icon"
  169. icon.Parent = fTemplate
  170. icon.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  171. icon.BackgroundTransparency = 1.000
  172. icon.BorderSizePixel = 0
  173. icon.Position = UDim2.new(0, 2, 0, 0)
  174. icon.Size = UDim2.new(0, 17, 0, 19)
  175. icon.Image = "http://www.roblox.com/asset/?id=4640035282"
  176. icon.ScaleType = Enum.ScaleType.Fit
  177.  
  178. copyBtn.Name = "copyBtn"
  179. copyBtn.Parent = mainFrame
  180. copyBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  181. copyBtn.BackgroundTransparency = 1.000
  182. copyBtn.BorderSizePixel = 0
  183. copyBtn.Position = UDim2.new(0, 140, 0, 323)
  184. copyBtn.Size = UDim2.new(0, 67, 0, 19)
  185. copyBtn.Image = "http://www.roblox.com/asset/?id=4530318781"
  186. copyBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  187. copyBtn.ImageTransparency = 1.000
  188. copyBtn.ScaleType = Enum.ScaleType.Slice
  189. copyBtn.SliceCenter = Rect.new(20, 20, 480, 480)
  190.  
  191. copyLabel.Name = "copyLabel"
  192. copyLabel.Parent = copyBtn
  193. copyLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  194. copyLabel.BackgroundTransparency = 1.000
  195. copyLabel.BorderSizePixel = 0
  196. copyLabel.Size = UDim2.new(0.974466681, 0, 1, 0)
  197. copyLabel.Font = Enum.Font.SourceSans
  198. copyLabel.Text = "Copy"
  199. copyLabel.TextColor3 = Color3.fromRGB(181, 181, 181)
  200. copyLabel.TextSize = 14.000
  201.  
  202. clearBtn.Name = "clearBtn"
  203. clearBtn.Parent = mainFrame
  204. clearBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  205. clearBtn.BackgroundTransparency = 1.000
  206. clearBtn.BorderSizePixel = 0
  207. clearBtn.Position = UDim2.new(0, 10, 0, 323)
  208. clearBtn.Size = UDim2.new(0, 134, 0, 19)
  209. clearBtn.Image = "http://www.roblox.com/asset/?id=4530318781"
  210. clearBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  211. clearBtn.ImageTransparency = 1.000
  212. clearBtn.ScaleType = Enum.ScaleType.Slice
  213. clearBtn.SliceCenter = Rect.new(20, 20, 480, 480)
  214.  
  215. clearLabel.Name = "clearLabel"
  216. clearLabel.Parent = clearBtn
  217. clearLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  218. clearLabel.BackgroundTransparency = 1.000
  219. clearLabel.BorderSizePixel = 0
  220. clearLabel.Size = UDim2.new(1, 0, 1, 0)
  221. clearLabel.Font = Enum.Font.SourceSans
  222. clearLabel.Text = "Clear Logs"
  223. clearLabel.TextColor3 = Color3.fromRGB(181, 181, 181)
  224. clearLabel.TextSize = 14.000
  225.  
  226. enablespy.Name = "enablespy"
  227. enablespy.Parent = mainFrame
  228. enablespy.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  229. enablespy.BackgroundTransparency = 1.000
  230. enablespy.BorderSizePixel = 0
  231. enablespy.Position = UDim2.new(0, 325, 0, 323)
  232. enablespy.Size = UDim2.new(0, 84, 0, 19)
  233. enablespy.Image = "http://www.roblox.com/asset/?id=4530318781"
  234. enablespy.ImageColor3 = Color3.fromRGB(140, 30, 49)
  235. enablespy.ImageTransparency = 1.000
  236. enablespy.ScaleType = Enum.ScaleType.Slice
  237. enablespy.SliceCenter = Rect.new(20, 20, 480, 480)
  238.  
  239. text.Name = "text"
  240. text.Parent = enablespy
  241. text.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  242. text.BackgroundTransparency = 1.000
  243. text.BorderSizePixel = 0
  244. text.Size = UDim2.new(0.988235295, 0, 1, 0)
  245. text.Font = Enum.Font.SourceSans
  246. text.Text = "Enable Spy"
  247. text.TextColor3 = Color3.fromRGB(181, 181, 181)
  248. text.TextSize = 14.000
  249.  
  250. copyRemBtn.Name = "copyRemBtn"
  251. copyRemBtn.Parent = mainFrame
  252. copyRemBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  253. copyRemBtn.BackgroundTransparency = 1.000
  254. copyRemBtn.BorderSizePixel = 0
  255. copyRemBtn.Position = UDim2.new(0, 214, 0, 323)
  256. copyRemBtn.Size = UDim2.new(0, 99, 0, 19)
  257. copyRemBtn.Image = "http://www.roblox.com/asset/?id=4530318781"
  258. copyRemBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  259. copyRemBtn.ImageTransparency = 1.000
  260. copyRemBtn.ScaleType = Enum.ScaleType.Slice
  261. copyRemBtn.SliceCenter = Rect.new(20, 20, 480, 480)
  262.  
  263. copyRemLabel.Name = "copyRemLabel"
  264. copyRemLabel.Parent = copyRemBtn
  265. copyRemLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  266. copyRemLabel.BackgroundTransparency = 1.000
  267. copyRemLabel.BorderSizePixel = 0
  268. copyRemLabel.Size = UDim2.new(1.00134265, 0, 1, 0)
  269. copyRemLabel.Font = Enum.Font.SourceSans
  270. copyRemLabel.Text = "Copy Remote Path"
  271. copyRemLabel.TextColor3 = Color3.fromRGB(181, 181, 181)
  272. copyRemLabel.TextSize = 14.000
  273.  
  274. muteremoteBtn.Name = "muteremoteBtn"
  275. muteremoteBtn.Parent = mainFrame
  276. muteremoteBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  277. muteremoteBtn.BackgroundTransparency = 1.000
  278. muteremoteBtn.BorderSizePixel = 0
  279. muteremoteBtn.Position = UDim2.new(0, 408, 0, 323)
  280. muteremoteBtn.Size = UDim2.new(0, 86, 0, 19)
  281. muteremoteBtn.Image = "http://www.roblox.com/asset/?id=4530318781"
  282. muteremoteBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  283. muteremoteBtn.ImageTransparency = 1.000
  284. muteremoteBtn.ScaleType = Enum.ScaleType.Slice
  285. muteremoteBtn.SliceCenter = Rect.new(20, 20, 480, 480)
  286.  
  287. text_2.Name = "text"
  288. text_2.Parent = muteremoteBtn
  289. text_2.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  290. text_2.BackgroundTransparency = 1.000
  291. text_2.BorderSizePixel = 0
  292. text_2.Size = UDim2.new(1.01176476, 0, 1, 0)
  293. text_2.Font = Enum.Font.SourceSans
  294. text_2.Text = "Mute Remote"
  295. text_2.TextColor3 = Color3.fromRGB(181, 181, 181)
  296. text_2.TextSize = 14.000
  297.  
  298. unmuteremoteBtn.Name = "unmuteremoteBtn"
  299. unmuteremoteBtn.Parent = mainFrame
  300. unmuteremoteBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  301. unmuteremoteBtn.BackgroundTransparency = 1.000
  302. unmuteremoteBtn.BorderSizePixel = 0
  303. unmuteremoteBtn.Position = UDim2.new(0, 495, 0, 323)
  304. unmuteremoteBtn.Size = UDim2.new(0, 86, 0, 19)
  305. unmuteremoteBtn.Image = "http://www.roblox.com/asset/?id=4530318781"
  306. unmuteremoteBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  307. unmuteremoteBtn.ImageTransparency = 1.000
  308. unmuteremoteBtn.ScaleType = Enum.ScaleType.Slice
  309. unmuteremoteBtn.SliceCenter = Rect.new(20, 20, 480, 480)
  310.  
  311. text_3.Name = "text"
  312. text_3.Parent = unmuteremoteBtn
  313. text_3.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  314. text_3.BackgroundTransparency = 1.000
  315. text_3.BorderSizePixel = 0
  316. text_3.Size = UDim2.new(1.01176476, 0, 1, 0)
  317. text_3.Font = Enum.Font.SourceSans
  318. text_3.Text = "Unmute Remotes"
  319. text_3.TextColor3 = Color3.fromRGB(181, 181, 181)
  320. text_3.TextSize = 14.000
  321.  
  322. topbarFrame.Name = "topbarFrame"
  323. topbarFrame.Parent = mainFrame
  324. topbarFrame.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
  325. topbarFrame.BackgroundTransparency = 1.000
  326. topbarFrame.BorderSizePixel = 0
  327. topbarFrame.Size = UDim2.new(1, 0, 0, 28)
  328. topbarFrame.Image = "http://www.roblox.com/asset/?id=4530319192"
  329. topbarFrame.ImageColor3 = Color3.fromRGB(24, 24, 24)
  330. topbarFrame.ScaleType = Enum.ScaleType.Slice
  331. topbarFrame.SliceCenter = Rect.new(20, 20, 480, 480)
  332.  
  333. exitBtn.Name = "exitBtn"
  334. exitBtn.Parent = topbarFrame
  335. exitBtn.AnchorPoint = Vector2.new(0, 0.5)
  336. exitBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  337. exitBtn.BackgroundTransparency = 1.000
  338. exitBtn.BorderColor3 = Color3.fromRGB(27, 42, 53)
  339. exitBtn.BorderSizePixel = 0
  340. exitBtn.Position = UDim2.new(0, 541, 0.5, 0)
  341. exitBtn.Size = UDim2.new(0, 19, 0, 19)
  342. exitBtn.Image = "http://www.roblox.com/asset/?id=4132450915"
  343. exitBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  344. exitBtn.ImageTransparency = 1.000
  345.  
  346. exitLabel.Name = "exitLabel"
  347. exitLabel.Parent = exitBtn
  348. exitLabel.AnchorPoint = Vector2.new(0.5, 0.5)
  349. exitLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  350. exitLabel.BackgroundTransparency = 1.000
  351. exitLabel.BorderSizePixel = 0
  352. exitLabel.Position = UDim2.new(0.5, 0, 0.5, 0)
  353. exitLabel.Size = UDim2.new(0, 25, 0, 25)
  354. exitLabel.Font = Enum.Font.SourceSansLight
  355. exitLabel.Text = "×"
  356. exitLabel.TextColor3 = Color3.fromRGB(181, 181, 181)
  357. exitLabel.TextSize = 35.000
  358. exitLabel.TextWrapped = true
  359.  
  360. miniBtn.Name = "miniBtn"
  361. miniBtn.Parent = topbarFrame
  362. miniBtn.AnchorPoint = Vector2.new(0, 0.5)
  363. miniBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  364. miniBtn.BackgroundTransparency = 1.000
  365. miniBtn.BorderColor3 = Color3.fromRGB(27, 42, 53)
  366. miniBtn.BorderSizePixel = 0
  367. miniBtn.Position = UDim2.new(0, 513, 0.5, 0)
  368. miniBtn.Size = UDim2.new(0, 19, 0, 19)
  369. miniBtn.Image = "http://www.roblox.com/asset/?id=4132450915"
  370. miniBtn.ImageColor3 = Color3.fromRGB(140, 30, 49)
  371. miniBtn.ImageTransparency = 1.000
  372.  
  373. miniLabel.Name = "miniLabel"
  374. miniLabel.Parent = miniBtn
  375. miniLabel.AnchorPoint = Vector2.new(0.5, 0.5)
  376. miniLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  377. miniLabel.BackgroundTransparency = 1.000
  378. miniLabel.BorderSizePixel = 0
  379. miniLabel.Position = UDim2.new(0.5, 0, 0.5, 0)
  380. miniLabel.Size = UDim2.new(0, 25, 0, 25)
  381. miniLabel.Font = Enum.Font.SourceSansLight
  382. miniLabel.Text = "—"
  383. miniLabel.TextColor3 = Color3.fromRGB(181, 181, 181)
  384. miniLabel.TextSize = 15.000
  385. miniLabel.TextWrapped = true
  386.  
  387. sentinelLogo.Name = "sentinelLogo"
  388. sentinelLogo.Parent = topbarFrame
  389. sentinelLogo.AnchorPoint = Vector2.new(0, 0.5)
  390. sentinelLogo.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  391. sentinelLogo.BackgroundTransparency = 1.000
  392. sentinelLogo.BorderSizePixel = 0
  393. sentinelLogo.Position = UDim2.new(0, 2, 0.5, 0)
  394. sentinelLogo.Size = UDim2.new(0, 24, 0, 24)
  395. sentinelLogo.ZIndex = 2
  396. sentinelLogo.Image = "http://www.roblox.com/asset/?id=4543144346"
  397. sentinelLogo.ScaleType = Enum.ScaleType.Fit
  398.  
  399. -- init
  400. local RunService = game:GetService("RunService")
  401. local UserInputService = game:GetService("UserInputService")
  402. local TweenService = game:GetService("TweenService")
  403. local ContentProvider = game:GetService("ContentProvider")
  404. local function Tween(Object, Property, Style, Direction, Time)
  405. return TweenService:Create(Object, TweenInfo.new(Time, Enum.EasingStyle[Style], Enum.EasingDirection[Direction]), Property):Play()
  406. end
  407. mainFrame.Visible = false;
  408. --- So things are descending
  409. vis = false
  410. local layoutOrderNum = 999999999
  411. --- The event logs to be read from
  412. logs = {}
  413. --- The event currently selected.Log (defaults to nil)
  414. selected = nil
  415. --- The blacklist (can be a string name or the Remote Instance)
  416. blacklist = {}
  417. --- The block list (can be a string name or the Remote Instance)
  418. blocklist = {}
  419. --- Whether or not to add getNil function
  420. local getNil = false
  421. --- Array of remotes (and original functions) connected to
  422. local connectedRemotes = {}
  423. --- True = hookfunction, false = namecall
  424. local toggle = false
  425. local gm = getrawmetatable(game)
  426. local original = gm.__namecall
  427. setreadonly(gm, false)
  428. --- This event is the main handler for remotes
  429. local remoteHandlerEvent = Instance.new("BindableEvent")
  430.  
  431. -- functions
  432. --- Toggles the remote spy method (when button clicked)
  433. function onToggleButtonClick()
  434. if toggle then
  435. enablespy.text.Text = "Disabled"
  436. else
  437. enablespy.text.Text = "Enabled"
  438. end
  439. toggleSpyMethod()
  440. end
  441.  
  442. --- Checks if the given Remote is blacklisted; returns true if blacklisted, false if not
  443. function blacklisted(remote)
  444. if #blacklist > 0 then
  445. for _, v in pairs(blacklist) do
  446. if type(v) == "string" and v == remote.Name then
  447. return true
  448. elseif typeof(v) == "Instance" and v == remote then
  449. return true
  450. end
  451. end
  452. end
  453. return false
  454. end
  455.  
  456. --- Checks if the given Remote is blocked; returns true if blacklisted, false if not
  457. function blocked(remote)
  458. if #blocklist > 0 then
  459. for _, v in pairs(blocklist) do
  460. if type(v) == "string" and v == remote.Name then
  461. return true
  462. elseif typeof(v) == "Instance" and v == remote then
  463. return true
  464. end
  465. end
  466. end
  467. return false
  468. end
  469.  
  470. --- Runs on MouseButton1Click of an event frame
  471. function eventSelect(frame)
  472. if --[[input.UserInputType == Enum.UserInputType.MouseButton1 and]] (not selected or selected.Log ~= frame) then
  473. if selected then
  474. TweenService:Create(selected.Log, TweenInfo.new(0.5), {BorderColor3 = deselectedColor, BorderSizePixel = 1}):Play(
  475.  
  476. )
  477. selected = nil
  478. end
  479. for _, v in pairs(logs) do
  480. if frame == v.Log then
  481. selected = v
  482. end
  483. end
  484. if selected then
  485. TweenService:Create(selected.Log, TweenInfo.new(0.5), {BorderColor3 = selectedColor, BorderSizePixel = 2}):Play(
  486.  
  487. )
  488. codebox.Text = selected.GenScript
  489. end
  490. end
  491. end
  492.  
  493. --- Adds new RemoteEvent to logs
  494. function newEvent(name, gen_script, remote, source_script, blocked, upvalues, constants, num)
  495. local remoteFrame = eTemplate:Clone()
  496. remoteFrame.name.Text = name
  497. local id = Instance.new("IntValue")
  498. id.Name = "ID"
  499. id.Value = #logs + 1
  500. id.Parent = remoteFrame
  501. logs[#logs + 1] = {
  502. Name = name,
  503. GenScript = gen_script,
  504. Source = source_script,
  505. Remote = remote,
  506. Log = remoteFrame,
  507. Upvalues = upvalues,
  508. Constants = constants,
  509. Blocked = blocked,
  510. FunNum = num
  511. }
  512. if blocked then
  513. logs[#logs].GenScript = "-- THIS REMOTE WAS PREVENTED FROM FIRING THE SERVER BY SIMPLESPY\n\n" .. logs[#logs].GenScript
  514. end
  515. remoteFrame.MouseButton1Click:Connect(
  516. function(...)
  517. eventSelect(remoteFrame, ...)
  518. end
  519. )
  520. if layoutOrderNum < 1 then
  521. layoutOrderNum = 999999999
  522. end
  523. remoteFrame.LayoutOrder = layoutOrderNum
  524. layoutOrderNum = layoutOrderNum - 1
  525. remoteFrame.Parent = remotesScrollingFrame
  526. end
  527.  
  528. --- Adds new RemoteFunction to logs
  529. function newFunction(name, gen_script, remote, source_script, blocked, upvalues, constants, num)
  530. local remoteFrame = fTemplate:Clone()
  531. remoteFrame.name.Text = name
  532. local id = Instance.new("IntValue")
  533. id.Name = "ID"
  534. id.Value = #logs + 1
  535. id.Parent = remoteFrame
  536. logs[#logs + 1] = {
  537. Name = name,
  538. GenScript = gen_script,
  539. Source = source_script,
  540. Remote = remote,
  541. Log = remoteFrame,
  542. Upvalues = upvalues,
  543. Constants = constants,
  544. Blocked = blocked,
  545. FunNum = num
  546. }
  547. if blocked then
  548. logs[#logs].GenScript = "-- THIS REMOTE WAS PREVENTED FROM FIRING THE SERVER BY SIMPLESPY\n\n" .. logs[#logs].GenScript
  549. end
  550. remoteFrame.MouseButton1Click:Connect(
  551. function(...)
  552. eventSelect(remoteFrame, ...)
  553. end
  554. )
  555. if layoutOrderNum < 1 then
  556. layoutOrderNum = 999999999
  557. end
  558. remoteFrame.LayoutOrder = layoutOrderNum
  559. layoutOrderNum = layoutOrderNum - 1
  560. remoteFrame.Parent = remotesScrollingFrame
  561. end
  562.  
  563. --- Generates a script from the provided arguments (first has to be remote path)
  564. function genScript(remote, ...)
  565. local gen = ""
  566. local args = {...}
  567. if #args > 0 then
  568. if
  569. not pcall(
  570. function()
  571. gen = gen .. "local args = " .. tableToString(args) .. "\n\n"
  572. end
  573. )
  574. then
  575. gen =
  576. gen .. "-- TableToString failure! Reverting to legacy functionality (results may vary)\nlocal args = {"
  577. if
  578. not pcall(
  579. function()
  580. for i, v in pairs(args) do
  581. if type(i) ~= "Instance" and type(i) ~= "userdata" then
  582. gen = gen .. "\n [" .. tostring(i) .. "] = "
  583. elseif type(i) == "string" then
  584. gen = gen .. '\n ["' .. tostring(i) .. '"] = '
  585. elseif type(i) == "userdata" and typeof(i) ~= "Instance" then
  586. gen = gen .. "\n [" .. typeof(i) .. ".new(" .. tostring(i) .. ")] = "
  587. elseif type(i) == "userdata" then
  588. gen = gen .. "\n [game." .. i:GetFullName() .. ")] = "
  589. end
  590. if type(v) ~= "Instance" and type(v) ~= "userdata" then
  591. gen = gen .. tostring(v)
  592. elseif type(v) == "string" then
  593. gen = gen .. '"' .. tostring(v) .. '"'
  594. elseif type(v) == "userdata" and typeof(v) ~= "Instance" then
  595. gen = gen .. typeof(v) .. ".new(" .. tostring(v) .. ")"
  596. elseif type(v) == "userdata" then
  597. gen = gen .. "game." .. v:GetFullName()
  598. end
  599. end
  600. gen = gen .. "\n}\n\n"
  601. end
  602. )
  603. then
  604. gen = gen .. "}\n-- Legacy tableToString failure! Unable to decompile."
  605. end
  606. end
  607. if remote:IsA("RemoteEvent") then
  608. gen = gen .. typeToString(remote) .. ":FireServer(unpack(args))"
  609. elseif remote:IsA("RemoteFunction") then
  610. gen = gen .. typeToString(remote) .. ":InvokeServer(unpack(args))"
  611. end
  612. else
  613. if remote:IsA("RemoteEvent") then
  614. gen = gen .. typeToString(remote) .. ":FireServer()"
  615. elseif remote:IsA("RemoteFunction") then
  616. gen = gen .. typeToString(remote) .. ":InvokeServer()"
  617. end
  618. end
  619. if getNil then
  620. gen =
  621. "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" ..
  622. gen
  623. getNil = false
  624. end
  625. gen =
  626. "-- Script generated by lucid guy yes epik hakor \n-- This remotespy is IN DEVELOPMENT\n\n" ..
  627. gen
  628. return gen
  629. end
  630.  
  631. --- Generates spaces based on the provided level
  632. function space(level)
  633. local out = ""
  634. for i = 1, level do
  635. out = out .. " "
  636. end
  637. return out
  638. end
  639.  
  640. --- Adds \'s to the text as a replacement to whitespace chars and other things
  641. function getSpecials(s, nested)
  642. if not nested then
  643. s = s:gsub("\\", "\\\\")
  644. end
  645. if s:match("\n") then
  646. local pos, pos2 = s:find("\n")
  647. s = s:sub(0, pos - 1) .. "\\n" .. s:sub(pos2 + 1, s:len())
  648. return getSpecials(s, true)
  649. elseif s:match("\t") then
  650. local pos, pos2 = s:find("\t")
  651. s = s:sub(0, pos - 1) .. "\\t" .. s:sub(pos2 + 1, s:len())
  652. return getSpecials(s, true)
  653. elseif s:match("\t") then
  654. local pos, pos2 = s:find("\t")
  655. s = s:sub(0, pos - 1) .. "\\t" .. s:sub(pos2 + 1, s:len())
  656. return getSpecials(s, true)
  657. elseif s:match("\"") and (s:sub(s:find("\"") - 1, s:find("\"") - 1) ~= "\\") then
  658. local pos, pos2 = s:find("\"")
  659. s = s:sub(0, pos - 1) .. "\\\"" .. s:sub(pos2 + 1, s:len())
  660. return getSpecials(s, true)
  661. elseif s:match("'") and (s:sub(s:find("'") - 1, s:find("'") - 1) ~= "\\") then
  662. local pos, pos2 = s:find("'")
  663. s = s:sub(0, pos - 1) .. "\\'" .. s:sub(pos2 + 1, s:len())
  664. return getSpecials(s, true)
  665. else
  666. return s
  667. end
  668. end
  669.  
  670. --- Converts a var to a string (including userdata)
  671. function typeToString(var, level)
  672. if not level then
  673. level = 4
  674. end
  675. local out = ""
  676. if type(var) ~= "userdata" and type(var) ~= "table" and type(var) ~= "string" then
  677. -- Number, booleans
  678. out = out .. tostring(var)
  679. elseif type(var) == "string" then
  680. -- Strings
  681. out = out .. '"' .. getSpecials(var) .. '"'
  682. elseif type(var) == "table" then
  683. -- Tables
  684. out = out .. tableToString(var, level)
  685. elseif typeof(var) == "TweenInfo" then
  686. -- TweenInfo
  687. out =
  688. out ..
  689. "TweenInfo.new(" ..
  690. tostring(var.Time) ..
  691. ", Enum.EasingStyle." ..
  692. tostring(var.EasingStyle) ..
  693. ", Enum.EasingDirection." ..
  694. tostring(var.EasingDirection) ..
  695. ", " ..
  696. tostring(var.RepeatCount) ..
  697. ", " .. tostring(var.Reverses) .. ", " .. tostring(var.DelayTime) .. ")"
  698. elseif typeof(var) == "Ray" then
  699. -- Ray
  700. out =
  701. out ..
  702. "Ray.new(Vector3.new(" .. tostring(var.Origin) .. "), Vector3.new(" .. tostring(var.Direction) .. "))"
  703. elseif typeof(var) == "NumberSequence" then
  704. -- NumberSequence
  705. out = out .. "NumberSequence.new("
  706. for i, v in pairs(var.KeyPoints) do
  707. out = out .. tostring(v)
  708. if i < #var.Keypoints then
  709. out = out .. ", "
  710. end
  711. end
  712. out = out .. ")"
  713. elseif typeof(var) == "DockWidgetPluginGuiInfo" then
  714. -- DockWidgetPluginGuiInfo
  715. out = out .. "DockWidgetPluginGuiInfo.new(Enum.InitialDockState" .. tostring(var) .. ")"
  716. elseif typeof(var) == "ColorSequence" then
  717. -- ColorSequence
  718. out = out .. "ColorSequence.new("
  719. for i, v in pairs(var.KeyPoints) do
  720. out = out .. "Color3.new(" .. tostring(v) .. ")"
  721. if i < #var.Keypoints then
  722. out = out .. ", "
  723. end
  724. end
  725. out = out .. ")"
  726. elseif typeof(var) == "BrickColor" then
  727. -- BrickColor
  728. out = out .. "BrickColor.new(" .. tostring(var.Number) .. ")"
  729. elseif typeof(var) == "NumberRange" then
  730. -- NumberRange
  731. out = out .. "NumberRange.new(" .. tostring(var.Min) .. ", " .. tostring(var.Max) .. ")"
  732. elseif typeof(var) == "Region3" then
  733. -- Region3
  734. local center = var.CFrame.Position
  735. local size = var.CFrame.Size
  736. local vector1 = center - size / 2
  737. local vector2 = center + size / 2
  738. out = out .. "Region3.new(Vector3.new(" .. tostring(vector1) .. "), Vector3.new(" .. tostring(vector2) .. ")"
  739. elseif type(var) == "userdata" and typeof(var) ~= "Instance" then
  740. -- Default userdata (no instances)
  741. local dataName = typeof(var)
  742. local args = tostring(var)
  743. for i = 1, args:len() do
  744. if args:sub(i, i) == "}" or args:sub(i, i) == "{" then
  745. if i > 1 and i < args:len() then
  746. args = args:sub(1, i - 1) .. " " .. args:sub(i + 1, args:len())
  747. elseif i == 1 then
  748. args = " " .. args:sub(i + 1, args:len())
  749. elseif i == args:len() then
  750. args = args:sub(1, i - 1) .. " "
  751. end
  752. end
  753. end
  754. out = out .. dataName .. ".new(" .. args .. ")"
  755. elseif type(var) == "userdata" and typeof(var) == "Instance" then
  756. -- Instances
  757. local parent = var
  758. if parent == nil then
  759. out = "nil"
  760. elseif parent ~= game then
  761. while true do
  762. if parent and parent.Parent == game then
  763. if game:GetService(parent.ClassName) then
  764. if parent.ClassName == "Workspace" then
  765. out = "workspace" .. out
  766. else
  767. out = 'game:GetService("' .. parent.ClassName .. '")' .. out
  768. end
  769. break
  770. else
  771. out = 'game["' .. getSpecials(parent.Name) .. '"]'
  772. break
  773. end
  774. elseif parent.Parent == nil then
  775. getNil = true
  776. out = 'getNil("' .. getSpecials(parent.Name) .. '", "' .. parent.ClassName .. '")'
  777. break
  778. else
  779. if parent.Name:match("%a+") ~= parent.Name then
  780. out = '["' .. getSpecials(parent.Name) .. '"]' .. out
  781. else
  782. out = "." .. parent.Name .. out
  783. end
  784. end
  785. parent = parent.Parent
  786. end
  787. else
  788. out = "game"
  789. end
  790. -- legacy method
  791. -- out = out .. "game." .. var:GetFullName() .. ","
  792. end
  793. return out
  794. end
  795.  
  796. --- Converts a var to a string (including userdata)
  797. function typeToString(var, level)
  798. if not level then
  799. level = 4
  800. end
  801. local out = ""
  802. if type(var) ~= "userdata" and type(var) ~= "table" and type(var) ~= "string" then
  803. -- Number, booleans
  804. out = out .. tostring(var)
  805. elseif type(var) == "string" then
  806. -- Strings
  807. out = out .. '"' .. getSpecials(var) .. '"'
  808. elseif type(var) == "table" then
  809. -- Tables
  810. out = out .. tableToString(var, level)
  811. elseif typeof(var) == "TweenInfo" then
  812. -- TweenInfo
  813. out =
  814. out ..
  815. "TweenInfo.new(" ..
  816. tostring(var.Time) ..
  817. ", Enum.EasingStyle." ..
  818. tostring(var.EasingStyle) ..
  819. ", Enum.EasingDirection." ..
  820. tostring(var.EasingDirection) ..
  821. ", " ..
  822. tostring(var.RepeatCount) ..
  823. ", " .. tostring(var.Reverses) .. ", " .. tostring(var.DelayTime) .. ")"
  824. elseif typeof(var) == "Ray" then
  825. -- Ray
  826. out =
  827. out ..
  828. "Ray.new(Vector3.new(" .. tostring(var.Origin) .. "), Vector3.new(" .. tostring(var.Direction) .. "))"
  829. elseif typeof(var) == "NumberSequence" then
  830. -- NumberSequence
  831. out = out .. "NumberSequence.new("
  832. for i, v in pairs(var.KeyPoints) do
  833. out = out .. tostring(v)
  834. if i < #var.Keypoints then
  835. out = out .. ", "
  836. end
  837. end
  838. out = out .. ")"
  839. elseif typeof(var) == "DockWidgetPluginGuiInfo" then
  840. -- DockWidgetPluginGuiInfo
  841. out = out .. "DockWidgetPluginGuiInfo.new(Enum.InitialDockState" .. tostring(var) .. ")"
  842. elseif typeof(var) == "ColorSequence" then
  843. -- ColorSequence
  844. out = out .. "ColorSequence.new("
  845. for i, v in pairs(var.KeyPoints) do
  846. out = out .. "Color3.new(" .. tostring(v) .. ")"
  847. if i < #var.Keypoints then
  848. out = out .. ", "
  849. end
  850. end
  851. out = out .. ")"
  852. elseif typeof(var) == "BrickColor" then
  853. -- BrickColor
  854. out = out .. "BrickColor.new(" .. tostring(var.Number) .. ")"
  855. elseif typeof(var) == "NumberRange" then
  856. -- NumberRange
  857. out = out .. "NumberRange.new(" .. tostring(var.Min) .. ", " .. tostring(var.Max) .. ")"
  858. elseif typeof(var) == "Region3" then
  859. -- Region3
  860. local center = var.CFrame.Position
  861. local size = var.CFrame.Size
  862. local vector1 = center - size / 2
  863. local vector2 = center + size / 2
  864. out = out .. "Region3.new(Vector3.new(" .. tostring(vector1) .. "), Vector3.new(" .. tostring(vector2) .. ")"
  865. elseif type(var) == "userdata" and typeof(var) ~= "Instance" then
  866. -- Default userdata (no instances)
  867. local dataName = typeof(var)
  868. local args = tostring(var)
  869. for i = 1, args:len() do
  870. if args:sub(i, i) == "}" or args:sub(i, i) == "{" then
  871. if i > 1 and i < args:len() then
  872. args = args:sub(1, i - 1) .. " " .. args:sub(i + 1, args:len())
  873. elseif i == 1 then
  874. args = " " .. args:sub(i + 1, args:len())
  875. elseif i == args:len() then
  876. args = args:sub(1, i - 1) .. " "
  877. end
  878. end
  879. end
  880. out = out .. dataName .. ".new(" .. args .. ")"
  881. elseif type(var) == "userdata" and typeof(var) == "Instance" then
  882. -- Instances
  883. local parent = var
  884. if parent == nil then
  885. out = "nil"
  886. elseif parent ~= game then
  887. while true do
  888. if parent and parent.Parent == game then
  889. if game:GetService(parent.ClassName) then
  890. if parent.ClassName == "Workspace" then
  891. out = "workspace" .. out
  892. else
  893. out = 'game:GetService("' .. parent.ClassName .. '")' .. out
  894. end
  895. break
  896. else
  897. out = 'game["' .. getSpecials(parent.Name) .. '"]'
  898. break
  899. end
  900. elseif parent.Parent == nil then
  901. getNil = true
  902. out = 'getNil("' .. getSpecials(parent.Name) .. '", "' .. parent.ClassName .. '")'
  903. break
  904. else
  905. if parent.Name:match("%a+") ~= parent.Name then
  906. out = '["' .. getSpecials(parent.Name) .. '"]' .. out
  907. else
  908. out = "." .. parent.Name .. out
  909. end
  910. end
  911. parent = parent.Parent
  912. end
  913. else
  914. out = "game"
  915. end
  916. -- legacy method
  917. -- out = out .. "game." .. var:GetFullName() .. ","
  918. end
  919. return out
  920. end
  921.  
  922. --- Converts a table to a string (includes nested tables)
  923. function tableToString(t, level)
  924. if type(level) ~= "number" then
  925. level = 4
  926. else
  927. level = level + 4
  928. end
  929. local out = ""
  930. for i, v in pairs(t) do
  931. out = out .. "\n" .. space(level) .. "[" .. typeToString(i, level) .. "] = " .. typeToString(v, level) .. ","
  932. end
  933. out = "{" .. out .. "\n" .. space(level - 4) .. "}"
  934. return out
  935. end
  936.  
  937. --- Toggles on and off the Hookfunction remote spy method (DISABLED- will not run)
  938. function toggleHook()
  939. if toggle then
  940. -- local function connect(remote)
  941. -- spawn(
  942. -- function()
  943. -- if remote:IsA("RemoteEvent") then
  944. -- local old
  945. -- old =
  946. -- hookfunction(
  947. -- remote.FireServer,
  948. -- function(...)
  949. -- newEvent(remote.Name, genScript(remote, ...), remote, rawget(getfenv(2), "script"))
  950. -- return old(...)
  951. -- end
  952. -- )
  953. -- table.insert(connectedRemotes, {remote, old})
  954. -- elseif remote:IsA("RemoteFunction") then
  955. -- local old
  956. -- old =
  957. -- hookfunction(
  958. -- remote.InvokeServer,
  959. -- function(...)
  960. -- newEvent(remote.Name, genScript(remote, ...), remote, rawget(getfenv(2), "script"))
  961. -- return old(...)
  962. -- end
  963. -- )
  964. -- table.insert(connectedRemotes, {remote, old})
  965. -- end
  966. -- end
  967. -- )
  968. -- end
  969. -- game.ChildAdded:Connect(
  970. -- function(c)
  971. -- pcall(
  972. -- function()
  973. -- if c:IsA("RemoteEvent") and c:IsA("RemoteFunction") then
  974. -- connect(c)
  975. -- end
  976. -- end
  977. -- )
  978. -- end
  979. -- )
  980. -- spawn(
  981. -- function()
  982. -- for _, v in pairs(game:GetDescendants()) do
  983. -- if toggle then
  984. -- pcall(
  985. -- function()
  986. -- if v:IsA("RemoteEvent") or v:IsA("RemoteFunction") then
  987. -- connect(v)
  988. -- end
  989. -- end
  990. -- )
  991. -- wait()
  992. -- end
  993. -- end
  994. -- end
  995. -- )
  996. else
  997. -- for _, v in pairs(connectedRemotes) do
  998. -- if v[1] and v[2] then
  999. -- if v[1]:IsA("RemoteEvent") then
  1000. -- hookfunction(v[1].FireServer, v[2])
  1001. -- elseif v[1]:IsA("RemoteFunction") then
  1002. -- hookfunction(v[1].InvokeServer, v[2])
  1003. -- end
  1004. -- end
  1005. -- end
  1006. -- connectedRemotes = {}
  1007. end
  1008. end
  1009.  
  1010. --- Toggles on and off the namecall remote spy method
  1011. function toggleNamecall()
  1012. if not toggle then
  1013. gm.__namecall = function(...)
  1014. local args = {...}
  1015. local remote = args[1]
  1016. local methodName = getnamecallmethod()
  1017. if methodName == "FireServer" and not blacklisted(remote) then
  1018. table.remove(args, 1)
  1019. local script = rawget(getfenv(2), "script")
  1020. local func = debug.getinfo(2).func
  1021. spawn(
  1022. function()
  1023. local funNum
  1024. for i, v in pairs(getgc()) do
  1025. if v == func then
  1026. funNum = i
  1027. break
  1028. end
  1029. end
  1030. remoteHandlerEvent:Fire("RemoteEvent", remote.Name, genScript(remote, unpack(args)), remote, script, blocked(remote), tableToString(debug.getupvalues(func)), tableToString(debug.getconstants(func)), funNum)
  1031. end
  1032. )
  1033. elseif methodName == "InvokeServer" and not blacklisted(remote) then
  1034. table.remove(args, 1)
  1035. local script = rawget(getfenv(2), "script")
  1036. local func = debug.getinfo(2).func
  1037. spawn(
  1038. function()
  1039. local funNum
  1040. for i, v in pairs(getgc()) do
  1041. if v == func then
  1042. funNum = i
  1043. break
  1044. end
  1045. end
  1046. remoteHandlerEvent:Fire("RemoteFunction", remote.Name, genScript(remote, unpack(args)), remote, script, blocked(remote), tableToString(debug.getupvalues(func)), tableToString(debug.getconstants(func)), funNum)
  1047. end
  1048. )
  1049. end
  1050. if (methodName == "InvokeServer" or methodName == "FireServer") and blocked(remote) then
  1051. return nil
  1052. else
  1053. return original(...)
  1054. end
  1055. end
  1056. else
  1057. gm.__namecall = original
  1058. end
  1059. end
  1060.  
  1061. --- Toggles between the two remotespy methods (hookfunction currently = disabled)
  1062. function toggleSpyMethod()
  1063. toggleHook()
  1064. toggleNamecall()
  1065. toggle = not toggle
  1066. end
  1067.  
  1068. --- Handles the button creation things... Connected to `remoteHandlerEvent`
  1069. function bindableHandler(type, ...)
  1070. if type == "RemoteEvent" then
  1071. newEvent(...)
  1072. elseif type == "RemoteFunction" then
  1073. newFunction(...)
  1074. end
  1075. end
  1076.  
  1077. -- main
  1078. if not _G.SimpleSpyExecuted then
  1079. ContentProvider:PreloadAsync({icon, icon_2})
  1080. fTemplate.Parent = nil
  1081. eTemplate.Parent = nil
  1082. codebox.Text = ""
  1083. enablespy.MouseButton1Click:Connect(onToggleButtonClick)
  1084. remoteHandlerEvent.Event:Connect(bindableHandler)
  1085. onToggleButtonClick()
  1086. _G.SimpleSpyExecuted = true
  1087. else
  1088. SentinelSpy:Destroy()
  1089. end
  1090.  
  1091. clearBtn.MouseButton1Down:Connect(function()
  1092. logs = {}
  1093. for _, v in pairs(remotesScrollingFrame:GetChildren()) do
  1094. if not v:IsA("UIListLayout") then
  1095. v:Destroy()
  1096. end
  1097. end
  1098. codebox.Text = ""
  1099. selected = nil
  1100. end)
  1101. copyBtn.MouseButton1Down:Connect(function()
  1102. syn.write_clipboard(codebox.Text)
  1103. end)
  1104. copyRemBtn.MouseButton1Down:Connect(function()
  1105. syn.write_clipboard(typeToString(selected.Source))
  1106. end)
  1107. miniBtn.MouseButton1Down:Connect(function()
  1108. if vis == false then
  1109. vis = true
  1110. mainFrame:TweenSize(UDim2.new(0, 565,0, 31), "Out", "Linear", .2, true)
  1111. else
  1112. vis = false
  1113. mainFrame:TweenSize(UDim2.new(0, 565,0, 348), "Out", "Linear", .2, true)
  1114. end
  1115. end)
  1116. exitBtn.MouseButton1Down:Connect(function()
  1117. mainFrame:TweenSize(UDim2.new(0, 565,0, 31), "Out", "Linear", .2, true)
  1118. wait(.2)
  1119. mainFrame:TweenSize(UDim2.new(0, 1,0, 31), "Out", "Linear", .2, true)
  1120. wait(.2)
  1121. mainFrame.Visible = false;
  1122. end)
  1123. muteremoteBtn.MouseButton1Down:Connect(function()
  1124. table.insert(blacklist, #blacklist + 1, selected.Name)
  1125. muteremoteBtn.text.Text = 'Remote Muted!'
  1126. wait(.6)
  1127. muteremoteBtn.text.Text = 'Mute Remote'
  1128. end)
  1129. unmuteremoteBtn.MouseButton1Down:Connect(function()
  1130. unmuteremoteBtn.text.Text = "Unmuted Remotes!"
  1131. blacklist = {}
  1132. wait(.6)
  1133. unmuteremoteBtn.text.Text = 'Unmute Remotes'
  1134. end)
  1135. mainFrame.Active = true
  1136. mainFrame.Draggable = true
  1137.  
  1138. for _, child in pairs(SentinelSpy:GetDescendants()) do
  1139. if child:IsA("ImageButton") then
  1140. child.MouseEnter:Connect(function()
  1141. Tween(child, {ImageTransparency = 0}, "Linear", "Out", 0.3)
  1142. end)
  1143. child.MouseLeave:Connect(function()
  1144. Tween(child, {ImageTransparency = 1}, "Linear", "Out", 0.3)
  1145. end)
  1146. end
  1147. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement