C-H-4-0-S

Rex A

Oct 27th, 2024
8
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 229.54 KB | None | 0 0
  1. --[=[
  2. d888b db db d888888b .d888b. db db db .d8b.
  3. 88' Y8b 88 88 `88' VP `8D 88 88 88 d8' `8b
  4. 88 88 88 88 odD' 88 88 88 88ooo88
  5. 88 ooo 88 88 88 .88' 88 88 88 88~~~88
  6. 88. ~8~ 88b d88 .88. j88. 88booo. 88b d88 88 88
  7. Y888P ~Y8888P' Y888888P 888888D Y88888P ~Y8888P' YP YP CONVERTER
  8. ]=]
  9.  
  10. -- Instances: 149 | Scripts: 15 | Modules: 14
  11. local G2L = {};
  12.  
  13. -- StarterGui.backdoor.exe v8
  14. G2L["1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"));
  15. G2L["1"]["ResetOnSpawn"] = false;
  16. G2L["1"]["Name"] = [[backdoor.exe v8]];
  17. G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling;
  18.  
  19. -- StarterGui.backdoor.exe v8.Main
  20. G2L["2"] = Instance.new("Frame", G2L["1"]);
  21. G2L["2"]["ZIndex"] = -1;
  22. G2L["2"]["BorderSizePixel"] = 0;
  23. G2L["2"]["BackgroundColor3"] = Color3.fromRGB(25, 25, 25);
  24. G2L["2"]["Size"] = UDim2.new(0, 611, 0, 352);
  25. G2L["2"]["ClipsDescendants"] = true;
  26. G2L["2"]["Position"] = UDim2.new(0.20000000298023224, 0, 0.10000000149011612, 0);
  27. G2L["2"]["Name"] = [[Main]];
  28.  
  29. -- StarterGui.backdoor.exe v8.Main.Topbar
  30. G2L["3"] = Instance.new("ImageLabel", G2L["2"]);
  31. G2L["3"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  32. G2L["3"]["ScaleType"] = Enum.ScaleType.Slice;
  33. G2L["3"]["BackgroundColor3"] = Color3.fromRGB(19, 19, 19);
  34. G2L["3"]["ImageColor3"] = Color3.fromRGB(21, 21, 21);
  35. G2L["3"]["SliceScale"] = 0.029999999329447746;
  36. G2L["3"]["Image"] = [[rbxassetid://3570695787]];
  37. G2L["3"]["Size"] = UDim2.new(1, 0, 0, 29);
  38. G2L["3"]["Name"] = [[Topbar]];
  39. G2L["3"]["BackgroundTransparency"] = 1;
  40.  
  41. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline
  42. G2L["4"] = Instance.new("Frame", G2L["3"]);
  43. G2L["4"]["ZIndex"] = 3;
  44. G2L["4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  45. G2L["4"]["AnchorPoint"] = Vector2.new(1, 0.5);
  46. G2L["4"]["BackgroundTransparency"] = 1;
  47. G2L["4"]["Size"] = UDim2.new(1, 0, 0, 31);
  48. G2L["4"]["Position"] = UDim2.new(1, -10, 0.5, 0);
  49. G2L["4"]["Name"] = [[RightOutline]];
  50.  
  51. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline.UIListLayout
  52. G2L["5"] = Instance.new("UIListLayout", G2L["4"]);
  53. G2L["5"]["VerticalAlignment"] = Enum.VerticalAlignment.Center;
  54. G2L["5"]["FillDirection"] = Enum.FillDirection.Horizontal;
  55. G2L["5"]["HorizontalAlignment"] = Enum.HorizontalAlignment.Right;
  56. G2L["5"]["Padding"] = UDim.new(0, 5);
  57. G2L["5"]["SortOrder"] = Enum.SortOrder.LayoutOrder;
  58.  
  59. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline.ImageLabel
  60. G2L["6"] = Instance.new("ImageLabel", G2L["4"]);
  61. G2L["6"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  62. G2L["6"]["ImageColor3"] = Color3.fromRGB(34, 34, 34);
  63. G2L["6"]["Image"] = [[rbxassetid://4467776646]];
  64. G2L["6"]["Size"] = UDim2.new(0, 14, 0, 14);
  65. G2L["6"]["BackgroundTransparency"] = 1;
  66.  
  67. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline.ImageLabel.Hitbox
  68. G2L["7"] = Instance.new("TextButton", G2L["6"]);
  69. G2L["7"]["TextSize"] = 14;
  70. G2L["7"]["TextTransparency"] = 1;
  71. G2L["7"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  72. G2L["7"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  73. -- G2L["7"]["FontFace"] = ;
  74. G2L["7"]["Size"] = UDim2.new(1, 0, 1, 0);
  75. G2L["7"]["Name"] = [[Hitbox]];
  76. G2L["7"]["Text"] = [[]];
  77. G2L["7"]["Font"] = Enum.Font.SourceSans;
  78. G2L["7"]["BackgroundTransparency"] = 1;
  79.  
  80. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline.ImageLabel.icon
  81. G2L["8"] = Instance.new("ImageLabel", G2L["6"]);
  82. G2L["8"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  83. G2L["8"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  84. G2L["8"]["Image"] = [[rbxassetid://5768110591]];
  85. G2L["8"]["Size"] = UDim2.new(1, 0, 1, 0);
  86. G2L["8"]["Name"] = [[icon]];
  87. G2L["8"]["BackgroundTransparency"] = 1;
  88.  
  89. -- StarterGui.backdoor.exe v8.Main.Topbar.RightOutline.ImageLabel.toggler
  90. G2L["9"] = Instance.new("ModuleScript", G2L["6"]);
  91. G2L["9"]["Name"] = [[toggler]];
  92.  
  93. -- StarterGui.backdoor.exe v8.Main.Topbar.Frame
  94. G2L["a"] = Instance.new("Frame", G2L["3"]);
  95. G2L["a"]["BorderSizePixel"] = 0;
  96. G2L["a"]["BackgroundColor3"] = Color3.fromRGB(21, 21, 21);
  97. G2L["a"]["AnchorPoint"] = Vector2.new(0.5, 1);
  98. G2L["a"]["Size"] = UDim2.new(1, 0, 0, 3);
  99. G2L["a"]["Position"] = UDim2.new(0.5010519027709961, 0, 1, 0);
  100.  
  101. -- StarterGui.backdoor.exe v8.Main.Topbar.VersionTitle
  102. G2L["b"] = Instance.new("TextLabel", G2L["3"]);
  103. G2L["b"]["TextWrapped"] = true;
  104. G2L["b"]["TextScaled"] = true;
  105. G2L["b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  106. -- G2L["b"]["FontFace"] = ;
  107. G2L["b"]["TextSize"] = 20;
  108. G2L["b"]["TextColor3"] = Color3.fromRGB(78, 78, 78);
  109. G2L["b"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  110. G2L["b"]["Size"] = UDim2.new(1, 0, 0.6330000162124634, 0);
  111. G2L["b"]["Text"] = [[backdoor.exe - v8.0.0]];
  112. G2L["b"]["Name"] = [[VersionTitle]];
  113. G2L["b"]["Font"] = Enum.Font.Roboto;
  114. G2L["b"]["BackgroundTransparency"] = 1;
  115. G2L["b"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  116.  
  117. -- StarterGui.backdoor.exe v8.Main.Topbar.Hitbox
  118. G2L["c"] = Instance.new("TextButton", G2L["3"]);
  119. G2L["c"]["TextSize"] = 14;
  120. G2L["c"]["TextTransparency"] = 1;
  121. G2L["c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  122. G2L["c"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  123. -- G2L["c"]["FontFace"] = ;
  124. G2L["c"]["Size"] = UDim2.new(1, 0, 1, 0);
  125. G2L["c"]["Name"] = [[Hitbox]];
  126. G2L["c"]["Text"] = [[]];
  127. G2L["c"]["Font"] = Enum.Font.SourceSans;
  128. G2L["c"]["BackgroundTransparency"] = 1;
  129.  
  130. -- StarterGui.backdoor.exe v8.Main.Sidebar
  131. G2L["d"] = Instance.new("ImageLabel", G2L["2"]);
  132. G2L["d"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  133. G2L["d"]["ScaleType"] = Enum.ScaleType.Slice;
  134. G2L["d"]["BackgroundColor3"] = Color3.fromRGB(17, 17, 17);
  135. G2L["d"]["ImageColor3"] = Color3.fromRGB(19, 19, 19);
  136. G2L["d"]["SliceScale"] = 0.029999999329447746;
  137. G2L["d"]["Image"] = [[rbxassetid://3570695787]];
  138. G2L["d"]["Size"] = UDim2.new(0, 43, 1, -32);
  139. G2L["d"]["Name"] = [[Sidebar]];
  140. G2L["d"]["BackgroundTransparency"] = 1;
  141. G2L["d"]["Position"] = UDim2.new(0, 0, 0, 32);
  142.  
  143. -- StarterGui.backdoor.exe v8.Main.Sidebar.Borders
  144. G2L["e"] = Instance.new("Folder", G2L["d"]);
  145. G2L["e"]["Name"] = [[Borders]];
  146.  
  147. -- StarterGui.backdoor.exe v8.Main.Sidebar.Borders.Frame
  148. G2L["f"] = Instance.new("Frame", G2L["e"]);
  149. G2L["f"]["BorderSizePixel"] = 0;
  150. G2L["f"]["BackgroundColor3"] = Color3.fromRGB(19, 19, 19);
  151. G2L["f"]["AnchorPoint"] = Vector2.new(0.5, 0);
  152. G2L["f"]["Size"] = UDim2.new(0, 10, 0, 313);
  153. G2L["f"]["Position"] = UDim2.new(0.7248364686965942, 0, 0, 0);
  154.  
  155. -- StarterGui.backdoor.exe v8.Main.Sidebar.Borders.Frame
  156. G2L["10"] = Instance.new("Frame", G2L["e"]);
  157. G2L["10"]["BorderSizePixel"] = 0;
  158. G2L["10"]["BackgroundColor3"] = Color3.fromRGB(19, 19, 19);
  159. G2L["10"]["AnchorPoint"] = Vector2.new(0.5, 0);
  160. G2L["10"]["Size"] = UDim2.new(0, 22, 0, 6);
  161. G2L["10"]["Position"] = UDim2.new(0.7441860437393188, 0, 0, 0);
  162.  
  163. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom
  164. G2L["11"] = Instance.new("Frame", G2L["d"]);
  165. G2L["11"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  166. G2L["11"]["AnchorPoint"] = Vector2.new(0.5, 1);
  167. G2L["11"]["BackgroundTransparency"] = 1;
  168. G2L["11"]["Size"] = UDim2.new(0, 43, 0, 142);
  169. G2L["11"]["Position"] = UDim2.new(0.5, 0, 1, -6);
  170. G2L["11"]["Name"] = [[Bottom]];
  171.  
  172. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.UIListLayout
  173. G2L["12"] = Instance.new("UIListLayout", G2L["11"]);
  174. G2L["12"]["VerticalAlignment"] = Enum.VerticalAlignment.Bottom;
  175. G2L["12"]["HorizontalAlignment"] = Enum.HorizontalAlignment.Center;
  176. G2L["12"]["Padding"] = UDim.new(0, 10);
  177.  
  178. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.InviteBtn
  179. G2L["13"] = Instance.new("ImageLabel", G2L["11"]);
  180. G2L["13"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  181. G2L["13"]["ImageColor3"] = Color3.fromRGB(35, 35, 35);
  182. G2L["13"]["Image"] = [[rbxassetid://3570695787]];
  183. G2L["13"]["Size"] = UDim2.new(0, 28, 0, 28);
  184. G2L["13"]["Name"] = [[InviteBtn]];
  185. G2L["13"]["BackgroundTransparency"] = 1;
  186.  
  187. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.InviteBtn.ImageLabel
  188. G2L["14"] = Instance.new("ImageLabel", G2L["13"]);
  189. G2L["14"]["ScaleType"] = Enum.ScaleType.Fit;
  190. G2L["14"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  191. G2L["14"]["ImageColor3"] = Color3.fromRGB(182, 182, 182);
  192. G2L["14"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  193. G2L["14"]["Image"] = [[rbxassetid://4503342956]];
  194. G2L["14"]["Size"] = UDim2.new(0.7229999899864197, 0, 0.7229999899864197, 0);
  195. G2L["14"]["BackgroundTransparency"] = 1;
  196. G2L["14"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  197.  
  198. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.InviteBtn.Hitbox
  199. G2L["15"] = Instance.new("TextButton", G2L["13"]);
  200. G2L["15"]["TextSize"] = 14;
  201. G2L["15"]["TextTransparency"] = 1;
  202. G2L["15"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  203. G2L["15"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  204. -- G2L["15"]["FontFace"] = ;
  205. G2L["15"]["Size"] = UDim2.new(1, 0, 1, 0);
  206. G2L["15"]["Name"] = [[Hitbox]];
  207. G2L["15"]["Text"] = [[]];
  208. G2L["15"]["Font"] = Enum.Font.SourceSans;
  209. G2L["15"]["BackgroundTransparency"] = 1;
  210.  
  211. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.InviteBtn.handler
  212. G2L["16"] = Instance.new("LocalScript", G2L["13"]);
  213. G2L["16"]["Name"] = [[handler]];
  214.  
  215. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.CharCounter
  216. G2L["17"] = Instance.new("TextLabel", G2L["11"]);
  217. G2L["17"]["TextWrapped"] = true;
  218. G2L["17"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  219. -- G2L["17"]["FontFace"] = ;
  220. G2L["17"]["TextSize"] = 11;
  221. G2L["17"]["TextColor3"] = Color3.fromRGB(208, 208, 208);
  222. G2L["17"]["AnchorPoint"] = Vector2.new(0.5, 0);
  223. G2L["17"]["Size"] = UDim2.new(1, 0, 0, 40);
  224. G2L["17"]["Text"] = [[0
  225. ——
  226. 0]];
  227. G2L["17"]["Name"] = [[CharCounter]];
  228. G2L["17"]["Font"] = Enum.Font.Ubuntu;
  229. G2L["17"]["BackgroundTransparency"] = 1;
  230.  
  231. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.CharCounter.handler
  232. G2L["18"] = Instance.new("LocalScript", G2L["17"]);
  233. G2L["18"]["Name"] = [[handler]];
  234.  
  235. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top
  236. G2L["19"] = Instance.new("Frame", G2L["d"]);
  237. G2L["19"]["ZIndex"] = 3;
  238. G2L["19"]["BorderSizePixel"] = 0;
  239. G2L["19"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  240. G2L["19"]["AnchorPoint"] = Vector2.new(0.5, 0);
  241. G2L["19"]["BackgroundTransparency"] = 1;
  242. G2L["19"]["Size"] = UDim2.new(0, 43, 0, 141);
  243. G2L["19"]["Position"] = UDim2.new(0.5080659985542297, 0, 0.04792332276701927, 0);
  244. G2L["19"]["Name"] = [[Top]];
  245.  
  246. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.HomeBtn
  247. G2L["1a"] = Instance.new("ImageLabel", G2L["19"]);
  248. G2L["1a"]["ScaleType"] = Enum.ScaleType.Fit;
  249. G2L["1a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  250. G2L["1a"]["ImageColor3"] = Color3.fromRGB(182, 182, 182);
  251. G2L["1a"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  252. G2L["1a"]["Image"] = [[rbxassetid://4370345144]];
  253. G2L["1a"]["Size"] = UDim2.new(0, 20, 0, 20);
  254. G2L["1a"]["Name"] = [[HomeBtn]];
  255. G2L["1a"]["BackgroundTransparency"] = 1;
  256. G2L["1a"]["Position"] = UDim2.new(0.5, 0, 0, 5);
  257.  
  258. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.HomeBtn.Hitbox
  259. G2L["1b"] = Instance.new("TextButton", G2L["1a"]);
  260. G2L["1b"]["TextSize"] = 14;
  261. G2L["1b"]["TextTransparency"] = 1;
  262. G2L["1b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  263. G2L["1b"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  264. -- G2L["1b"]["FontFace"] = ;
  265. G2L["1b"]["Size"] = UDim2.new(1, 0, 1, 0);
  266. G2L["1b"]["Name"] = [[Hitbox]];
  267. G2L["1b"]["Text"] = [[]];
  268. G2L["1b"]["Font"] = Enum.Font.SourceSans;
  269. G2L["1b"]["BackgroundTransparency"] = 1;
  270.  
  271. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.MenuBtn
  272. G2L["1c"] = Instance.new("ImageLabel", G2L["19"]);
  273. G2L["1c"]["ScaleType"] = Enum.ScaleType.Fit;
  274. G2L["1c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  275. G2L["1c"]["ImageColor3"] = Color3.fromRGB(38, 38, 38);
  276. G2L["1c"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  277. G2L["1c"]["Image"] = [[rbxassetid://4370346095]];
  278. G2L["1c"]["Size"] = UDim2.new(0, 20, 0, 20);
  279. G2L["1c"]["Name"] = [[MenuBtn]];
  280. G2L["1c"]["BackgroundTransparency"] = 1;
  281. G2L["1c"]["Position"] = UDim2.new(0.5, 0, 0, 45);
  282.  
  283. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.MenuBtn.Hitbox
  284. G2L["1d"] = Instance.new("TextButton", G2L["1c"]);
  285. G2L["1d"]["TextSize"] = 14;
  286. G2L["1d"]["TextTransparency"] = 1;
  287. G2L["1d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  288. G2L["1d"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  289. -- G2L["1d"]["FontFace"] = ;
  290. G2L["1d"]["Size"] = UDim2.new(1, 0, 1, 0);
  291. G2L["1d"]["Name"] = [[Hitbox]];
  292. G2L["1d"]["Text"] = [[]];
  293. G2L["1d"]["Font"] = Enum.Font.SourceSans;
  294. G2L["1d"]["BackgroundTransparency"] = 1;
  295.  
  296. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.SettingsBtn
  297. G2L["1e"] = Instance.new("ImageLabel", G2L["19"]);
  298. G2L["1e"]["ScaleType"] = Enum.ScaleType.Fit;
  299. G2L["1e"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  300. G2L["1e"]["ImageColor3"] = Color3.fromRGB(38, 38, 38);
  301. G2L["1e"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  302. G2L["1e"]["Image"] = [[rbxassetid://3605022185]];
  303. G2L["1e"]["Size"] = UDim2.new(0, 20, 0, 20);
  304. G2L["1e"]["Name"] = [[SettingsBtn]];
  305. G2L["1e"]["BackgroundTransparency"] = 1;
  306. G2L["1e"]["Position"] = UDim2.new(0.5, 0, 0, 85);
  307.  
  308. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.SettingsBtn.Hitbox
  309. G2L["1f"] = Instance.new("TextButton", G2L["1e"]);
  310. G2L["1f"]["TextSize"] = 14;
  311. G2L["1f"]["TextTransparency"] = 1;
  312. G2L["1f"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  313. G2L["1f"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  314. -- G2L["1f"]["FontFace"] = ;
  315. G2L["1f"]["Size"] = UDim2.new(1, 0, 1, 0);
  316. G2L["1f"]["Name"] = [[Hitbox]];
  317. G2L["1f"]["Text"] = [[]];
  318. G2L["1f"]["Font"] = Enum.Font.SourceSans;
  319. G2L["1f"]["BackgroundTransparency"] = 1;
  320.  
  321. -- StarterGui.backdoor.exe v8.Main.Sidebar.Top.bg
  322. G2L["20"] = Instance.new("ImageButton", G2L["19"]);
  323. G2L["20"]["Active"] = false;
  324. G2L["20"]["ZIndex"] = 0;
  325. G2L["20"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  326. G2L["20"]["ScaleType"] = Enum.ScaleType.Slice;
  327. G2L["20"]["SliceScale"] = 0.07000000029802322;
  328. G2L["20"]["BackgroundColor3"] = Color3.fromRGB(35, 35, 35);
  329. G2L["20"]["ImageColor3"] = Color3.fromRGB(41, 41, 41);
  330. G2L["20"]["Selectable"] = false;
  331. G2L["20"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  332. G2L["20"]["Image"] = [[rbxassetid://3570695787]];
  333. G2L["20"]["Size"] = UDim2.new(0, 25, 0, 25);
  334. G2L["20"]["Name"] = [[bg]];
  335. G2L["20"]["Position"] = UDim2.new(0.5, 0, 0, 5);
  336. G2L["20"]["BackgroundTransparency"] = 1;
  337.  
  338. -- StarterGui.backdoor.exe v8.Main.Sidebar.handler
  339. G2L["21"] = Instance.new("LocalScript", G2L["d"]);
  340. G2L["21"]["Name"] = [[handler]];
  341.  
  342. -- StarterGui.backdoor.exe v8.Main.UICorner
  343. G2L["22"] = Instance.new("UICorner", G2L["2"]);
  344. G2L["22"]["CornerRadius"] = UDim.new(0, 5);
  345.  
  346. -- StarterGui.backdoor.exe v8.Main.BodyClipping
  347. G2L["23"] = Instance.new("Frame", G2L["2"]);
  348. G2L["23"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  349. G2L["23"]["BackgroundTransparency"] = 1;
  350. G2L["23"]["Size"] = UDim2.new(1, -43, 1, -32);
  351. G2L["23"]["ClipsDescendants"] = true;
  352. G2L["23"]["Position"] = UDim2.new(0, 43, 0, 32);
  353. G2L["23"]["Name"] = [[BodyClipping]];
  354.  
  355. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor
  356. G2L["24"] = Instance.new("ImageLabel", G2L["23"]);
  357. G2L["24"]["ZIndex"] = 2;
  358. G2L["24"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  359. G2L["24"]["ScaleType"] = Enum.ScaleType.Slice;
  360. G2L["24"]["BackgroundColor3"] = Color3.fromRGB(16, 16, 16);
  361. G2L["24"]["ImageColor3"] = Color3.fromRGB(14, 14, 14);
  362. G2L["24"]["SliceScale"] = 0.029999999329447746;
  363. G2L["24"]["Image"] = [[rbxassetid://3570695787]];
  364. G2L["24"]["Size"] = UDim2.new(1, 0, 1, 0);
  365. G2L["24"]["Name"] = [[Executor]];
  366. G2L["24"]["BackgroundTransparency"] = 1;
  367. G2L["24"]["Position"] = UDim2.new(0, 0, -0.003000000026077032, 0);
  368.  
  369. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.Borders
  370. G2L["25"] = Instance.new("Folder", G2L["24"]);
  371. G2L["25"]["Name"] = [[Borders]];
  372.  
  373. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.Borders.Frame
  374. G2L["26"] = Instance.new("Frame", G2L["25"]);
  375. G2L["26"]["BorderSizePixel"] = 0;
  376. G2L["26"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  377. G2L["26"]["Size"] = UDim2.new(0, 9, 0, 313);
  378. G2L["26"]["Position"] = UDim2.new(-9.136999779002508e-08, 0, 0, 0);
  379.  
  380. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.Borders.Frame
  381. G2L["27"] = Instance.new("Frame", G2L["25"]);
  382. G2L["27"]["BorderSizePixel"] = 0;
  383. G2L["27"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  384. G2L["27"]["Size"] = UDim2.new(0, 663, 0, 6);
  385. G2L["27"]["Position"] = UDim2.new(-4.5963965078499314e-08, 0, 0, 0);
  386.  
  387. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody
  388. G2L["28"] = Instance.new("Frame", G2L["24"]);
  389. G2L["28"]["ZIndex"] = 2;
  390. G2L["28"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  391. G2L["28"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  392. G2L["28"]["BackgroundTransparency"] = 1;
  393. G2L["28"]["Size"] = UDim2.new(1, 0, 1, 0);
  394. G2L["28"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  395. G2L["28"]["Name"] = [[InnerBody]];
  396.  
  397. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg
  398. G2L["29"] = Instance.new("ImageLabel", G2L["28"]);
  399. G2L["29"]["ZIndex"] = 2;
  400. G2L["29"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  401. G2L["29"]["ScaleType"] = Enum.ScaleType.Slice;
  402. G2L["29"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  403. G2L["29"]["ImageColor3"] = Color3.fromRGB(22, 22, 22);
  404. G2L["29"]["SliceScale"] = 0.05000000074505806;
  405. G2L["29"]["Image"] = [[rbxassetid://3570695787]];
  406. G2L["29"]["Size"] = UDim2.new(1, -129, 1, -79);
  407. G2L["29"]["Name"] = [[SourceBg]];
  408. G2L["29"]["BackgroundTransparency"] = 1;
  409. G2L["29"]["Position"] = UDim2.new(0, 10, 0, 38);
  410.  
  411. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source
  412. G2L["2a"] = Instance.new("ScrollingFrame", G2L["29"]);
  413. G2L["2a"]["Active"] = true;
  414. G2L["2a"]["ScrollingDirection"] = Enum.ScrollingDirection.Y;
  415. G2L["2a"]["ZIndex"] = 2;
  416. G2L["2a"]["BorderSizePixel"] = 0;
  417. G2L["2a"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  418. G2L["2a"]["BackgroundColor3"] = Color3.fromRGB(22, 22, 22);
  419. G2L["2a"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  420. G2L["2a"]["LayoutOrder"] = 1;
  421. G2L["2a"]["Size"] = UDim2.new(1, -7, 1, -9);
  422. G2L["2a"]["ScrollBarThickness"] = 3;
  423. G2L["2a"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  424. G2L["2a"]["Name"] = [[Source]];
  425.  
  426. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ScrollingFrame
  427. G2L["2b"] = Instance.new("ScrollingFrame", G2L["2a"]);
  428. G2L["2b"]["Active"] = true;
  429. G2L["2b"]["BorderSizePixel"] = 0;
  430. G2L["2b"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  431. G2L["2b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  432. G2L["2b"]["BackgroundTransparency"] = 1;
  433. G2L["2b"]["Size"] = UDim2.new(1, 0, 1, 0);
  434. G2L["2b"]["ScrollBarImageColor3"] = Color3.fromRGB(0, 0, 0);
  435. G2L["2b"]["ScrollBarThickness"] = 5;
  436.  
  437. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ScrollingFrame.SourceBox
  438. G2L["2c"] = Instance.new("TextBox", G2L["2b"]);
  439. G2L["2c"]["ZIndex"] = 7;
  440. G2L["2c"]["TextColor3"] = Color3.fromRGB(66, 66, 66);
  441. G2L["2c"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  442. G2L["2c"]["TextSize"] = 15;
  443. G2L["2c"]["TextYAlignment"] = Enum.TextYAlignment.Top;
  444. G2L["2c"]["BackgroundColor3"] = Color3.fromRGB(31, 31, 31);
  445. -- G2L["2c"]["FontFace"] = ;
  446. G2L["2c"]["LayoutOrder"] = 5;
  447. G2L["2c"]["MultiLine"] = true;
  448. G2L["2c"]["BackgroundTransparency"] = 1;
  449. G2L["2c"]["Size"] = UDim2.new(1, -32, 1, 0);
  450. G2L["2c"]["Text"] = [[]];
  451. G2L["2c"]["Position"] = UDim2.new(0, 32, 0, 0);
  452. G2L["2c"]["Font"] = Enum.Font.Code;
  453. G2L["2c"]["Name"] = [[SourceBox]];
  454. G2L["2c"]["ClearTextOnFocus"] = false;
  455.  
  456. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ScrollingFrame.Lines
  457. G2L["2d"] = Instance.new("TextLabel", G2L["2b"]);
  458. G2L["2d"]["ZIndex"] = 2;
  459. G2L["2d"]["RichText"] = true;
  460. G2L["2d"]["TextYAlignment"] = Enum.TextYAlignment.Top;
  461. G2L["2d"]["BackgroundColor3"] = Color3.fromRGB(22, 22, 22);
  462. -- G2L["2d"]["FontFace"] = ;
  463. G2L["2d"]["TextSize"] = 15;
  464. G2L["2d"]["TextColor3"] = Color3.fromRGB(255, 255, 255);
  465. G2L["2d"]["Size"] = UDim2.new(0, 30, 1, 0);
  466. G2L["2d"]["BorderColor3"] = Color3.fromRGB(26, 26, 26);
  467. G2L["2d"]["Text"] = [[1]];
  468. G2L["2d"]["Name"] = [[Lines]];
  469. G2L["2d"]["Font"] = Enum.Font.Code;
  470. G2L["2d"]["BackgroundTransparency"] = 1;
  471.  
  472. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ScrollingFrame.Lines.Frame
  473. G2L["2e"] = Instance.new("Frame", G2L["2d"]);
  474. G2L["2e"]["ZIndex"] = 2;
  475. G2L["2e"]["BorderSizePixel"] = 0;
  476. G2L["2e"]["BackgroundColor3"] = Color3.fromRGB(51, 51, 51);
  477. G2L["2e"]["Size"] = UDim2.new(0, -1, 1, 0);
  478. G2L["2e"]["Position"] = UDim2.new(1, 0, 0.0010000000474974513, 0);
  479.  
  480. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ide
  481. G2L["2f"] = Instance.new("ModuleScript", G2L["2a"]);
  482. G2L["2f"]["Name"] = [[ide]];
  483.  
  484. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ide.highlight
  485. G2L["30"] = Instance.new("ModuleScript", G2L["2f"]);
  486. G2L["30"]["Name"] = [[highlight]];
  487.  
  488. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ide.highlight.lexer
  489. G2L["31"] = Instance.new("ModuleScript", G2L["30"]);
  490. G2L["31"]["Name"] = [[lexer]];
  491.  
  492. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.SourceBg.Source.ide.highlight.lexer.language
  493. G2L["32"] = Instance.new("ModuleScript", G2L["31"]);
  494. G2L["32"]["Name"] = [[language]];
  495.  
  496. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub
  497. G2L["33"] = Instance.new("ImageLabel", G2L["28"]);
  498. G2L["33"]["ZIndex"] = 2;
  499. G2L["33"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  500. G2L["33"]["ScaleType"] = Enum.ScaleType.Slice;
  501. G2L["33"]["BackgroundColor3"] = Color3.fromRGB(22, 22, 22);
  502. G2L["33"]["ImageColor3"] = Color3.fromRGB(14, 14, 14);
  503. G2L["33"]["SliceScale"] = 0.05000000074505806;
  504. G2L["33"]["AnchorPoint"] = Vector2.new(1, 0.5);
  505. G2L["33"]["Image"] = [[rbxassetid://3570695787]];
  506. G2L["33"]["Size"] = UDim2.new(0, 113, 1, -79);
  507. G2L["33"]["BorderColor3"] = Color3.fromRGB(21, 21, 21);
  508. G2L["33"]["Name"] = [[Scripthub]];
  509. G2L["33"]["Position"] = UDim2.new(1, 0, 0.5, 0);
  510.  
  511. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts
  512. G2L["34"] = Instance.new("ScrollingFrame", G2L["33"]);
  513. G2L["34"]["Active"] = true;
  514. G2L["34"]["ScrollingDirection"] = Enum.ScrollingDirection.Y;
  515. G2L["34"]["ZIndex"] = 2;
  516. G2L["34"]["BorderSizePixel"] = 0;
  517. G2L["34"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  518. G2L["34"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  519. G2L["34"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  520. G2L["34"]["BackgroundTransparency"] = 1;
  521. G2L["34"]["Size"] = UDim2.new(1, 0, 1, 0);
  522. G2L["34"]["ScrollBarImageColor3"] = Color3.fromRGB(168, 168, 168);
  523. G2L["34"]["ScrollBarThickness"] = 3;
  524. G2L["34"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  525. G2L["34"]["Name"] = [[Scripts]];
  526.  
  527. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.UIListLayout
  528. G2L["35"] = Instance.new("UIListLayout", G2L["34"]);
  529. G2L["35"]["HorizontalAlignment"] = Enum.HorizontalAlignment.Center;
  530. G2L["35"]["Padding"] = UDim.new(0, 5);
  531. G2L["35"]["SortOrder"] = Enum.SortOrder.LayoutOrder;
  532.  
  533. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.dummy
  534. G2L["36"] = Instance.new("ImageLabel", G2L["34"]);
  535. G2L["36"]["ZIndex"] = -1;
  536. G2L["36"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  537. G2L["36"]["ScaleType"] = Enum.ScaleType.Slice;
  538. G2L["36"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  539. G2L["36"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  540. G2L["36"]["SliceScale"] = 0.029999999329447746;
  541. G2L["36"]["Selectable"] = true;
  542. G2L["36"]["AnchorPoint"] = Vector2.new(0, 0.5);
  543. G2L["36"]["Image"] = [[rbxassetid://3570695787]];
  544. G2L["36"]["Size"] = UDim2.new(0.8999999761581421, 0, 0, 18);
  545. G2L["36"]["Active"] = true;
  546. G2L["36"]["Name"] = [[dummy]];
  547. G2L["36"]["BackgroundTransparency"] = 1;
  548. G2L["36"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  549.  
  550. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.dummy.icon
  551. G2L["37"] = Instance.new("ImageLabel", G2L["36"]);
  552. G2L["37"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  553. G2L["37"]["AnchorPoint"] = Vector2.new(0, 0.5);
  554. G2L["37"]["Image"] = [[rbxassetid://8150715986]];
  555. G2L["37"]["Size"] = UDim2.new(0, 12, 0, 12);
  556. G2L["37"]["Name"] = [[icon]];
  557. G2L["37"]["BackgroundTransparency"] = 1;
  558. G2L["37"]["Position"] = UDim2.new(0, 5, 0.5, 0);
  559.  
  560. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.dummy.Hitbox
  561. G2L["38"] = Instance.new("TextButton", G2L["36"]);
  562. G2L["38"]["TextSize"] = 14;
  563. G2L["38"]["TextTransparency"] = 1;
  564. G2L["38"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  565. G2L["38"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  566. -- G2L["38"]["FontFace"] = ;
  567. G2L["38"]["Size"] = UDim2.new(1, 0, 1, 0);
  568. G2L["38"]["Name"] = [[Hitbox]];
  569. G2L["38"]["Text"] = [[]];
  570. G2L["38"]["Font"] = Enum.Font.SourceSans;
  571. G2L["38"]["BackgroundTransparency"] = 1;
  572.  
  573. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.dummy.Template
  574. G2L["39"] = Instance.new("TextLabel", G2L["36"]);
  575. G2L["39"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  576. G2L["39"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  577. -- G2L["39"]["FontFace"] = ;
  578. G2L["39"]["TextSize"] = 14;
  579. G2L["39"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  580. G2L["39"]["Size"] = UDim2.new(1, -30, 1, 0);
  581. G2L["39"]["Text"] = [[N/A]];
  582. G2L["39"]["Name"] = [[Template]];
  583. G2L["39"]["Font"] = Enum.Font.SourceSans;
  584. G2L["39"]["BackgroundTransparency"] = 1;
  585. G2L["39"]["Position"] = UDim2.new(0, 25, 0, 0);
  586.  
  587. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts.dummy.Delete
  588. G2L["3a"] = Instance.new("ImageButton", G2L["36"]);
  589. G2L["3a"]["BackgroundColor3"] = Color3.fromRGB(200, 19, 31);
  590. G2L["3a"]["ImageColor3"] = Color3.fromRGB(196, 196, 196);
  591. G2L["3a"]["AnchorPoint"] = Vector2.new(1, 0.5);
  592. G2L["3a"]["Image"] = [[rbxassetid://7681033210]];
  593. G2L["3a"]["Size"] = UDim2.new(0, 18, 0, 18);
  594. G2L["3a"]["Name"] = [[Delete]];
  595. G2L["3a"]["Position"] = UDim2.new(1, 0, 0.5, 0);
  596. G2L["3a"]["BackgroundTransparency"] = 1;
  597.  
  598. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.TextBox
  599. G2L["3b"] = Instance.new("ImageLabel", G2L["33"]);
  600. G2L["3b"]["ZIndex"] = 2;
  601. G2L["3b"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  602. G2L["3b"]["ScaleType"] = Enum.ScaleType.Slice;
  603. G2L["3b"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  604. G2L["3b"]["ImageColor3"] = Color3.fromRGB(14, 14, 14);
  605. G2L["3b"]["SliceScale"] = 0.05000000074505806;
  606. G2L["3b"]["Selectable"] = true;
  607. G2L["3b"]["Image"] = [[rbxassetid://3570695787]];
  608. G2L["3b"]["Size"] = UDim2.new(0, 104, 0, 23);
  609. G2L["3b"]["Active"] = true;
  610. G2L["3b"]["BorderColor3"] = Color3.fromRGB(22, 22, 22);
  611. G2L["3b"]["Name"] = [[TextBox]];
  612. G2L["3b"]["Position"] = UDim2.new(0, 0, 0, -30);
  613.  
  614. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.TextBox.TextBox
  615. G2L["3c"] = Instance.new("TextBox", G2L["3b"]);
  616. G2L["3c"]["PlaceholderColor3"] = Color3.fromRGB(126, 126, 126);
  617. G2L["3c"]["ZIndex"] = 2;
  618. G2L["3c"]["BorderSizePixel"] = 0;
  619. G2L["3c"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  620. G2L["3c"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  621. G2L["3c"]["TextWrapped"] = true;
  622. G2L["3c"]["TextTruncate"] = Enum.TextTruncate.AtEnd;
  623. G2L["3c"]["TextSize"] = 16;
  624. G2L["3c"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  625. -- G2L["3c"]["FontFace"] = ;
  626. G2L["3c"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  627. G2L["3c"]["PlaceholderText"] = [[Search..]];
  628. G2L["3c"]["Size"] = UDim2.new(0, 88, 0, 23);
  629. G2L["3c"]["BorderColor3"] = Color3.fromRGB(255, 120, 0);
  630. G2L["3c"]["Text"] = [[]];
  631. G2L["3c"]["Position"] = UDim2.new(0.45694321393966675, 0, 0.5, 0);
  632. G2L["3c"]["Font"] = Enum.Font.SourceSans;
  633. G2L["3c"]["ClearTextOnFocus"] = false;
  634.  
  635. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.TextBox.ImageLabel
  636. G2L["3d"] = Instance.new("ImageLabel", G2L["3b"]);
  637. G2L["3d"]["ZIndex"] = 2;
  638. G2L["3d"]["ScaleType"] = Enum.ScaleType.Fit;
  639. G2L["3d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  640. G2L["3d"]["AnchorPoint"] = Vector2.new(1, 0.5);
  641. G2L["3d"]["Image"] = [[rbxassetid://3605509925]];
  642. G2L["3d"]["Size"] = UDim2.new(0, 17, 0, 17);
  643. G2L["3d"]["BorderColor3"] = Color3.fromRGB(231, 255, 0);
  644. G2L["3d"]["BackgroundTransparency"] = 1;
  645. G2L["3d"]["Position"] = UDim2.new(1, 0, 0.5, 0);
  646.  
  647. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.TextBox.handler
  648. G2L["3e"] = Instance.new("LocalScript", G2L["3b"]);
  649. G2L["3e"]["Name"] = [[handler]];
  650.  
  651. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons
  652. G2L["3f"] = Instance.new("Frame", G2L["28"]);
  653. G2L["3f"]["ZIndex"] = 2;
  654. G2L["3f"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  655. G2L["3f"]["AnchorPoint"] = Vector2.new(0, 1);
  656. G2L["3f"]["BackgroundTransparency"] = 1;
  657. G2L["3f"]["Size"] = UDim2.new(1, -129, 0, 24);
  658. G2L["3f"]["Position"] = UDim2.new(0, 10, 1, -8);
  659. G2L["3f"]["Name"] = [[BottomButtons]];
  660.  
  661. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.UIListLayout
  662. G2L["40"] = Instance.new("UIListLayout", G2L["3f"]);
  663. G2L["40"]["VerticalAlignment"] = Enum.VerticalAlignment.Center;
  664. G2L["40"]["FillDirection"] = Enum.FillDirection.Horizontal;
  665. G2L["40"]["Padding"] = UDim.new(0, 5);
  666. G2L["40"]["SortOrder"] = Enum.SortOrder.LayoutOrder;
  667.  
  668. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn
  669. G2L["41"] = Instance.new("ImageButton", G2L["3f"]);
  670. G2L["41"]["Active"] = false;
  671. G2L["41"]["ZIndex"] = 2;
  672. G2L["41"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  673. G2L["41"]["ScaleType"] = Enum.ScaleType.Slice;
  674. G2L["41"]["SliceScale"] = 0.029999999329447746;
  675. G2L["41"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  676. G2L["41"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  677. G2L["41"]["Selectable"] = false;
  678. G2L["41"]["LayoutOrder"] = 1;
  679. G2L["41"]["Image"] = [[rbxassetid://3570695787]];
  680. G2L["41"]["Size"] = UDim2.new(0, 107, 0, 24);
  681. G2L["41"]["Name"] = [[ClearBtn]];
  682. G2L["41"]["Position"] = UDim2.new(0, 0, -1.5833333730697632, 0);
  683. G2L["41"]["BackgroundTransparency"] = 1;
  684.  
  685. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn.ImageButton
  686. G2L["42"] = Instance.new("ImageButton", G2L["41"]);
  687. G2L["42"]["ZIndex"] = 2;
  688. G2L["42"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  689. G2L["42"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  690. G2L["42"]["AnchorPoint"] = Vector2.new(0, 0.5);
  691. G2L["42"]["Image"] = [[http://www.roblox.com/asset/?id=6022668885]];
  692. G2L["42"]["Size"] = UDim2.new(0, 24, 0, 24);
  693. G2L["42"]["Position"] = UDim2.new(0.023000000044703484, 0, 0.5, 0);
  694. G2L["42"]["BackgroundTransparency"] = 1;
  695.  
  696. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn.TextLabel
  697. G2L["43"] = Instance.new("TextButton", G2L["41"]);
  698. G2L["43"]["TextWrapped"] = true;
  699. G2L["43"]["Active"] = false;
  700. G2L["43"]["ZIndex"] = 2;
  701. G2L["43"]["TextSize"] = 18;
  702. G2L["43"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  703. G2L["43"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  704. -- G2L["43"]["FontFace"] = ;
  705. G2L["43"]["Selectable"] = false;
  706. G2L["43"]["AnchorPoint"] = Vector2.new(0, 0.5);
  707. G2L["43"]["Size"] = UDim2.new(1, -40, 1, 0);
  708. G2L["43"]["Name"] = [[TextLabel]];
  709. G2L["43"]["Text"] = [[Clear]];
  710. G2L["43"]["Font"] = Enum.Font.SourceSans;
  711. G2L["43"]["Position"] = UDim2.new(0, 30, 0.5, 0);
  712. G2L["43"]["BackgroundTransparency"] = 1;
  713.  
  714. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn.Hitbox
  715. G2L["44"] = Instance.new("TextButton", G2L["41"]);
  716. G2L["44"]["ZIndex"] = 3;
  717. G2L["44"]["TextSize"] = 14;
  718. G2L["44"]["TextTransparency"] = 1;
  719. G2L["44"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  720. G2L["44"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  721. -- G2L["44"]["FontFace"] = ;
  722. G2L["44"]["Size"] = UDim2.new(1, 0, 1, 0);
  723. G2L["44"]["Name"] = [[Hitbox]];
  724. G2L["44"]["Text"] = [[]];
  725. G2L["44"]["Font"] = Enum.Font.SourceSans;
  726. G2L["44"]["BackgroundTransparency"] = 1;
  727.  
  728. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn.handler
  729. G2L["45"] = Instance.new("LocalScript", G2L["41"]);
  730. G2L["45"]["Name"] = [[handler]];
  731.  
  732. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn
  733. G2L["46"] = Instance.new("ImageButton", G2L["3f"]);
  734. G2L["46"]["Active"] = false;
  735. G2L["46"]["ZIndex"] = 2;
  736. G2L["46"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  737. G2L["46"]["ScaleType"] = Enum.ScaleType.Slice;
  738. G2L["46"]["SliceScale"] = 0.029999999329447746;
  739. G2L["46"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  740. G2L["46"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  741. G2L["46"]["Selectable"] = false;
  742. G2L["46"]["LayoutOrder"] = 3;
  743. G2L["46"]["Image"] = [[rbxassetid://3570695787]];
  744. G2L["46"]["Size"] = UDim2.new(0, 107, 0, 24);
  745. G2L["46"]["Name"] = [[SaveBtn]];
  746. G2L["46"]["Position"] = UDim2.new(0, 0, -1.5833333730697632, 0);
  747. G2L["46"]["BackgroundTransparency"] = 1;
  748.  
  749. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn.ImageButton
  750. G2L["47"] = Instance.new("ImageButton", G2L["46"]);
  751. G2L["47"]["ZIndex"] = 2;
  752. G2L["47"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  753. G2L["47"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  754. G2L["47"]["AnchorPoint"] = Vector2.new(0, 0.5);
  755. G2L["47"]["Image"] = [[http://www.roblox.com/asset/?id=6035067857]];
  756. G2L["47"]["Size"] = UDim2.new(0, 24, 0, 24);
  757. G2L["47"]["Position"] = UDim2.new(0.023000000044703484, 0, 0.5, 0);
  758. G2L["47"]["BackgroundTransparency"] = 1;
  759.  
  760. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn.TextLabel
  761. G2L["48"] = Instance.new("TextButton", G2L["46"]);
  762. G2L["48"]["TextWrapped"] = true;
  763. G2L["48"]["Active"] = false;
  764. G2L["48"]["ZIndex"] = 2;
  765. G2L["48"]["TextSize"] = 18;
  766. G2L["48"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  767. G2L["48"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  768. -- G2L["48"]["FontFace"] = ;
  769. G2L["48"]["Selectable"] = false;
  770. G2L["48"]["AnchorPoint"] = Vector2.new(0, 0.5);
  771. G2L["48"]["Size"] = UDim2.new(1, -40, 1, 0);
  772. G2L["48"]["Name"] = [[TextLabel]];
  773. G2L["48"]["Text"] = [[Save Script]];
  774. G2L["48"]["Font"] = Enum.Font.SourceSans;
  775. G2L["48"]["Position"] = UDim2.new(0, 30, 0.5, 0);
  776. G2L["48"]["BackgroundTransparency"] = 1;
  777.  
  778. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn.Hitbox
  779. G2L["49"] = Instance.new("TextButton", G2L["46"]);
  780. G2L["49"]["ZIndex"] = 3;
  781. G2L["49"]["TextSize"] = 14;
  782. G2L["49"]["TextTransparency"] = 1;
  783. G2L["49"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  784. G2L["49"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  785. -- G2L["49"]["FontFace"] = ;
  786. G2L["49"]["Size"] = UDim2.new(1, 0, 1, 0);
  787. G2L["49"]["Name"] = [[Hitbox]];
  788. G2L["49"]["Text"] = [[]];
  789. G2L["49"]["Font"] = Enum.Font.SourceSans;
  790. G2L["49"]["BackgroundTransparency"] = 1;
  791.  
  792. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn.handler
  793. G2L["4a"] = Instance.new("LocalScript", G2L["46"]);
  794. G2L["4a"]["Name"] = [[handler]];
  795.  
  796. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn
  797. G2L["4b"] = Instance.new("ImageButton", G2L["3f"]);
  798. G2L["4b"]["Active"] = false;
  799. G2L["4b"]["ZIndex"] = 2;
  800. G2L["4b"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  801. G2L["4b"]["ScaleType"] = Enum.ScaleType.Slice;
  802. G2L["4b"]["SliceScale"] = 0.029999999329447746;
  803. G2L["4b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  804. G2L["4b"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  805. G2L["4b"]["Selectable"] = false;
  806. G2L["4b"]["LayoutOrder"] = 3;
  807. G2L["4b"]["Image"] = [[rbxassetid://3570695787]];
  808. G2L["4b"]["Size"] = UDim2.new(0, 107, 0, 24);
  809. G2L["4b"]["Name"] = [[HideBtn]];
  810. G2L["4b"]["Position"] = UDim2.new(0, 0, -1.5833333730697632, 0);
  811. G2L["4b"]["BackgroundTransparency"] = 1;
  812.  
  813. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn.ImageButton
  814. G2L["4c"] = Instance.new("ImageButton", G2L["4b"]);
  815. G2L["4c"]["ZIndex"] = 2;
  816. G2L["4c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  817. G2L["4c"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  818. G2L["4c"]["AnchorPoint"] = Vector2.new(0, 0.5);
  819. G2L["4c"]["Image"] = [[http://www.roblox.com/asset/?id=6031075929]];
  820. G2L["4c"]["Size"] = UDim2.new(0, 24, 0, 24);
  821. G2L["4c"]["Position"] = UDim2.new(0.023000000044703484, 0, 0.5, 0);
  822. G2L["4c"]["BackgroundTransparency"] = 1;
  823.  
  824. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn.TextLabel
  825. G2L["4d"] = Instance.new("TextButton", G2L["4b"]);
  826. G2L["4d"]["TextWrapped"] = true;
  827. G2L["4d"]["Active"] = false;
  828. G2L["4d"]["ZIndex"] = 2;
  829. G2L["4d"]["TextSize"] = 18;
  830. G2L["4d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  831. G2L["4d"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  832. -- G2L["4d"]["FontFace"] = ;
  833. G2L["4d"]["Selectable"] = false;
  834. G2L["4d"]["AnchorPoint"] = Vector2.new(0, 0.5);
  835. G2L["4d"]["Size"] = UDim2.new(1, -40, 1, 0);
  836. G2L["4d"]["Name"] = [[TextLabel]];
  837. G2L["4d"]["Text"] = [[Hide]];
  838. G2L["4d"]["Font"] = Enum.Font.SourceSans;
  839. G2L["4d"]["Position"] = UDim2.new(0, 30, 0.5, 0);
  840. G2L["4d"]["BackgroundTransparency"] = 1;
  841.  
  842. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn.Hitbox
  843. G2L["4e"] = Instance.new("TextButton", G2L["4b"]);
  844. G2L["4e"]["ZIndex"] = 3;
  845. G2L["4e"]["TextSize"] = 14;
  846. G2L["4e"]["TextTransparency"] = 1;
  847. G2L["4e"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  848. G2L["4e"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  849. -- G2L["4e"]["FontFace"] = ;
  850. G2L["4e"]["Size"] = UDim2.new(1, 0, 1, 0);
  851. G2L["4e"]["Name"] = [[Hitbox]];
  852. G2L["4e"]["Text"] = [[]];
  853. G2L["4e"]["Font"] = Enum.Font.SourceSans;
  854. G2L["4e"]["BackgroundTransparency"] = 1;
  855.  
  856. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn.handler
  857. G2L["4f"] = Instance.new("LocalScript", G2L["4b"]);
  858. G2L["4f"]["Name"] = [[handler]];
  859.  
  860. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn
  861. G2L["50"] = Instance.new("ImageButton", G2L["3f"]);
  862. G2L["50"]["ZIndex"] = 2;
  863. G2L["50"]["BorderSizePixel"] = 0;
  864. G2L["50"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  865. G2L["50"]["ScaleType"] = Enum.ScaleType.Slice;
  866. G2L["50"]["Modal"] = true;
  867. G2L["50"]["SliceScale"] = 0.029999999329447746;
  868. G2L["50"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  869. G2L["50"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  870. G2L["50"]["Selectable"] = false;
  871. G2L["50"]["Image"] = [[rbxassetid://3570695787]];
  872. G2L["50"]["Size"] = UDim2.new(0, 107, 0, 24);
  873. G2L["50"]["Name"] = [[ExecuteBtn]];
  874. G2L["50"]["Position"] = UDim2.new(0, 0, -1.5833333730697632, 0);
  875. G2L["50"]["BackgroundTransparency"] = 1;
  876.  
  877. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn.ImageButton
  878. G2L["51"] = Instance.new("ImageButton", G2L["50"]);
  879. G2L["51"]["ZIndex"] = 2;
  880. G2L["51"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  881. G2L["51"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  882. G2L["51"]["AnchorPoint"] = Vector2.new(0, 0.5);
  883. G2L["51"]["Image"] = [[http://www.roblox.com/asset/?id=6026663699]];
  884. G2L["51"]["Size"] = UDim2.new(0, 24, 0, 24);
  885. G2L["51"]["Position"] = UDim2.new(0.022900763899087906, 0, 0.5, 0);
  886. G2L["51"]["BackgroundTransparency"] = 1;
  887.  
  888. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn.LocalScript
  889. G2L["52"] = Instance.new("LocalScript", G2L["50"]);
  890.  
  891.  
  892. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn.TextLabel
  893. G2L["53"] = Instance.new("TextButton", G2L["50"]);
  894. G2L["53"]["TextWrapped"] = true;
  895. G2L["53"]["Active"] = false;
  896. G2L["53"]["ZIndex"] = 2;
  897. G2L["53"]["TextSize"] = 18;
  898. G2L["53"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  899. G2L["53"]["TextColor3"] = Color3.fromRGB(171, 171, 171);
  900. -- G2L["53"]["FontFace"] = ;
  901. G2L["53"]["Selectable"] = false;
  902. G2L["53"]["AnchorPoint"] = Vector2.new(0, 0.5);
  903. G2L["53"]["Size"] = UDim2.new(1, -40, 1, 0);
  904. G2L["53"]["Name"] = [[TextLabel]];
  905. G2L["53"]["Text"] = [[Execute]];
  906. G2L["53"]["Font"] = Enum.Font.SourceSans;
  907. G2L["53"]["Position"] = UDim2.new(0, 30, 0.5, 0);
  908. G2L["53"]["BackgroundTransparency"] = 1;
  909.  
  910. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn.Hitbox
  911. G2L["54"] = Instance.new("TextButton", G2L["50"]);
  912. G2L["54"]["ZIndex"] = 3;
  913. G2L["54"]["TextSize"] = 14;
  914. G2L["54"]["TextTransparency"] = 1;
  915. G2L["54"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  916. G2L["54"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  917. -- G2L["54"]["FontFace"] = ;
  918. G2L["54"]["Size"] = UDim2.new(1, 0, 1, 0);
  919. G2L["54"]["Name"] = [[Hitbox]];
  920. G2L["54"]["Text"] = [[]];
  921. G2L["54"]["Font"] = Enum.Font.SourceSans;
  922. G2L["54"]["BackgroundTransparency"] = 1;
  923.  
  924. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.handler
  925. G2L["55"] = Instance.new("LocalScript", G2L["3f"]);
  926. G2L["55"]["Name"] = [[handler]];
  927.  
  928. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts
  929. G2L["56"] = Instance.new("ScrollingFrame", G2L["28"]);
  930. G2L["56"]["Active"] = true;
  931. G2L["56"]["BorderSizePixel"] = 0;
  932. G2L["56"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  933. G2L["56"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  934. G2L["56"]["BackgroundTransparency"] = 1;
  935. G2L["56"]["Size"] = UDim2.new(1, -130, 0, 29);
  936. G2L["56"]["ScrollBarImageColor3"] = Color3.fromRGB(168, 168, 168);
  937. G2L["56"]["ScrollBarThickness"] = 3;
  938. G2L["56"]["Position"] = UDim2.new(0, 10, 0, 5);
  939. G2L["56"]["Name"] = [[OpenScripts]];
  940.  
  941. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.UIListLayout
  942. G2L["57"] = Instance.new("UIListLayout", G2L["56"]);
  943. G2L["57"]["VerticalAlignment"] = Enum.VerticalAlignment.Center;
  944. G2L["57"]["FillDirection"] = Enum.FillDirection.Horizontal;
  945. G2L["57"]["Padding"] = UDim.new(0, 5);
  946.  
  947. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.999
  948. G2L["58"] = Instance.new("ImageButton", G2L["56"]);
  949. G2L["58"]["Active"] = false;
  950. G2L["58"]["ZIndex"] = 2;
  951. G2L["58"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  952. G2L["58"]["ScaleType"] = Enum.ScaleType.Slice;
  953. G2L["58"]["SliceScale"] = 0.029999999329447746;
  954. G2L["58"]["BackgroundColor3"] = Color3.fromRGB(26, 26, 26);
  955. G2L["58"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  956. G2L["58"]["Selectable"] = false;
  957. G2L["58"]["LayoutOrder"] = 500;
  958. G2L["58"]["Image"] = [[rbxassetid://3570695787]];
  959. G2L["58"]["Size"] = UDim2.new(0, 24, 0, 22);
  960. G2L["58"]["Name"] = [[999]];
  961. G2L["58"]["Position"] = UDim2.new(0.1694599688053131, 0, 0, 0);
  962. G2L["58"]["BackgroundTransparency"] = 1;
  963.  
  964. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.999.Hitbox
  965. G2L["59"] = Instance.new("TextButton", G2L["58"]);
  966. G2L["59"]["TextWrapped"] = true;
  967. G2L["59"]["Active"] = false;
  968. G2L["59"]["ZIndex"] = 2;
  969. G2L["59"]["TextSize"] = 14;
  970. G2L["59"]["TextScaled"] = true;
  971. G2L["59"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  972. G2L["59"]["TextColor3"] = Color3.fromRGB(222, 222, 222);
  973. -- G2L["59"]["FontFace"] = ;
  974. G2L["59"]["Selectable"] = false;
  975. G2L["59"]["Size"] = UDim2.new(1, 0, 1, 0);
  976. G2L["59"]["Name"] = [[Hitbox]];
  977. G2L["59"]["Text"] = [[+]];
  978. G2L["59"]["Font"] = Enum.Font.SourceSans;
  979. G2L["59"]["BackgroundTransparency"] = 1;
  980.  
  981. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.1
  982. G2L["5a"] = Instance.new("ImageButton", G2L["56"]);
  983. G2L["5a"]["Active"] = false;
  984. G2L["5a"]["ZIndex"] = 2;
  985. G2L["5a"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  986. G2L["5a"]["ScaleType"] = Enum.ScaleType.Slice;
  987. G2L["5a"]["SliceScale"] = 0.029999999329447746;
  988. G2L["5a"]["BackgroundColor3"] = Color3.fromRGB(26, 26, 26);
  989. G2L["5a"]["ImageColor3"] = Color3.fromRGB(26, 26, 26);
  990. G2L["5a"]["Selectable"] = false;
  991. G2L["5a"]["Image"] = [[rbxassetid://3570695787]];
  992. G2L["5a"]["Size"] = UDim2.new(0, 86, 0, 22);
  993. G2L["5a"]["Name"] = [[1]];
  994. G2L["5a"]["BackgroundTransparency"] = 1;
  995.  
  996. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.1.Text
  997. G2L["5b"] = Instance.new("TextButton", G2L["5a"]);
  998. G2L["5b"]["Active"] = false;
  999. G2L["5b"]["ZIndex"] = 2;
  1000. G2L["5b"]["TextSize"] = 15;
  1001. G2L["5b"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  1002. G2L["5b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1003. G2L["5b"]["TextColor3"] = Color3.fromRGB(222, 222, 222);
  1004. -- G2L["5b"]["FontFace"] = ;
  1005. G2L["5b"]["Selectable"] = false;
  1006. G2L["5b"]["Size"] = UDim2.new(0.6395349502563477, 0, 1, 0);
  1007. G2L["5b"]["Name"] = [[Text]];
  1008. G2L["5b"]["Text"] = [[Script 1]];
  1009. G2L["5b"]["Font"] = Enum.Font.SourceSansBold;
  1010. G2L["5b"]["Position"] = UDim2.new(0.151162788271904, 0, 0, 0);
  1011. G2L["5b"]["BackgroundTransparency"] = 1;
  1012.  
  1013. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.1.X
  1014. G2L["5c"] = Instance.new("TextButton", G2L["5a"]);
  1015. G2L["5c"]["ZIndex"] = 10;
  1016. G2L["5c"]["TextSize"] = 16;
  1017. G2L["5c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1018. G2L["5c"]["TextColor3"] = Color3.fromRGB(62, 62, 62);
  1019. -- G2L["5c"]["FontFace"] = ;
  1020. G2L["5c"]["AnchorPoint"] = Vector2.new(1, 0.5);
  1021. G2L["5c"]["Size"] = UDim2.new(0, 20, 0, 20);
  1022. G2L["5c"]["Name"] = [[X]];
  1023. G2L["5c"]["Text"] = [[x]];
  1024. G2L["5c"]["Font"] = Enum.Font.SourceSans;
  1025. G2L["5c"]["Position"] = UDim2.new(1, 0, 0.5, 0);
  1026. G2L["5c"]["BackgroundTransparency"] = 1;
  1027.  
  1028. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.OpenScripts.1.Hitbox
  1029. G2L["5d"] = Instance.new("TextButton", G2L["5a"]);
  1030. G2L["5d"]["ZIndex"] = 3;
  1031. G2L["5d"]["TextSize"] = 14;
  1032. G2L["5d"]["TextTransparency"] = 1;
  1033. G2L["5d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1034. G2L["5d"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  1035. -- G2L["5d"]["FontFace"] = ;
  1036. G2L["5d"]["Size"] = UDim2.new(1, 0, 1, 0);
  1037. G2L["5d"]["Name"] = [[Hitbox]];
  1038. G2L["5d"]["Text"] = [[]];
  1039. G2L["5d"]["Font"] = Enum.Font.SourceSans;
  1040. G2L["5d"]["BackgroundTransparency"] = 1;
  1041.  
  1042. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games
  1043. G2L["5e"] = Instance.new("ImageLabel", G2L["23"]);
  1044. G2L["5e"]["ZIndex"] = 0;
  1045. G2L["5e"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  1046. G2L["5e"]["ScaleType"] = Enum.ScaleType.Slice;
  1047. G2L["5e"]["BackgroundColor3"] = Color3.fromRGB(16, 16, 16);
  1048. G2L["5e"]["ImageColor3"] = Color3.fromRGB(14, 14, 14);
  1049. G2L["5e"]["SliceScale"] = 0.029999999329447746;
  1050. G2L["5e"]["Visible"] = false;
  1051. G2L["5e"]["Image"] = [[rbxassetid://3570695787]];
  1052. G2L["5e"]["Size"] = UDim2.new(1, 0, 1, 0);
  1053. G2L["5e"]["Name"] = [[Games]];
  1054. G2L["5e"]["BackgroundTransparency"] = 1;
  1055. G2L["5e"]["Position"] = UDim2.new(0.00032929747248999774, 0, -0.0029999851249158382, 0);
  1056.  
  1057. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody
  1058. G2L["5f"] = Instance.new("Frame", G2L["5e"]);
  1059. G2L["5f"]["ZIndex"] = 0;
  1060. G2L["5f"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1061. G2L["5f"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  1062. G2L["5f"]["BackgroundTransparency"] = 1;
  1063. G2L["5f"]["LayoutOrder"] = 5;
  1064. G2L["5f"]["Size"] = UDim2.new(1, 0, 1, 0);
  1065. G2L["5f"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  1066. G2L["5f"]["Name"] = [[InnerBody]];
  1067.  
  1068. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.Title
  1069. G2L["60"] = Instance.new("TextLabel", G2L["5f"]);
  1070. G2L["60"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1071. -- G2L["60"]["FontFace"] = ;
  1072. G2L["60"]["TextSize"] = 23;
  1073. G2L["60"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1074. G2L["60"]["Size"] = UDim2.new(0, 100, 0, 40);
  1075. G2L["60"]["Text"] = [[Games]];
  1076. G2L["60"]["Name"] = [[Title]];
  1077. G2L["60"]["Font"] = Enum.Font.SourceSansBold;
  1078. G2L["60"]["BackgroundTransparency"] = 1;
  1079.  
  1080. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame
  1081. G2L["61"] = Instance.new("ScrollingFrame", G2L["5f"]);
  1082. G2L["61"]["Active"] = true;
  1083. G2L["61"]["BorderSizePixel"] = 0;
  1084. G2L["61"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  1085. G2L["61"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1086. G2L["61"]["BackgroundTransparency"] = 1;
  1087. G2L["61"]["Size"] = UDim2.new(1, 0, 1, -40);
  1088. G2L["61"]["ScrollBarImageColor3"] = Color3.fromRGB(168, 168, 168);
  1089. G2L["61"]["ScrollBarThickness"] = 5;
  1090. G2L["61"]["Position"] = UDim2.new(0, 0, 0, 40);
  1091.  
  1092. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.UIListLayout
  1093. G2L["62"] = Instance.new("UIListLayout", G2L["61"]);
  1094. G2L["62"]["HorizontalAlignment"] = Enum.HorizontalAlignment.Center;
  1095. G2L["62"]["Padding"] = UDim.new(0, 5);
  1096. G2L["62"]["SortOrder"] = Enum.SortOrder.LayoutOrder;
  1097.  
  1098. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy
  1099. G2L["63"] = Instance.new("Frame", G2L["61"]);
  1100. G2L["63"]["BackgroundColor3"] = Color3.fromRGB(38, 38, 38);
  1101. G2L["63"]["AnchorPoint"] = Vector2.new(1, 0);
  1102. G2L["63"]["LayoutOrder"] = 1;
  1103. G2L["63"]["Size"] = UDim2.new(1, -50, 0, 100);
  1104. G2L["63"]["Name"] = [[dummy]];
  1105.  
  1106. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.UICorner
  1107. G2L["64"] = Instance.new("UICorner", G2L["63"]);
  1108.  
  1109.  
  1110. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.GameIcon
  1111. G2L["65"] = Instance.new("ImageLabel", G2L["63"]);
  1112. G2L["65"]["ScaleType"] = Enum.ScaleType.Crop;
  1113. G2L["65"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1114. G2L["65"]["Image"] = [[rbxassetid://7007977848]];
  1115. G2L["65"]["Size"] = UDim2.new(0, 120, 0, 100);
  1116. G2L["65"]["Name"] = [[GameIcon]];
  1117. G2L["65"]["BackgroundTransparency"] = 1;
  1118.  
  1119. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.GameIcon.UICorner
  1120. G2L["66"] = Instance.new("UICorner", G2L["65"]);
  1121.  
  1122.  
  1123. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.GameIcon.fix
  1124. G2L["67"] = Instance.new("Frame", G2L["65"]);
  1125. G2L["67"]["BorderSizePixel"] = 0;
  1126. G2L["67"]["BackgroundColor3"] = Color3.fromRGB(38, 38, 38);
  1127. G2L["67"]["AnchorPoint"] = Vector2.new(1, 0);
  1128. G2L["67"]["Size"] = UDim2.new(0, 5, 1, 0);
  1129. G2L["67"]["Position"] = UDim2.new(1, 0, 0, 0);
  1130. G2L["67"]["Name"] = [[fix]];
  1131.  
  1132. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.GameIcon.fix.UIGradient
  1133. G2L["68"] = Instance.new("UIGradient", G2L["67"]);
  1134. G2L["68"]["Rotation"] = 90;
  1135. G2L["68"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(168, 168, 168)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 255, 255))};
  1136.  
  1137. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.UIGradient
  1138. G2L["69"] = Instance.new("UIGradient", G2L["63"]);
  1139. G2L["69"]["Rotation"] = 90;
  1140. G2L["69"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(168, 168, 168)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 255, 255))};
  1141.  
  1142. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Title
  1143. G2L["6a"] = Instance.new("TextLabel", G2L["63"]);
  1144. G2L["6a"]["TextWrapped"] = true;
  1145. G2L["6a"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  1146. G2L["6a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1147. -- G2L["6a"]["FontFace"] = ;
  1148. G2L["6a"]["TextSize"] = 23;
  1149. G2L["6a"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1150. G2L["6a"]["Size"] = UDim2.new(1, -180, 0, 40);
  1151. G2L["6a"]["Text"] = [[GameName]];
  1152. G2L["6a"]["Name"] = [[Title]];
  1153. G2L["6a"]["Font"] = Enum.Font.SourceSansBold;
  1154. G2L["6a"]["BackgroundTransparency"] = 1;
  1155. G2L["6a"]["Position"] = UDim2.new(0, 130, 0, 0);
  1156.  
  1157. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Backdoors
  1158. G2L["6b"] = Instance.new("TextLabel", G2L["63"]);
  1159. G2L["6b"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  1160. G2L["6b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1161. -- G2L["6b"]["FontFace"] = ;
  1162. G2L["6b"]["TextSize"] = 15;
  1163. G2L["6b"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1164. G2L["6b"]["Size"] = UDim2.new(0, 100, 0, 20);
  1165. G2L["6b"]["Text"] = [[- Backdoors: %d]];
  1166. G2L["6b"]["Name"] = [[Backdoors]];
  1167. G2L["6b"]["Font"] = Enum.Font.SourceSans;
  1168. G2L["6b"]["BackgroundTransparency"] = 1;
  1169. G2L["6b"]["Position"] = UDim2.new(0, 130, 0, 40);
  1170.  
  1171. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Date
  1172. G2L["6c"] = Instance.new("TextLabel", G2L["63"]);
  1173. G2L["6c"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  1174. G2L["6c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1175. -- G2L["6c"]["FontFace"] = ;
  1176. G2L["6c"]["TextSize"] = 15;
  1177. G2L["6c"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1178. G2L["6c"]["Size"] = UDim2.new(0, 100, 0, 20);
  1179. G2L["6c"]["Text"] = [[- Scanned on: %s]];
  1180. G2L["6c"]["Name"] = [[Date]];
  1181. G2L["6c"]["Font"] = Enum.Font.SourceSans;
  1182. G2L["6c"]["BackgroundTransparency"] = 1;
  1183. G2L["6c"]["Position"] = UDim2.new(0, 130, 0, 60);
  1184.  
  1185. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play
  1186. G2L["6d"] = Instance.new("Frame", G2L["63"]);
  1187. G2L["6d"]["BackgroundColor3"] = Color3.fromRGB(0, 186, 78);
  1188. G2L["6d"]["AnchorPoint"] = Vector2.new(1, 0);
  1189. G2L["6d"]["Size"] = UDim2.new(0, 30, 1, 0);
  1190. G2L["6d"]["Position"] = UDim2.new(1, 0, 0, 0);
  1191. G2L["6d"]["Name"] = [[Play]];
  1192.  
  1193. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play.UICorner
  1194. G2L["6e"] = Instance.new("UICorner", G2L["6d"]);
  1195.  
  1196.  
  1197. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play.fix
  1198. G2L["6f"] = Instance.new("Frame", G2L["6d"]);
  1199. G2L["6f"]["BorderSizePixel"] = 0;
  1200. G2L["6f"]["BackgroundColor3"] = Color3.fromRGB(38, 38, 38);
  1201. G2L["6f"]["Size"] = UDim2.new(0, 5, 1, 0);
  1202. G2L["6f"]["Name"] = [[fix]];
  1203.  
  1204. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play.fix.UIGradient
  1205. G2L["70"] = Instance.new("UIGradient", G2L["6f"]);
  1206. G2L["70"]["Rotation"] = 90;
  1207. G2L["70"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(168, 168, 168)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 255, 255))};
  1208.  
  1209. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play.Icon
  1210. G2L["71"] = Instance.new("ImageLabel", G2L["6d"]);
  1211. G2L["71"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1212. G2L["71"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  1213. G2L["71"]["Image"] = [[rbxassetid://7008236803]];
  1214. G2L["71"]["Size"] = UDim2.new(0, 15, 0, 15);
  1215. G2L["71"]["Name"] = [[Icon]];
  1216. G2L["71"]["BackgroundTransparency"] = 1;
  1217. G2L["71"]["Position"] = UDim2.new(0.5, 3, 0.5, 0);
  1218.  
  1219. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.dummy.Play.Hitbox
  1220. G2L["72"] = Instance.new("TextButton", G2L["6d"]);
  1221. G2L["72"]["TextSize"] = 14;
  1222. G2L["72"]["TextTransparency"] = 1;
  1223. G2L["72"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1224. G2L["72"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  1225. -- G2L["72"]["FontFace"] = ;
  1226. G2L["72"]["Size"] = UDim2.new(1, 0, 1, 0);
  1227. G2L["72"]["Name"] = [[Hitbox]];
  1228. G2L["72"]["Text"] = [[]];
  1229. G2L["72"]["Font"] = Enum.Font.SourceSans;
  1230. G2L["72"]["BackgroundTransparency"] = 1;
  1231.  
  1232. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Games.InnerBody.ScrollingFrame.info
  1233. G2L["73"] = Instance.new("TextLabel", G2L["61"]);
  1234. G2L["73"]["TextWrapped"] = true;
  1235. G2L["73"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1236. -- G2L["73"]["FontFace"] = ;
  1237. G2L["73"]["TextSize"] = 18;
  1238. G2L["73"]["TextColor3"] = Color3.fromRGB(15, 140, 217);
  1239. G2L["73"]["Size"] = UDim2.new(1, 0, 0, 50);
  1240. G2L["73"]["Text"] = [[Scan games and save here all successfully scanned ones!]];
  1241. G2L["73"]["Name"] = [[info]];
  1242. G2L["73"]["Font"] = Enum.Font.Nunito;
  1243. G2L["73"]["BackgroundTransparency"] = 1;
  1244.  
  1245. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings
  1246. G2L["74"] = Instance.new("ImageLabel", G2L["23"]);
  1247. G2L["74"]["ZIndex"] = 2;
  1248. G2L["74"]["SliceCenter"] = Rect.new(100, 100, 100, 100);
  1249. G2L["74"]["ScaleType"] = Enum.ScaleType.Slice;
  1250. G2L["74"]["BackgroundColor3"] = Color3.fromRGB(16, 16, 16);
  1251. G2L["74"]["ImageColor3"] = Color3.fromRGB(14, 14, 14);
  1252. G2L["74"]["SliceScale"] = 0.029999999329447746;
  1253. G2L["74"]["Visible"] = false;
  1254. G2L["74"]["Image"] = [[rbxassetid://3570695787]];
  1255. G2L["74"]["Size"] = UDim2.new(1, 0, 1, 0);
  1256. G2L["74"]["Name"] = [[Settings]];
  1257. G2L["74"]["BackgroundTransparency"] = 1;
  1258. G2L["74"]["Position"] = UDim2.new(0, 0, -0.003000000026077032, 0);
  1259.  
  1260. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.Borders
  1261. G2L["75"] = Instance.new("Folder", G2L["74"]);
  1262. G2L["75"]["Name"] = [[Borders]];
  1263.  
  1264. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.Borders.Frame
  1265. G2L["76"] = Instance.new("Frame", G2L["75"]);
  1266. G2L["76"]["BorderSizePixel"] = 0;
  1267. G2L["76"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  1268. G2L["76"]["Size"] = UDim2.new(0, 9, 0, 313);
  1269. G2L["76"]["Position"] = UDim2.new(-9.136999779002508e-08, 0, 0, 0);
  1270.  
  1271. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.Borders.Frame
  1272. G2L["77"] = Instance.new("Frame", G2L["75"]);
  1273. G2L["77"]["BorderSizePixel"] = 0;
  1274. G2L["77"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  1275. G2L["77"]["Size"] = UDim2.new(0, 663, 0, 6);
  1276. G2L["77"]["Position"] = UDim2.new(-4.5963965078499314e-08, 0, 0, 0);
  1277.  
  1278. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody
  1279. G2L["78"] = Instance.new("Frame", G2L["74"]);
  1280. G2L["78"]["ZIndex"] = 2;
  1281. G2L["78"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1282. G2L["78"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  1283. G2L["78"]["BackgroundTransparency"] = 1;
  1284. G2L["78"]["LayoutOrder"] = 5;
  1285. G2L["78"]["Size"] = UDim2.new(1, 0, 1, 0);
  1286. G2L["78"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  1287. G2L["78"]["Name"] = [[InnerBody]];
  1288.  
  1289. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.Title
  1290. G2L["79"] = Instance.new("TextLabel", G2L["78"]);
  1291. G2L["79"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1292. -- G2L["79"]["FontFace"] = ;
  1293. G2L["79"]["TextSize"] = 23;
  1294. G2L["79"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1295. G2L["79"]["Size"] = UDim2.new(0, 100, 0, 40);
  1296. G2L["79"]["Text"] = [[Settings]];
  1297. G2L["79"]["Name"] = [[Title]];
  1298. G2L["79"]["Font"] = Enum.Font.SourceSansBold;
  1299. G2L["79"]["BackgroundTransparency"] = 1;
  1300.  
  1301. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.ScrollingFrame
  1302. G2L["7a"] = Instance.new("ScrollingFrame", G2L["78"]);
  1303. G2L["7a"]["Active"] = true;
  1304. G2L["7a"]["BorderSizePixel"] = 0;
  1305. G2L["7a"]["CanvasSize"] = UDim2.new(0, 0, 0, 0);
  1306. G2L["7a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1307. G2L["7a"]["BackgroundTransparency"] = 1;
  1308. G2L["7a"]["Size"] = UDim2.new(1, 0, 1, -43);
  1309. G2L["7a"]["ScrollBarImageColor3"] = Color3.fromRGB(168, 168, 168);
  1310. G2L["7a"]["ScrollBarThickness"] = 5;
  1311. G2L["7a"]["Position"] = UDim2.new(0, 0, 0, 43);
  1312.  
  1313. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.ScrollingFrame.UIListLayout
  1314. G2L["7b"] = Instance.new("UIListLayout", G2L["7a"]);
  1315. G2L["7b"]["HorizontalAlignment"] = Enum.HorizontalAlignment.Center;
  1316. G2L["7b"]["Padding"] = UDim.new(0, 5);
  1317. G2L["7b"]["SortOrder"] = Enum.SortOrder.LayoutOrder;
  1318.  
  1319. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.ScrollingFrame.dummy
  1320. G2L["7c"] = Instance.new("Frame", G2L["7a"]);
  1321. G2L["7c"]["BackgroundColor3"] = Color3.fromRGB(38, 38, 38);
  1322. G2L["7c"]["AnchorPoint"] = Vector2.new(1, 0);
  1323. G2L["7c"]["BackgroundTransparency"] = 1;
  1324. G2L["7c"]["Size"] = UDim2.new(1, -50, 0, 25);
  1325. G2L["7c"]["Name"] = [[dummy]];
  1326.  
  1327. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.ScrollingFrame.dummy.UICorner
  1328. G2L["7d"] = Instance.new("UICorner", G2L["7c"]);
  1329.  
  1330.  
  1331. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.InnerBody.ScrollingFrame.dummy.Title
  1332. G2L["7e"] = Instance.new("TextLabel", G2L["7c"]);
  1333. G2L["7e"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  1334. G2L["7e"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1335. -- G2L["7e"]["FontFace"] = ;
  1336. G2L["7e"]["TextSize"] = 18;
  1337. G2L["7e"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1338. G2L["7e"]["AnchorPoint"] = Vector2.new(0, 0.5);
  1339. G2L["7e"]["Size"] = UDim2.new(0, 100, 1, 0);
  1340. G2L["7e"]["Text"] = [[Name]];
  1341. G2L["7e"]["Name"] = [[Title]];
  1342. G2L["7e"]["Font"] = Enum.Font.SourceSans;
  1343. G2L["7e"]["BackgroundTransparency"] = 1;
  1344. G2L["7e"]["Position"] = UDim2.new(0, 0, 0.5, 0);
  1345.  
  1346. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.handler
  1347. G2L["7f"] = Instance.new("LocalScript", G2L["74"]);
  1348. G2L["7f"]["Name"] = [[handler]];
  1349.  
  1350. -- StarterGui.backdoor.exe v8.Main.drag
  1351. G2L["80"] = Instance.new("LocalScript", G2L["2"]);
  1352. G2L["80"]["Name"] = [[drag]];
  1353.  
  1354. -- StarterGui.backdoor.exe v8.Main.Resize
  1355. G2L["81"] = Instance.new("TextButton", G2L["2"]);
  1356. G2L["81"]["Active"] = false;
  1357. G2L["81"]["TextSize"] = 14;
  1358. G2L["81"]["TextTransparency"] = 1;
  1359. G2L["81"]["BackgroundColor3"] = Color3.fromRGB(199, 199, 199);
  1360. G2L["81"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  1361. -- G2L["81"]["FontFace"] = ;
  1362. G2L["81"]["AnchorPoint"] = Vector2.new(1, 1);
  1363. G2L["81"]["Size"] = UDim2.new(0, 10, 0, 10);
  1364. G2L["81"]["Name"] = [[Resize]];
  1365. G2L["81"]["Font"] = Enum.Font.SourceSans;
  1366. G2L["81"]["Position"] = UDim2.new(1, 0, 1, 0);
  1367.  
  1368. -- StarterGui.backdoor.exe v8.Main.Resize.UICorner
  1369. G2L["82"] = Instance.new("UICorner", G2L["81"]);
  1370. G2L["82"]["CornerRadius"] = UDim.new(0, 2);
  1371.  
  1372. -- StarterGui.backdoor.exe v8.Main.Resize.handler
  1373. G2L["83"] = Instance.new("LocalScript", G2L["81"]);
  1374. G2L["83"]["Name"] = [[handler]];
  1375.  
  1376. -- StarterGui.backdoor.exe v8.Main.SavePopup
  1377. G2L["84"] = Instance.new("TextButton", G2L["2"]);
  1378. G2L["84"]["ZIndex"] = 3;
  1379. G2L["84"]["BorderSizePixel"] = 0;
  1380. G2L["84"]["AutoButtonColor"] = false;
  1381. G2L["84"]["TextSize"] = 14;
  1382. G2L["84"]["TextTransparency"] = 1;
  1383. G2L["84"]["BackgroundColor3"] = Color3.fromRGB(14, 14, 14);
  1384. G2L["84"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  1385. -- G2L["84"]["FontFace"] = ;
  1386. G2L["84"]["Visible"] = false;
  1387. G2L["84"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  1388. G2L["84"]["Size"] = UDim2.new(0, 190, 0, 130);
  1389. G2L["84"]["Name"] = [[SavePopup]];
  1390. G2L["84"]["BorderColor3"] = Color3.fromRGB(14, 14, 14);
  1391. G2L["84"]["Text"] = [[]];
  1392. G2L["84"]["Font"] = Enum.Font.SourceSans;
  1393. G2L["84"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  1394.  
  1395. -- StarterGui.backdoor.exe v8.Main.SavePopup.UICorner
  1396. G2L["85"] = Instance.new("UICorner", G2L["84"]);
  1397.  
  1398.  
  1399. -- StarterGui.backdoor.exe v8.Main.SavePopup.handler
  1400. G2L["86"] = Instance.new("LocalScript", G2L["84"]);
  1401. G2L["86"]["Name"] = [[handler]];
  1402.  
  1403. -- StarterGui.backdoor.exe v8.Main.SavePopup.ImageLabel
  1404. G2L["87"] = Instance.new("ImageLabel", G2L["84"]);
  1405. G2L["87"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1406. G2L["87"]["ImageColor3"] = Color3.fromRGB(34, 34, 34);
  1407. G2L["87"]["AnchorPoint"] = Vector2.new(1, 0);
  1408. G2L["87"]["Image"] = [[rbxassetid://4467776646]];
  1409. G2L["87"]["Size"] = UDim2.new(0, 18, 0, 18);
  1410. G2L["87"]["BackgroundTransparency"] = 1;
  1411. G2L["87"]["Position"] = UDim2.new(1, -5, 0, 5);
  1412.  
  1413. -- StarterGui.backdoor.exe v8.Main.SavePopup.ImageLabel.Hitbox
  1414. G2L["88"] = Instance.new("TextButton", G2L["87"]);
  1415. G2L["88"]["TextSize"] = 14;
  1416. G2L["88"]["TextTransparency"] = 1;
  1417. G2L["88"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1418. G2L["88"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  1419. -- G2L["88"]["FontFace"] = ;
  1420. G2L["88"]["Size"] = UDim2.new(1, 0, 1, 0);
  1421. G2L["88"]["Name"] = [[Hitbox]];
  1422. G2L["88"]["Text"] = [[]];
  1423. G2L["88"]["Font"] = Enum.Font.SourceSans;
  1424. G2L["88"]["BackgroundTransparency"] = 1;
  1425.  
  1426. -- StarterGui.backdoor.exe v8.Main.SavePopup.ImageLabel.icon
  1427. G2L["89"] = Instance.new("ImageLabel", G2L["87"]);
  1428. G2L["89"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1429. G2L["89"]["ImageColor3"] = Color3.fromRGB(171, 171, 171);
  1430. G2L["89"]["AnchorPoint"] = Vector2.new(0.5, 0.5);
  1431. G2L["89"]["Image"] = [[rbxassetid://3754291346]];
  1432. G2L["89"]["Size"] = UDim2.new(1, -2, 1, -2);
  1433. G2L["89"]["Name"] = [[icon]];
  1434. G2L["89"]["BackgroundTransparency"] = 1;
  1435. G2L["89"]["Position"] = UDim2.new(0.5, 0, 0.5, 0);
  1436.  
  1437. -- StarterGui.backdoor.exe v8.Main.SavePopup.ImageLabel.toggler
  1438. G2L["8a"] = Instance.new("ModuleScript", G2L["87"]);
  1439. G2L["8a"]["Name"] = [[toggler]];
  1440.  
  1441. -- StarterGui.backdoor.exe v8.Main.SavePopup.Title
  1442. G2L["8b"] = Instance.new("TextLabel", G2L["84"]);
  1443. G2L["8b"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  1444. -- G2L["8b"]["FontFace"] = ;
  1445. G2L["8b"]["TextSize"] = 23;
  1446. G2L["8b"]["TextColor3"] = Color3.fromRGB(233, 233, 233);
  1447. G2L["8b"]["Size"] = UDim2.new(0, 80, 0, 40);
  1448. G2L["8b"]["Text"] = [[Save]];
  1449. G2L["8b"]["Name"] = [[Title]];
  1450. G2L["8b"]["Font"] = Enum.Font.SourceSansBold;
  1451. G2L["8b"]["BackgroundTransparency"] = 1;
  1452.  
  1453. -- StarterGui.backdoor.exe v8.utils
  1454. G2L["8c"] = Instance.new("ModuleScript", G2L["1"]);
  1455. G2L["8c"]["Name"] = [[utils]];
  1456.  
  1457. -- StarterGui.backdoor.exe v8.main
  1458. G2L["8d"] = Instance.new("ModuleScript", G2L["1"]);
  1459. G2L["8d"]["Name"] = [[main]];
  1460.  
  1461. -- StarterGui.backdoor.exe v8.intro
  1462. G2L["8e"] = Instance.new("LocalScript", G2L["1"]);
  1463. G2L["8e"]["Name"] = [[intro]];
  1464.  
  1465. -- StarterGui.backdoor.exe v8.scripthub
  1466. G2L["8f"] = Instance.new("ModuleScript", G2L["1"]);
  1467. G2L["8f"]["Name"] = [[scripthub]];
  1468.  
  1469. -- StarterGui.backdoor.exe v8.scripthub.scripts
  1470. G2L["90"] = Instance.new("ModuleScript", G2L["8f"]);
  1471. G2L["90"]["Name"] = [[scripts]];
  1472.  
  1473. -- StarterGui.backdoor.exe v8.games
  1474. G2L["91"] = Instance.new("ModuleScript", G2L["1"]);
  1475. G2L["91"]["Name"] = [[games]];
  1476.  
  1477. -- StarterGui.backdoor.exe v8.config
  1478. G2L["92"] = Instance.new("ModuleScript", G2L["1"]);
  1479. G2L["92"]["Name"] = [[config]];
  1480.  
  1481. -- StarterGui.backdoor.exe v8.editor
  1482. G2L["93"] = Instance.new("ModuleScript", G2L["1"]);
  1483. G2L["93"]["Name"] = [[editor]];
  1484.  
  1485. -- StarterGui.backdoor.exe v8.magnolia
  1486. G2L["94"] = Instance.new("ModuleScript", G2L["1"]);
  1487. G2L["94"]["Name"] = [[magnolia]];
  1488.  
  1489. -- StarterGui.backdoor.exe v8.secure
  1490. G2L["95"] = Instance.new("LocalScript", G2L["1"]);
  1491. G2L["95"]["Name"] = [[secure]];
  1492.  
  1493. -- Require G2L wrapper
  1494. local G2L_REQUIRE = require;
  1495. local G2L_MODULES = {};
  1496. local function require(Module:ModuleScript)
  1497. local ModuleState = G2L_MODULES[Module];
  1498. if ModuleState then
  1499. if not ModuleState.Required then
  1500. ModuleState.Required = true;
  1501. ModuleState.Value = ModuleState.Closure();
  1502. end
  1503. return ModuleState.Value;
  1504. end;
  1505. return G2L_REQUIRE(Module);
  1506. end
  1507.  
  1508. G2L_MODULES[G2L["9"]] = {
  1509. Closure = function()
  1510. local script = G2L["9"];
  1511. -- this module is responsible of toggling the ui and listening the keybind
  1512. local toggler = {
  1513. keyBind = Enum.KeyCode.Home
  1514. };
  1515.  
  1516.  
  1517. -- services
  1518. local inputService = game:GetService("UserInputService");
  1519.  
  1520. -- ui
  1521. local main = script.Parent.Parent.Parent.Parent.Parent.Main;
  1522.  
  1523.  
  1524. local function toggle(flag)
  1525. if flag == nil then
  1526. flag = not main.Visible;
  1527. end
  1528. main.Visible = flag;
  1529. end
  1530.  
  1531. -- listen keybind
  1532. inputService.InputBegan:Connect(function(input, isGame)
  1533. -- ignore
  1534. if isGame then
  1535. return;
  1536. end
  1537. if input.KeyCode == toggler.keyBind then
  1538. toggle();
  1539. end
  1540. end);
  1541.  
  1542. -- listen click
  1543. script.Parent.Hitbox.MouseButton1Click:Connect(toggle);
  1544.  
  1545. -- register functions
  1546. toggler.toggle = toggle;
  1547.  
  1548. return toggler;
  1549.  
  1550. end;
  1551. };
  1552. G2L_MODULES[G2L["2f"]] = {
  1553. Closure = function()
  1554. local script = G2L["2f"];
  1555. -- service
  1556. local textService = game:GetService("TextService");
  1557.  
  1558. -- ui
  1559. local scrolling = script.Parent.ScrollingFrame;
  1560. local textbox = scrolling.SourceBox;
  1561. local linesLab = scrolling.Lines;
  1562.  
  1563. local config = require(script.Parent.Parent.Parent.Parent.Parent.Parent.Parent.config);
  1564.  
  1565. -- import
  1566. local highlight = require(script:WaitForChild("highlight"));
  1567.  
  1568. highlight.UpdateColors(config.data.settings.codeColors);
  1569.  
  1570. -- TODO update only when color settings update
  1571. -- currently we update colors every time config is saved
  1572. config.configSaved:Connect(function()
  1573. highlight.UpdateColors(config.data.settings.codeColors);
  1574. end)
  1575.  
  1576. -- vars
  1577. local texts = {}; -- used texts
  1578. local pool = {}; -- textlabel pool
  1579. local onTextUpdate = textbox:GetPropertyChangedSignal("Text");
  1580.  
  1581. -- util
  1582. local function getNumberOfLines(str)
  1583. local _, n = str:gsub('\n', '');
  1584. return n;
  1585. end
  1586.  
  1587. -- core
  1588. local old = function() end;
  1589.  
  1590.  
  1591. local function render()
  1592. local code = textbox.Text;
  1593. -- highlight
  1594. old();
  1595. old = highlight.Highlight(textbox, textbox.Text);
  1596. -- render lines
  1597. local text = "";
  1598. for i=0, getNumberOfLines(code) do
  1599. text = text .. i+1 .. "\n";
  1600. end
  1601. linesLab.TextSize = textbox.TextSize;
  1602. linesLab.Font = textbox.Font;
  1603. linesLab.Text = text;
  1604. -- set CanvasSize
  1605. local canvas = textService:GetTextSize(code, textbox.TextSize, textbox.Font, Vector2.new());
  1606. scrolling.CanvasSize = UDim2.new(0, canvas.X + textbox.TextSize + 24, 0, canvas.Y + textbox.TextSize);
  1607. end
  1608.  
  1609.  
  1610. task.spawn(function()
  1611. while textbox.Parent do
  1612. onTextUpdate:Wait();
  1613. render();
  1614. end
  1615. end);
  1616.  
  1617. return {
  1618. colors = highlight.TokenColors
  1619. }
  1620. end;
  1621. };
  1622. G2L_MODULES[G2L["30"]] = {
  1623. Closure = function()
  1624. local script = G2L["30"];
  1625. local Lexer = require(script.lexer)
  1626.  
  1627. local defaultColors = require(script.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.config).codeColors;
  1628. local TextService = game:GetService("TextService");
  1629.  
  1630. local TokenColors = table.create(8);
  1631. local TokenFormats = table.create(7)
  1632. local ActiveLabels = table.create(3)
  1633.  
  1634. local function SanitizeRichText(s)
  1635. return string.gsub(string.gsub(string.gsub(string.gsub(string.gsub(s,
  1636. "&", "&"),
  1637. "<", "&lt;"),
  1638. ">", "&gt;"),
  1639. "\"", "&quot;"),
  1640. "'", "&apos;"
  1641. )
  1642. end
  1643.  
  1644. local function SanitizeTabs(s)
  1645. return string.gsub(s, "\t", " ")
  1646. end
  1647.  
  1648. local function SanitizeControl(s)
  1649. return string.gsub(s, "[\0\1\2\3\4\5\6\7\8\11\12\13\14\15\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31]+", "")
  1650. end
  1651.  
  1652. local function highlight(textObject, src)
  1653. src = SanitizeTabs(SanitizeControl(src or textObject.Text))
  1654.  
  1655. textObject.RichText = false
  1656. textObject.Text = src
  1657. textObject.TextXAlignment = Enum.TextXAlignment.Left
  1658. textObject.TextYAlignment = Enum.TextYAlignment.Top
  1659. textObject.BackgroundColor3 = TokenColors.background
  1660. textObject.TextColor3 = TokenColors.iden
  1661. textObject.TextTransparency = 0.5
  1662.  
  1663. local textSize = textObject.TextSize
  1664.  
  1665. local _, numLines = string.gsub(src, "\n", "")
  1666. numLines += 1
  1667.  
  1668. local size = TextService:GetTextSize("", textObject.TextSize, textObject.Font, Vector2.new());
  1669.  
  1670. local lineLabels = ActiveLabels[textObject]
  1671. if not lineLabels then
  1672. -- No existing lineLabels, create all new
  1673. lineLabels = table.create(numLines)
  1674. for i = 1, numLines do
  1675. local lineLabel = Instance.new("TextLabel")
  1676. lineLabel.Name = "Line_" .. i
  1677. lineLabel.RichText = true
  1678. lineLabel.BackgroundTransparency = 1
  1679. lineLabel.TextXAlignment = Enum.TextXAlignment.Left
  1680. lineLabel.TextYAlignment = Enum.TextYAlignment.Top
  1681. lineLabel.TextColor3 = TokenColors.iden
  1682. lineLabel.Font = textObject.Font
  1683. lineLabel.TextSize = textSize
  1684.  
  1685. lineLabel.Size = UDim2.new(1, 0, 0, size.Y)
  1686. lineLabel.Position = UDim2.fromOffset(0, size.Y * textObject.LineHeight * (i - 1))
  1687. lineLabel.Text = ""
  1688.  
  1689. lineLabel.Parent = textObject
  1690. lineLabels[i] = lineLabel
  1691. end
  1692. elseif #lineLabels < numLines then
  1693. -- Existing labels, but missing some lines
  1694. for i = #lineLabels + 1, numLines do
  1695. local lineLabel = Instance.new("TextLabel")
  1696. lineLabel.Name = "Line_" .. i
  1697. lineLabel.RichText = true
  1698. lineLabel.BackgroundTransparency = 1
  1699. lineLabel.TextXAlignment = Enum.TextXAlignment.Left
  1700. lineLabel.TextYAlignment = Enum.TextYAlignment.Top
  1701. lineLabel.TextColor3 = TokenColors.iden
  1702. lineLabel.Font = textObject.Font
  1703. lineLabel.TextSize = textSize
  1704.  
  1705. lineLabel.Size = UDim2.new(1, 0, 0, size.Y)
  1706. lineLabel.Position = UDim2.fromOffset(0, size.Y * textObject.LineHeight * (i - 1))
  1707. lineLabel.Text = ""
  1708.  
  1709. lineLabel.Parent = textObject
  1710. lineLabels[i] = lineLabel
  1711. end
  1712. elseif #lineLabels > numLines then
  1713. -- Existing labels, with too many lines
  1714. for i = #lineLabels, numLines, -1 do
  1715. lineLabels[i].Text = ""
  1716. end
  1717. end
  1718.  
  1719. local richText, index, lineNumber = {}, 0, 1
  1720. for token, content in Lexer.scan(src) do
  1721. local Color = TokenColors[token] or TokenColors.iden
  1722.  
  1723. local lines = string.split(SanitizeRichText(content), "\n")
  1724. for l, line in ipairs(lines) do
  1725. if l > 1 then
  1726. -- Set line
  1727. lineLabels[lineNumber].Text = table.concat(richText)
  1728. -- Move to next line
  1729. lineNumber += 1
  1730. index = 0
  1731. table.clear(richText)
  1732. end
  1733.  
  1734. index += 1
  1735. if Color ~= TokenColors.iden and string.find(line, "[%S%C]") then
  1736. richText[index] = string.format(TokenFormats[token], line)
  1737. else
  1738. richText[index] = line
  1739. end
  1740. end
  1741. end
  1742.  
  1743. -- Set final line
  1744. lineLabels[lineNumber].Text = table.concat(richText)
  1745.  
  1746. ActiveLabels[textObject] = lineLabels
  1747.  
  1748. local Cleanup
  1749. Cleanup = textObject.AncestryChanged:Connect(function()
  1750. if textObject.Parent then
  1751. return
  1752. end
  1753. ActiveLabels[textObject] = nil
  1754. Cleanup:Disconnect()
  1755. end)
  1756.  
  1757. return function()
  1758. for _, label in ipairs(lineLabels) do
  1759. label:Destroy()
  1760. end
  1761. table.clear(lineLabels)
  1762.  
  1763. ActiveLabels[textObject] = nil
  1764. Cleanup:Disconnect()
  1765. end
  1766. end
  1767.  
  1768. -- ty synapse
  1769. --[[export type HighlighterColors = {
  1770. background: Color3?,
  1771. iden: Color3?,
  1772. keyword: Color3?,
  1773. builtin: Color3?,
  1774. string: Color3?,
  1775. number: Color3?,
  1776. comment: Color3?,
  1777. operator: Color3?
  1778. }]]
  1779.  
  1780. local function updateColors(colors)
  1781. -- Setup color data
  1782. TokenColors.background = (colors and colors.background) or Color3.fromRGB(47, 47, 47)
  1783. TokenColors.iden = (colors and colors.iden) or Color3.fromRGB(234, 234, 234)
  1784. TokenColors.keyword = (colors and colors.keyword) or Color3.fromRGB(215, 174, 255)
  1785. TokenColors.builtin = (colors and colors.builtin) or Color3.fromRGB(131, 206, 255)
  1786. TokenColors.string = (colors and colors.string) or Color3.fromRGB(196, 255, 193)
  1787. TokenColors.number = (colors and colors.number) or Color3.fromRGB(255, 125, 125)
  1788. TokenColors.comment = (colors and colors.comment) or Color3.fromRGB(140, 140, 155)
  1789. TokenColors.operator = (colors and colors.operator) or Color3.fromRGB(255, 239, 148)
  1790.  
  1791. for key, color in pairs(TokenColors) do
  1792. TokenFormats[key] = '<font color="#'
  1793. .. string.format("%.2x%.2x%.2x", color.R * 255, color.G * 255, color.B * 255)
  1794. .. '">%s</font>'
  1795. end
  1796.  
  1797. -- Rehighlight existing labels using latest colors
  1798. for label, lineLabels in pairs(ActiveLabels) do
  1799. for _, lineLabel in ipairs(lineLabels) do
  1800. lineLabel.TextColor3 = TokenColors.iden
  1801. end
  1802. highlight(label)
  1803. end
  1804. end
  1805. pcall(updateColors)
  1806.  
  1807. return setmetatable({
  1808. UpdateColors = updateColors,
  1809. Highlight = highlight
  1810. }, {
  1811. __call = function(_, textObject, src)
  1812. return highlight(textObject, src)
  1813. end
  1814. })
  1815. end;
  1816. };
  1817. G2L_MODULES[G2L["31"]] = {
  1818. Closure = function()
  1819. local script = G2L["31"];
  1820. --[=[
  1821. Lexical scanner for creating a sequence of tokens from Lua source code.
  1822. This is a heavily modified and Roblox-optimized version of
  1823. the original Penlight Lexer module:
  1824. https://github.com/stevedonovan/Penlight
  1825. Authors:
  1826. stevedonovan <https://github.com/stevedonovan> ----------- Original Penlight lexer author
  1827. ryanjmulder <https://github.com/ryanjmulder> ------------- Penlight lexer contributer
  1828. mpeterv <https://github.com/mpeterv> --------------------- Penlight lexer contributer
  1829. Tieske <https://github.com/Tieske> ----------------------- Penlight lexer contributer
  1830. boatbomber <https://github.com/boatbomber> --------------- Roblox port, added builtin token,
  1831. added patterns for incomplete syntax, bug fixes,
  1832. behavior changes, token optimization, thread optimization
  1833. Added lexer.navigator() for non-sequential reads
  1834. Sleitnick <https://github.com/Sleitnick> ----------------- Roblox optimizations
  1835. howmanysmall <https://github.com/howmanysmall> ----------- Lua + Roblox optimizations
  1836.  
  1837. List of possible tokens:
  1838. - iden
  1839. - keyword
  1840. - builtin
  1841. - string
  1842. - number
  1843. - comment
  1844. - operator
  1845. --]=]
  1846.  
  1847. local lexer = {}
  1848.  
  1849. local Prefix, Suffix, Cleaner = "^[%c%s]*", "[%c%s]*", "[%c%s]+"
  1850. local UNICODE = "[%z\x01-\x7F\xC2-\xF4][\x80-\xBF]+"
  1851. local NUMBER_A = "0x[%da-fA-F]+"
  1852. local NUMBER_B = "%d+%.?%d*[eE][%+%-]?%d+"
  1853. local NUMBER_C = "%d+[%._]?[%d_eE]*"
  1854. local OPERATORS = "[:;<>/~%*%(%)%-={},%.#%^%+%%]+"
  1855. local BRACKETS = "[%[%]]+" -- needs to be separate pattern from other operators or it'll mess up multiline strings
  1856. local IDEN = "[%a_][%w_]*"
  1857. local STRING_EMPTY = "(['\"])%1" --Empty String
  1858. local STRING_PLAIN = "(['\"])[^\n]-([^\\]%1)" --TODO: Handle escaping escapes
  1859. local STRING_INCOMP_A = "(['\"]).-\n" --Incompleted String with next line
  1860. local STRING_INCOMP_B = "(['\"])[^\n]*" --Incompleted String without next line
  1861. local STRING_MULTI = "%[(=*)%[.-%]%1%]" --Multiline-String
  1862. local STRING_MULTI_INCOMP = "%[=*%[.-.*" --Incompleted Multiline-String
  1863. local COMMENT_MULTI = "%-%-%[(=*)%[.-%]%1%]" --Completed Multiline-Comment
  1864. local COMMENT_MULTI_INCOMP = "%-%-%[=*%[.-.*" --Incompleted Multiline-Comment
  1865. local COMMENT_PLAIN = "%-%-.-\n" --Completed Singleline-Comment
  1866. local COMMENT_INCOMP = "%-%-.*" --Incompleted Singleline-Comment
  1867. -- local TYPED_VAR = ":%s*([%w%?%| \t]+%s*)" --Typed variable, parameter, function
  1868.  
  1869. local lang = require(script.language)
  1870. local lua_keyword = lang.keyword
  1871. local lua_builtin = lang.builtin
  1872. local lua_libraries = lang.libraries
  1873.  
  1874. local lua_matches = {
  1875. -- Indentifiers
  1876. { Prefix .. IDEN .. Suffix, "var" },
  1877.  
  1878. -- Numbers
  1879. { Prefix .. NUMBER_A .. Suffix, "number" },
  1880. { Prefix .. NUMBER_B .. Suffix, "number" },
  1881. { Prefix .. NUMBER_C .. Suffix, "number" },
  1882.  
  1883. -- Strings
  1884. { Prefix .. STRING_EMPTY .. Suffix, "string" },
  1885. { Prefix .. STRING_PLAIN .. Suffix, "string" },
  1886. { Prefix .. STRING_INCOMP_A .. Suffix, "string" },
  1887. { Prefix .. STRING_INCOMP_B .. Suffix, "string" },
  1888. { Prefix .. STRING_MULTI .. Suffix, "string" },
  1889. { Prefix .. STRING_MULTI_INCOMP .. Suffix, "string" },
  1890.  
  1891. -- Comments
  1892. { Prefix .. COMMENT_MULTI .. Suffix, "comment" },
  1893. { Prefix .. COMMENT_MULTI_INCOMP .. Suffix, "comment" },
  1894. { Prefix .. COMMENT_PLAIN .. Suffix, "comment" },
  1895. { Prefix .. COMMENT_INCOMP .. Suffix, "comment" },
  1896.  
  1897. -- Operators
  1898. { Prefix .. OPERATORS .. Suffix, "operator" },
  1899. { Prefix .. BRACKETS .. Suffix, "operator" },
  1900.  
  1901. -- Unicode
  1902. { Prefix .. UNICODE .. Suffix, "iden" },
  1903.  
  1904. -- Unknown
  1905. { "^.", "iden" },
  1906. }
  1907.  
  1908. --- Create a plain token iterator from a string.
  1909. -- @tparam string s a string.
  1910.  
  1911. function lexer.scan(s)
  1912. -- local startTime = os.clock()
  1913. lexer.finished = false
  1914.  
  1915. local index = 1
  1916. local sz = #s
  1917. local p1, p2, p3, pT = "", "", "", ""
  1918.  
  1919. return function()
  1920. if index <= sz then
  1921. for _, m in ipairs(lua_matches) do
  1922. local i1, i2 = string.find(s, m[1], index)
  1923. if i1 then
  1924. local tok = string.sub(s, i1, i2)
  1925. index = i2 + 1
  1926. lexer.finished = index > sz
  1927. --if lexer.finished then
  1928. -- print((os.clock()-startTime)*1000, "ms")
  1929. --end
  1930.  
  1931. local t = m[2]
  1932. local t2 = t
  1933.  
  1934. -- Process t into t2
  1935. if t == "var" then
  1936. -- Since we merge spaces into the tok, we need to remove them
  1937. -- in order to check the actual word it contains
  1938. local cleanTok = string.gsub(tok, Cleaner, "")
  1939.  
  1940. if lua_keyword[cleanTok] then
  1941. t2 = "keyword"
  1942. elseif lua_builtin[cleanTok] then
  1943. t2 = "builtin"
  1944. else
  1945. t2 = "iden"
  1946. end
  1947.  
  1948. if string.find(p1, "%.[%s%c]*$") and pT ~= "comment" then
  1949. -- The previous was a . so we need to special case indexing things
  1950. local parent = string.gsub(p2, Cleaner, "")
  1951. local lib = lua_libraries[parent]
  1952. if lib and lib[cleanTok] and not string.find(p3, "%.[%s%c]*$") then
  1953. -- Indexing a builtin lib with existing item, treat as a builtin
  1954. t2 = "builtin"
  1955. else
  1956. -- Indexing a non builtin, can't be treated as a keyword/builtin
  1957. t2 = "iden"
  1958. end
  1959. -- print("indexing",parent,"with",cleanTok,"as",t2)
  1960. end
  1961. end
  1962.  
  1963. -- Record last 3 tokens for the indexing context check
  1964. p3 = p2
  1965. p2 = p1
  1966. p1 = tok
  1967. pT = t2
  1968. return t2, tok
  1969. end
  1970. end
  1971. end
  1972. end
  1973. end
  1974.  
  1975. function lexer.navigator()
  1976. local nav = {
  1977. Source = "",
  1978. TokenCache = table.create(50),
  1979.  
  1980. _RealIndex = 0,
  1981. _UserIndex = 0,
  1982. _ScanThread = nil,
  1983. }
  1984.  
  1985. function nav:Destroy()
  1986. self.Source = nil
  1987. self._RealIndex = nil
  1988. self._UserIndex = nil
  1989. self.TokenCache = nil
  1990. self._ScanThread = nil
  1991. end
  1992.  
  1993. function nav:SetSource(SourceString)
  1994. self.Source = SourceString
  1995.  
  1996. self._RealIndex = 0
  1997. self._UserIndex = 0
  1998. table.clear(self.TokenCache)
  1999.  
  2000. self._ScanThread = coroutine.create(function()
  2001. for Token, Src in lexer.scan(self.Source) do
  2002. self._RealIndex += 1
  2003. self.TokenCache[self._RealIndex] = { Token, Src }
  2004. coroutine.yield(Token, Src)
  2005. end
  2006. end)
  2007. end
  2008.  
  2009. function nav.Next()
  2010. nav._UserIndex += 1
  2011.  
  2012. if nav._RealIndex >= nav._UserIndex then
  2013. -- Already scanned, return cached
  2014. return table.unpack(nav.TokenCache[nav._UserIndex])
  2015. else
  2016. if coroutine.status(nav._ScanThread) == "dead" then
  2017. -- Scan thread dead
  2018. return
  2019. else
  2020. local success, token, src = coroutine.resume(nav._ScanThread)
  2021. if success and token then
  2022. -- Scanned new data
  2023. return token, src
  2024. else
  2025. -- Lex completed
  2026. return
  2027. end
  2028. end
  2029. end
  2030. end
  2031.  
  2032. function nav.Peek(PeekAmount)
  2033. local GoalIndex = nav._UserIndex + PeekAmount
  2034.  
  2035. if nav._RealIndex >= GoalIndex then
  2036. -- Already scanned, return cached
  2037. if GoalIndex > 0 then
  2038. return table.unpack(nav.TokenCache[GoalIndex])
  2039. else
  2040. -- Invalid peek
  2041. return
  2042. end
  2043. else
  2044. if coroutine.status(nav._ScanThread) == "dead" then
  2045. -- Scan thread dead
  2046. return
  2047. else
  2048. local IterationsAway = GoalIndex - nav._RealIndex
  2049.  
  2050. local success, token, src = nil, nil, nil
  2051.  
  2052. for _ = 1, IterationsAway do
  2053. success, token, src = coroutine.resume(nav._ScanThread)
  2054. if not (success or token) then
  2055. -- Lex completed
  2056. break
  2057. end
  2058. end
  2059.  
  2060. return token, src
  2061. end
  2062. end
  2063. end
  2064.  
  2065. return nav
  2066. end
  2067.  
  2068. return lexer
  2069.  
  2070. end;
  2071. };
  2072. G2L_MODULES[G2L["32"]] = {
  2073. Closure = function()
  2074. local script = G2L["32"];
  2075. return {
  2076. keyword = {
  2077. ["and"] = true,
  2078. ["break"] = true,
  2079. ["do"] = true,
  2080. ["else"] = true,
  2081. ["elseif"] = true,
  2082. ["end"] = true,
  2083. ["false"] = true,
  2084. ["for"] = true,
  2085. ["function"] = true,
  2086. ["if"] = true,
  2087. ["in"] = true,
  2088. ["local"] = true,
  2089. ["nil"] = true,
  2090. ["not"] = true,
  2091. ["while"] = true,
  2092. ["or"] = true,
  2093. ["repeat"] = true,
  2094. ["return"] = true,
  2095. ["then"] = true,
  2096. ["true"] = true,
  2097. ["self"] = true,
  2098. ["until"] = true,
  2099. ["continue"] = true,
  2100. ["export"] = true,
  2101. },
  2102.  
  2103. builtin = {
  2104. -- Lua Functions
  2105. ["assert"] = true,
  2106. ["collectgarbage"] = true,
  2107. ["error"] = true,
  2108. ["getfenv"] = true,
  2109. ["getmetatable"] = true,
  2110. ["ipairs"] = true,
  2111. ["loadstring"] = true,
  2112. ["newproxy"] = true,
  2113. ["next"] = true,
  2114. ["pairs"] = true,
  2115. ["pcall"] = true,
  2116. ["print"] = true,
  2117. ["rawequal"] = true,
  2118. ["rawget"] = true,
  2119. ["rawset"] = true,
  2120. ["select"] = true,
  2121. ["setfenv"] = true,
  2122. ["setmetatable"] = true,
  2123. ["tonumber"] = true,
  2124. ["tostring"] = true,
  2125. ["type"] = true,
  2126. ["unpack"] = true,
  2127. ["xpcall"] = true,
  2128.  
  2129. -- Lua Variables
  2130. ["_G"] = true,
  2131. ["_VERSION"] = true,
  2132.  
  2133. -- Lua Tables
  2134. ["bit32"] = true,
  2135. ["coroutine"] = true,
  2136. ["debug"] = true,
  2137. ["math"] = true,
  2138. ["os"] = true,
  2139. ["string"] = true,
  2140. ["table"] = true,
  2141. ["utf8"] = true,
  2142.  
  2143. -- Roblox Functions
  2144. ["delay"] = true,
  2145. ["elapsedTime"] = true,
  2146. ["gcinfo"] = true,
  2147. ["require"] = true,
  2148. ["settings"] = true,
  2149. ["spawn"] = true,
  2150. ["tick"] = true,
  2151. ["time"] = true,
  2152. ["typeof"] = true,
  2153. ["UserSettings"] = true,
  2154. ["wait"] = true,
  2155. ["warn"] = true,
  2156. ["ypcall"] = true,
  2157.  
  2158. -- Roblox Variables
  2159. ["Enum"] = true,
  2160. ["game"] = true,
  2161. ["shared"] = true,
  2162. ["script"] = true,
  2163. ["workspace"] = true,
  2164. ["plugin"] = true,
  2165.  
  2166. -- Roblox Tables
  2167. ["Axes"] = true,
  2168. ["BrickColor"] = true,
  2169. ["CatalogSearchParams"] = true,
  2170. ["CellId"] = true,
  2171. ["CFrame"] = true,
  2172. ["Color3"] = true,
  2173. ["ColorSequence"] = true,
  2174. ["ColorSequenceKeypoint"] = true,
  2175. ["DateTime"] = true,
  2176. ["DockWidgetPluginGuiInfo"] = true,
  2177. ["Faces"] = true,
  2178. ["File"] = true,
  2179. ["FloatCurveKey"] = true,
  2180. ["Instance"] = true,
  2181. ["NumberRange"] = true,
  2182. ["NumberSequence"] = true,
  2183. ["NumberSequenceKeypoint"] = true,
  2184. ["OverlapParams"] = true,
  2185. ["PathWaypoint"] = true,
  2186. ["PhysicalProperties"] = true,
  2187. ["PluginDrag"] = true,
  2188. ["Random"] = true,
  2189. ["Ray"] = true,
  2190. ["RaycastParams"] = true,
  2191. ["Rect"] = true,
  2192. ["Region3"] = true,
  2193. ["Region3int16"] = true,
  2194. ["RotationCurveKey"] = true,
  2195. ["task"] = true,
  2196. ["TextChatMessageProperties"] = true,
  2197. ["TweenInfo"] = true,
  2198. ["UDim"] = true,
  2199. ["UDim2"] = true,
  2200. ["Vector2"] = true,
  2201. ["Vector2int16"] = true,
  2202. ["Vector3"] = true,
  2203. ["Vector3int16"] = true,
  2204. },
  2205.  
  2206. libraries = {
  2207.  
  2208. -- Lua Libraries
  2209. math = {
  2210. abs = true,
  2211. acos = true,
  2212. asin = true,
  2213. atan = true,
  2214. atan2 = true,
  2215. ceil = true,
  2216. clamp = true,
  2217. cos = true,
  2218. cosh = true,
  2219. deg = true,
  2220. exp = true,
  2221. floor = true,
  2222. fmod = true,
  2223. frexp = true,
  2224. ldexp = true,
  2225. log = true,
  2226. log10 = true,
  2227. max = true,
  2228. min = true,
  2229. modf = true,
  2230. noise = true,
  2231. pow = true,
  2232. rad = true,
  2233. random = true,
  2234. round = true,
  2235. sinh = true,
  2236. sqrt = true,
  2237. tan = true,
  2238. tanh = true,
  2239. sign = true,
  2240. sin = true,
  2241. randomseed = true,
  2242.  
  2243. huge = true,
  2244. pi = true,
  2245. },
  2246.  
  2247. string = {
  2248. byte = true,
  2249. char = true,
  2250. find = true,
  2251. format = true,
  2252. gmatch = true,
  2253. gsub = true,
  2254. len = true,
  2255. lower = true,
  2256. match = true,
  2257. pack = true,
  2258. packsize = true,
  2259. rep = true,
  2260. reverse = true,
  2261. split = true,
  2262. sub = true,
  2263. unpack = true,
  2264. upper = true,
  2265. },
  2266.  
  2267. table = {
  2268. clear = true,
  2269. concat = true,
  2270. foreach = true,
  2271. foreachi = true,
  2272. freeze = true,
  2273. getn = true,
  2274. insert = true,
  2275. isfrozen = true,
  2276. maxn = true,
  2277. remove = true,
  2278. sort = true,
  2279. find = true,
  2280. pack = true,
  2281. unpack = true,
  2282. move = true,
  2283. create = true,
  2284. },
  2285.  
  2286. debug = {
  2287. dumpheap = true,
  2288. info = true,
  2289. profilebegin = true,
  2290. profileend = true,
  2291. resetmemorycategory = true,
  2292. setmemorycategory = true,
  2293. traceback = true,
  2294. },
  2295.  
  2296. os = {
  2297. time = true,
  2298. date = true,
  2299. difftime = true,
  2300. clock = true,
  2301. },
  2302.  
  2303. coroutine = {
  2304. create = true,
  2305. isyieldable = true,
  2306. resume = true,
  2307. running = true,
  2308. status = true,
  2309. wrap = true,
  2310. yield = true,
  2311. },
  2312.  
  2313. bit32 = {
  2314. arshift = true,
  2315. band = true,
  2316. bnot = true,
  2317. bor = true,
  2318. btest = true,
  2319. bxor = true,
  2320. countlz = true,
  2321. countrz = true,
  2322. extract = true,
  2323. lrotate = true,
  2324. lshift = true,
  2325. replace = true,
  2326. rrotate = true,
  2327. rshift = true,
  2328. },
  2329.  
  2330. utf8 = {
  2331. char = true,
  2332. codepoint = true,
  2333. codes = true,
  2334. graphemes = true,
  2335. len = true,
  2336. nfcnormalize = true,
  2337. nfdnormalize = true,
  2338. offset = true,
  2339.  
  2340. charpattern = true,
  2341. },
  2342.  
  2343. -- Roblox Libraries
  2344. Axes = {
  2345. new = true,
  2346. },
  2347.  
  2348. BrickColor = {
  2349. new = true,
  2350. New = true,
  2351. Random = true,
  2352. Black = true,
  2353. Blue = true,
  2354. DarkGray = true,
  2355. Gray = true,
  2356. Green = true,
  2357. Red = true,
  2358. White = true,
  2359. Yellow = true,
  2360. palette = true,
  2361. random = true,
  2362. },
  2363.  
  2364. CatalogSearchParams = {
  2365. new = true,
  2366. },
  2367.  
  2368. CellId = {
  2369. new = true,
  2370. },
  2371.  
  2372. CFrame = {
  2373. new = true,
  2374. Angles = true,
  2375. fromAxisAngle = true,
  2376. fromEulerAnglesXYZ = true,
  2377. fromEulerAnglesYXZ = true,
  2378. fromMatrix = true,
  2379. fromOrientation = true,
  2380. lookAt = true,
  2381.  
  2382. identity = true,
  2383. },
  2384.  
  2385. Color3 = {
  2386. new = true,
  2387. fromRGB = true,
  2388. fromHSV = true,
  2389. fromHex = true,
  2390. toHSV = true,
  2391. },
  2392.  
  2393. ColorSequence = {
  2394. new = true,
  2395. },
  2396.  
  2397. ColorSequenceKeypoint = {
  2398. new = true,
  2399. },
  2400.  
  2401. DateTime = {
  2402. now = true,
  2403. fromIsoDate = true,
  2404. fromLocalTime = true,
  2405. fromUniversalTime = true,
  2406. fromUnixTimestamp = true,
  2407. fromUnixTimestampMillis = true,
  2408. },
  2409.  
  2410. DockWidgetPluginGuiInfo = {
  2411. new = true,
  2412. },
  2413.  
  2414. Faces = {
  2415. new = true,
  2416. },
  2417.  
  2418. FloatCurveKey = {
  2419. new = true,
  2420. },
  2421.  
  2422. Instance = {
  2423. new = true,
  2424. },
  2425.  
  2426. NumberRange = {
  2427. new = true,
  2428. },
  2429.  
  2430. NumberSequence = {
  2431. new = true,
  2432. },
  2433.  
  2434. NumberSequenceKeypoint = {
  2435. new = true,
  2436. },
  2437.  
  2438. OverlapParams = {
  2439. new = true,
  2440. },
  2441.  
  2442. PathWaypoint = {
  2443. new = true,
  2444. },
  2445.  
  2446. PhysicalProperties = {
  2447. new = true,
  2448. },
  2449.  
  2450. PluginDrag = {
  2451. new = true,
  2452. },
  2453.  
  2454. Random = {
  2455. new = true,
  2456. },
  2457.  
  2458. Ray = {
  2459. new = true,
  2460. },
  2461.  
  2462. RaycastParams = {
  2463. new = true,
  2464. },
  2465.  
  2466. Rect = {
  2467. new = true,
  2468. },
  2469.  
  2470. Region3 = {
  2471. new = true,
  2472. },
  2473.  
  2474. Region3int16 = {
  2475. new = true,
  2476. },
  2477.  
  2478. RotationCurveKey = {
  2479. new = true,
  2480. },
  2481.  
  2482. task = {
  2483. wait = true,
  2484. spawn = true,
  2485. delay = true,
  2486. defer = true,
  2487. synchronize = true,
  2488. desynchronize = true,
  2489. },
  2490.  
  2491. TweenInfo = {
  2492. new = true,
  2493. },
  2494.  
  2495. UDim = {
  2496. new = true,
  2497. },
  2498.  
  2499. UDim2 = {
  2500. new = true,
  2501. fromScale = true,
  2502. fromOffset = true,
  2503. },
  2504.  
  2505. Vector2 = {
  2506. new = true,
  2507.  
  2508. one = true,
  2509. zero = true,
  2510. xAxis = true,
  2511. yAxis = true,
  2512. },
  2513.  
  2514. Vector2int16 = {
  2515. new = true,
  2516. },
  2517.  
  2518. Vector3 = {
  2519. new = true,
  2520. fromAxis = true,
  2521. fromNormalId = true,
  2522. FromAxis = true,
  2523. FromNormalId = true,
  2524.  
  2525. one = true,
  2526. zero = true,
  2527. xAxis = true,
  2528. yAxis = true,
  2529. zAxis = true,
  2530. },
  2531.  
  2532. Vector3int16 = {
  2533. new = true,
  2534. },
  2535. },
  2536. }
  2537.  
  2538. end;
  2539. };
  2540. G2L_MODULES[G2L["8a"]] = {
  2541. Closure = function()
  2542. local script = G2L["8a"];
  2543. -- this module is responsible of toggling the ui and listening the keybind
  2544. local toggler = {
  2545. keyBind = Enum.KeyCode.RightShift
  2546. };
  2547.  
  2548.  
  2549. -- services
  2550. local inputService = game:GetService("UserInputService");
  2551.  
  2552. -- ui
  2553. local main = script.Parent.Parent.Parent.Parent.Parent.Main;
  2554.  
  2555.  
  2556. local function toggle(flag)
  2557. if flag == nil then
  2558. flag = not main.Visible;
  2559. end
  2560. main.Visible = flag;
  2561. end
  2562.  
  2563. -- listen keybind
  2564. inputService.InputBegan:Connect(function(input, isGame)
  2565. -- ignore
  2566. if isGame then
  2567. return;
  2568. end
  2569. if input.KeyCode == toggler.keyBind then
  2570. toggle();
  2571. end
  2572. end);
  2573.  
  2574. -- listen click
  2575. script.Parent.Hitbox.MouseButton1Click:Connect(toggle);
  2576.  
  2577. -- register functions
  2578. toggler.toggle = toggle;
  2579.  
  2580. return toggler;
  2581.  
  2582. end;
  2583. };
  2584. G2L_MODULES[G2L["8c"]] = {
  2585. Closure = function()
  2586. local script = G2L["8c"];
  2587. -- services
  2588. local players = game:GetService("Players");
  2589.  
  2590. -- ui
  2591. local main = script.Parent.Main;
  2592.  
  2593. -- services
  2594. local inputService = game:GetService("UserInputService");
  2595.  
  2596. -- tweeninfos
  2597. local tweenInfo = {
  2598. move = TweenInfo.new(
  2599. 0.08,
  2600. Enum.EasingStyle.Sine,
  2601. Enum.EasingDirection.Out
  2602. ),
  2603. slowBackMove =TweenInfo.new(
  2604. 1.2,
  2605. Enum.EasingStyle.Back,
  2606. Enum.EasingDirection.Out
  2607. ),
  2608. expand = TweenInfo.new(
  2609. 0.5,
  2610. Enum.EasingStyle.Sine,
  2611. Enum.EasingDirection.Out
  2612. ),
  2613. hover = TweenInfo.new(
  2614. 0.3,
  2615. Enum.EasingStyle.Sine,
  2616. Enum.EasingDirection.Out
  2617. );
  2618. }
  2619.  
  2620. -- colors
  2621. local modernColors = {
  2622. DimMidnightBlue = Color3.fromRGB(32, 34, 37),
  2623. MidnightBlue = Color3.fromRGB(47, 49, 54),
  2624. LightMidnightBlue = Color3.fromRGB(54, 57, 63),
  2625. WetAsphalt = Color3.fromRGB(44, 62, 80),
  2626. Asphalt = Color3.fromRGB(52, 73, 94),
  2627. Midnight = Color3.fromRGB(47, 53, 66),
  2628. ElectricBlue = Color3.fromRGB(52, 152, 219),
  2629. Blurple = Color3.fromRGB(72, 52, 212),
  2630. Exodus = Color3.fromRGB(104, 109, 224),
  2631. Komaru = Color3.fromRGB(48, 51, 107),
  2632. DimKomaru = Color3.fromRGB(19, 15, 64),
  2633. LightExodus = Color3.fromRGB(126, 214, 223),
  2634. Amythest = Color3.fromRGB(155, 89, 182),
  2635. Wisteria = Color3.fromRGB(142, 68, 173),
  2636. Emerald = Color3.fromRGB(46, 204, 113),
  2637. Carrot = Color3.fromRGB(230, 126, 34),
  2638. Orange = Color3.fromRGB(243, 156, 18),
  2639. SunFlower = Color3.fromRGB(241, 196, 15),
  2640. Ruby = Color3.fromRGB(231, 76, 60),
  2641. Rose = Color3.fromRGB(192, 57, 43),
  2642. LightPink = Color3.fromRGB(255, 121, 121),
  2643. DimPink = Color3.fromRGB(235, 77, 75),
  2644. Pink = Color3.fromRGB(224, 86, 253),
  2645. SteelPink = Color3.fromRGB(224, 86, 253),
  2646. Light = Color3.fromRGB(213, 217, 255),
  2647. Cloud = Color3.fromRGB(236, 240, 241),
  2648. Silver = Color3.fromRGB(189, 195, 199),
  2649. Concrete = Color3.fromRGB(149, 165, 166),
  2650. Abestos = Color3.fromRGB(127, 140, 141)
  2651. };
  2652.  
  2653. -- efficent way for listening mouse button1 down and release
  2654. -- usefull for tasks like mouse dragging
  2655. local function onDownUp(hitbox, onDown, onUp)
  2656. -- vars
  2657. local c1;
  2658. local buttonDown = false;
  2659.  
  2660. local function mouseRelease()
  2661. buttonDown = false;
  2662. onUp();
  2663. if c1 then
  2664. c1:Disconnect();
  2665. end
  2666. end
  2667.  
  2668. -- listen for ui toggles while dragging
  2669. main:GetPropertyChangedSignal("Visible"):Connect(function()
  2670. if main.Visible == false then
  2671. mouseRelease();
  2672. end
  2673. end)
  2674.  
  2675. -- connect
  2676. hitbox.MouseButton1Down:Connect(function()
  2677. buttonDown = true;
  2678. onDown()
  2679. c1 = inputService.InputEnded:Connect(function(input)
  2680. local inType = input.UserInputType;
  2681. if inType == Enum.UserInputType.MouseButton1 or inType == Enum.UserInputType.Touch then
  2682. mouseRelease();
  2683. end
  2684. end)
  2685. end);
  2686. end
  2687.  
  2688.  
  2689. local utils = {
  2690. onDownUp = onDownUp,
  2691. tweenInfo = tweenInfo,
  2692. modernColors = modernColors
  2693. }
  2694.  
  2695. return utils;
  2696.  
  2697. end;
  2698. };
  2699. G2L_MODULES[G2L["8d"]] = {
  2700. Closure = function()
  2701. local script = G2L["8d"];
  2702.  
  2703. -- uis
  2704. local executor = script.Parent.Main.BodyClipping.Executor;
  2705. local execBtns = executor.InnerBody.BottomButtons;
  2706.  
  2707. return {
  2708. -- modules
  2709. config = require(script.Parent.config),
  2710. utils = require(script.Parent.utils),
  2711. games = require(script.Parent.games),
  2712. scripthub = require(script.Parent.scripthub),
  2713. editor = require(script.Parent.editor),
  2714. toggler = require(script.Parent.Main.Topbar.RightOutline.ImageLabel.toggler),
  2715. ide = require(executor.InnerBody.SourceBg.Source.ide),
  2716. -- ui
  2717. title = script.Parent.Main.Topbar.VersionTitle,
  2718. btns = {
  2719. execBtn = execBtns.ExecuteBtn.Hitbox
  2720. }
  2721. }
  2722. end;
  2723. };
  2724. G2L_MODULES[G2L["8f"]] = {
  2725. Closure = function()
  2726. local script = G2L["8f"];
  2727. local verifiedScripts = require(script:WaitForChild("scripts"));
  2728. local editor = require(script.Parent.editor);
  2729. local configs = require(script.Parent.config);
  2730.  
  2731. -- global
  2732. local NAME_SRC = {};
  2733. local size = 0;
  2734.  
  2735. -- ui
  2736. local scriptsContainer = script.Parent.Main.BodyClipping.Executor.InnerBody.Scripthub.Scripts;
  2737. local dummy = scriptsContainer.dummy;
  2738. dummy.Parent = nil;
  2739.  
  2740. -- icons
  2741. local verifiedIcon = "rbxassetid://8150715986";
  2742.  
  2743.  
  2744. local function updateYCanvasSize()
  2745. scriptsContainer.CanvasSize = UDim2.new(
  2746. 0, 0, 0, size * dummy.AbsoluteSize.Y + size * scriptsContainer.UIListLayout.Padding.Offset
  2747. );
  2748. end
  2749.  
  2750. -- load script in editor
  2751. local function loadScript(name)
  2752. editor.setCode(NAME_SRC[name]);
  2753. end
  2754.  
  2755. -- setup script
  2756. local function addScript(name, code, isLocal)
  2757. -- check if already registred
  2758. if NAME_SRC[name] then
  2759. NAME_SRC[name] = code;
  2760. return;
  2761. end
  2762. -- make inst
  2763. local btn = dummy:Clone();
  2764. btn.Name = name;
  2765. btn.Template.Text = name;
  2766. btn.Parent = scriptsContainer;
  2767. if not isLocal then
  2768. btn.icon.Image = verifiedIcon;
  2769. btn.Delete:Destroy();
  2770. else
  2771. btn.icon:Destroy();
  2772. btn.Template.Position = btn.Template.Position - UDim2.fromOffset(12, 0);
  2773. btn.Delete.MouseButton1Click:Connect(function()
  2774. btn:Destroy();
  2775. configs.data.scripts[name] = nil;
  2776. end)
  2777. end
  2778. -- click connection
  2779. btn.Hitbox.MouseButton1Click:Connect(function()
  2780. loadScript(name);
  2781. end)
  2782. -- store code
  2783. NAME_SRC[name] = code;
  2784. size += 1;
  2785. updateYCanvasSize();
  2786. end
  2787.  
  2788. -- add scripts
  2789. local function addScripts(list, isLocal)
  2790. for name, code in next, list do
  2791. addScript(name, code, isLocal);
  2792. end
  2793. end
  2794.  
  2795. addScripts(verifiedScripts);
  2796. addScripts(configs.data.scripts, true)
  2797.  
  2798. return {
  2799. addScripts = addScripts,
  2800. addScript = addScript
  2801. };
  2802. end;
  2803. };
  2804. G2L_MODULES[G2L["90"]] = {
  2805. Closure = function()
  2806. local script = G2L["90"];
  2807. return {
  2808. Dex = "require(4786706026):dex('%username%')",
  2809. Minecraft = "require(5820669639)('%username%')",
  2810. CrashUI = "require(6053693667).Crashexe('%username%')",
  2811. R6 = "require(4585652241).load('%username%')",
  2812. KillBot = "require(3904000898).load('%username%')",
  2813. YingYang = "require(4875966146).load('%username%')",
  2814. HackerMan = "require(4876105392).load('%username%')",
  2815. SakuraHub = "require(5536569504):SH('%username%')",
  2816. Fraud = "require(4952179933).Fraud('%username%')",
  2817. F3X = "require(4869378421).F3X('%username%')",
  2818. UndetectedHub = "require(5673170715).Leak('%username%')",
  2819. PoliceAI = "require(7163976217).VK('%username%')",
  2820. TankAI = "require(7203746402).tonk('%username%')",
  2821. JuggernautAI = "require(7486656912).Juggernaut('%username%')"
  2822. }
  2823. end;
  2824. };
  2825. G2L_MODULES[G2L["91"]] = {
  2826. Closure = function()
  2827. local script = G2L["91"];
  2828. -- services
  2829. local tweenService = game:GetService("TweenService");
  2830. local marketService = game:GetService('MarketplaceService');
  2831. local teleportService = game:GetService("TeleportService");
  2832.  
  2833. -- ui
  2834. local utils = require(script.Parent.utils)
  2835. local config = require(script.Parent.config);
  2836. local container = script.Parent.Main.BodyClipping.Games.InnerBody.ScrollingFrame;
  2837.  
  2838. local dummy = container.dummy;
  2839. dummy.Parent = nil;
  2840.  
  2841. -- vars
  2842. local backFormat = dummy.Backdoors.Text;
  2843. local dateFormat = dummy.Date.Text;
  2844. local teleporting = false;
  2845.  
  2846. local ID_CARD = {};
  2847.  
  2848. -- IMPORTANT, config.save must be called by the caller to actually store the games
  2849. local function loadGame(placeId, backdoors, timestamp)
  2850. placeId = tonumber(placeId); -- make sure json string index is converted to number
  2851. timestamp = timestamp or os.time();
  2852. -- check backdoors
  2853. if type(backdoors) ~= "table" or #backdoors == 0 then
  2854. return;
  2855. end
  2856. -- retrive game info
  2857. local integrity, gameProduct = pcall(marketService.GetProductInfo, marketService, placeId);
  2858. -- check integrity
  2859. if not integrity then
  2860. return; -- skip game
  2861. end
  2862. -- update settings
  2863. config.data.games[placeId] = {
  2864. backdoors = backdoors,
  2865. timestamp = timestamp
  2866. };
  2867. -- check if card is already instanciated
  2868. local card = ID_CARD[placeId];
  2869. if not card then
  2870. local gameIcon = gameProduct.IconImageAssetId;
  2871. local gameName = gameProduct.Name;
  2872. -- gameIcon check
  2873. if gameIcon == 0 then
  2874. gameIcon = 3033152788;
  2875. end
  2876. card = dummy:Clone();
  2877. card.Parent = container;
  2878. card.GameIcon.Image = "rbxassetid://" .. gameIcon;
  2879. card.Title.Text = gameName;
  2880. end
  2881. -- update
  2882. local dateTime = DateTime.fromUnixTimestamp(timestamp);
  2883. card.Backdoors.Text = backFormat:format(#backdoors);
  2884. card.Date.Text = dateFormat:format(dateTime:ToIsoDate());
  2885. -- animation
  2886. card.Play.Hitbox.MouseLeave:Connect(function()
  2887. tweenService:Create(card.Play,
  2888. utils.tweenInfo.move,
  2889. {
  2890. Size = UDim2.new(0, 30, 1, 0)
  2891. }
  2892. ):Play();
  2893. end);
  2894. card.Play.Hitbox.MouseEnter:Connect(function()
  2895. tweenService:Create(card.Play,
  2896. utils.tweenInfo.move,
  2897. {
  2898. Size = UDim2.new(0, 90, 1, 0)
  2899. }
  2900. ):Play();
  2901. end);
  2902. -- teleport function
  2903. card.Play.Hitbox.MouseButton1Click:Connect(function()
  2904. if teleporting then
  2905. return;
  2906. end
  2907. teleporting = true;
  2908. teleportService:Teleport(placeId);
  2909. end)
  2910. ID_CARD[placeId] = card;
  2911. -- make text info not visible
  2912. container.info.Visible = false;
  2913. end
  2914.  
  2915. local function loadGames(games)
  2916. for placeId, gameObj in next, games do
  2917. loadGame(placeId, gameObj.backdoors, gameObj.timestamp);
  2918. end
  2919. end
  2920.  
  2921. loadGames(config.data.games);
  2922.  
  2923.  
  2924. return {
  2925. loadGame = loadGame,
  2926. loadGames = loadGames
  2927. };
  2928. end;
  2929. };
  2930. G2L_MODULES[G2L["92"]] = {
  2931. Closure = function()
  2932. local script = G2L["92"];
  2933. local readfile = getgenv and readfile or function() return [==[]==]; end;
  2934. local writefile = writefile or function() return true end;
  2935.  
  2936. -- const
  2937. local CONFIG_FILE = "backdoor-exe.json";
  2938.  
  2939. -- services
  2940. local httpService = game:GetService("HttpService");
  2941. local runService = game:GetService("RunService");
  2942.  
  2943. -- defaults
  2944. local codeColors = {
  2945. background = Color3.fromRGB(47, 47, 47),
  2946. iden = Color3.fromRGB(234, 234, 234),
  2947. keyword = Color3.fromRGB(215, 174, 255),
  2948. builtin = Color3.fromRGB(131, 206, 255),
  2949. string = Color3.fromRGB(196, 255, 193),
  2950. number = Color3.fromRGB(255, 125, 125),
  2951. comment = Color3.fromRGB(140, 140, 155),
  2952. operator = Color3.fromRGB(255, 239, 148)
  2953. };
  2954. local canDebug = true;
  2955.  
  2956. -- config struct
  2957. --[[export type ScannerConfig = {
  2958. games: {[number]: { -- index: gameId
  2959. backdoor: {string}, -- array of backdoors path
  2960. timestamp: number -- scanned at
  2961. }},
  2962. scripts: {[string] : string}, -- index: name, value: code
  2963. settings: {
  2964. codeColors: {
  2965. background: Color3?,
  2966. iden: Color3?,
  2967. keyword: Color3?,
  2968. builtin: Color3?,
  2969. string: Color3?,
  2970. number: Color3?,
  2971. comment: Color3?,
  2972. operator: Color3?
  2973. },
  2974. canDebug: bool
  2975. }
  2976. };]]
  2977.  
  2978. -- utils
  2979. local function newConfigs()
  2980. return {
  2981. games = {},
  2982. scripts = {},
  2983. settings = {
  2984. codeColors = table.clone(codeColors),
  2985. canDebug = canDebug
  2986. }
  2987. }
  2988. end
  2989.  
  2990.  
  2991.  
  2992. local function deepCopy(original)
  2993. local copy = {}
  2994. for k, v in pairs(original) do
  2995. if type(v) == "table" then
  2996. v = deepCopy(v)
  2997. end
  2998. copy[k] = v
  2999. end
  3000. return copy
  3001. end
  3002.  
  3003.  
  3004.  
  3005. local function readFile(fileName)
  3006. local int, err = pcall(readfile, fileName);
  3007. if int then
  3008. return err;
  3009. end
  3010. end
  3011.  
  3012. -- core
  3013. local function readConfig()
  3014. local configs;
  3015. local data = readFile(CONFIG_FILE);
  3016. local integrity, parsed = pcall(httpService.JSONDecode, httpService, data);
  3017.  
  3018. if integrity then
  3019. local settings = {
  3020. codeColors = {}
  3021. };
  3022. configs = {};
  3023. configs.games = type(parsed.games) == "table" and parsed.games or {};
  3024. configs.scripts = type(parsed.scripts) == "table" and parsed.scripts or {};
  3025. -- canDebug
  3026. if parsed.canDebug == nil then
  3027. settings.canDebug = canDebug;
  3028. else
  3029. settings.canDebug = parsed.settings.canDebug;
  3030. end
  3031. -- load colors
  3032. if type(parsed.settings) == "table" then
  3033. -- decode color3
  3034. for name, colorObj in next, parsed.settings.codeColors do
  3035. if typeof(colorObj) ~= "table" then
  3036. settings.codeColors[name] = nil;
  3037. continue;
  3038. end
  3039. -- ceck
  3040. colorObj.R = type(colorObj.R) == "number" and colorObj.R or 1;
  3041. colorObj.G = type(colorObj.G) == "number" and colorObj.G or 1;
  3042. colorObj.B = type(colorObj.B) == "number" and colorObj.B or 1;
  3043.  
  3044. settings.codeColors[name] = Color3.new(colorObj.R, colorObj.G, colorObj.B);
  3045. end
  3046. else
  3047. settings.codeColors = codeColors;
  3048. end;
  3049. configs.settings = settings;
  3050. -- sanitize tables
  3051. for name, color in next, settings.codeColors do
  3052. if typeof(color) ~= "Color3" or codeColors[name] == nil then
  3053. configs.codeColors[name] = nil;
  3054. end
  3055. end
  3056. -- load defaults
  3057. for name, default in next, codeColors do
  3058. if settings.codeColors[name] == nil then
  3059. settings.codeColors[name] = default;
  3060. end
  3061. end
  3062. -- sanitize scripts
  3063. for name, src in next, configs.scripts do
  3064. if type(name) ~= "string" or type(src) ~= "string" then
  3065. configs.scripts[name] = nil;
  3066. end
  3067. end
  3068. else
  3069. configs = newConfigs();
  3070. end
  3071.  
  3072. return configs;
  3073. end
  3074.  
  3075. local config = readConfig();
  3076.  
  3077. local configSaved = Instance.new("BindableEvent");
  3078. local function saveConfigs()
  3079. local toSave = deepCopy(config);
  3080.  
  3081. -- convert Color3 to a decodable object
  3082. for name, color in next, toSave.settings.codeColors do
  3083. toSave.settings.codeColors[name] = {
  3084. R = color.R,
  3085. G = color.G,
  3086. B = color.B
  3087. };
  3088. end
  3089.  
  3090. local integrity, encoded = pcall(httpService.JSONEncode, httpService, toSave);
  3091. if integrity then
  3092. configSaved:Fire();
  3093. writefile(CONFIG_FILE, encoded);
  3094. if runService:IsStudio() then
  3095. print(encoded)
  3096. end
  3097. end
  3098. end
  3099.  
  3100. return {
  3101. data = config,
  3102. save = saveConfigs,
  3103. codeColors = codeColors,
  3104. configSaved = configSaved.Event
  3105. }
  3106.  
  3107. end;
  3108. };
  3109. G2L_MODULES[G2L["93"]] = {
  3110. Closure = function()
  3111. local script = G2L["93"];
  3112. -- this module is responsible to return the current code tab text
  3113. -- and handle the tab system
  3114.  
  3115. -- globals
  3116. local size = 1;
  3117. local TOP = 0;
  3118. local IDX_TAB = {};
  3119. local IDX_SRC = {}; -- index:string, code:string
  3120.  
  3121.  
  3122. -- ui
  3123. local openScripts = script.Parent.Main.BodyClipping.Executor.InnerBody.OpenScripts;
  3124.  
  3125. -- vars
  3126. local cTab = "1"; -- current tab
  3127. local template = openScripts["1"]:Clone();
  3128. local textbox = openScripts.Parent.SourceBg.Source.ScrollingFrame.SourceBox;
  3129. local addBtn = openScripts["999"];
  3130.  
  3131. openScripts["1"]:Destroy();
  3132.  
  3133. -- colors
  3134. local tabUns = Color3.fromRGB(125, 125, 125);
  3135. local tabSel = Color3.fromRGB(221, 221, 221);
  3136.  
  3137. -- tabs updater
  3138. textbox.InputEnded:Connect(function()
  3139. IDX_SRC[cTab] = textbox.Text;
  3140. end)
  3141.  
  3142. local function selectTab(id)
  3143. -- no id passed case
  3144. id = id or "1";
  3145. -- ignore call
  3146. if id == cTab then
  3147. return
  3148. end
  3149. -- get old tab
  3150. local oldTab = cTab and IDX_TAB[cTab];
  3151. local tab = IDX_TAB[id];
  3152. -- off animation
  3153. if oldTab then
  3154. oldTab.Text.TextColor3 = tabUns;
  3155. end
  3156. -- on animation
  3157. tab.Text.TextColor3 = tabSel;
  3158. -- render new code
  3159. textbox.Text = IDX_SRC[id];
  3160. -- set current tab
  3161. cTab = tab.Name;
  3162. end
  3163.  
  3164. local function resizeParentCanvas()
  3165. -- calculate scroll x size
  3166. local xSize = size * template.AbsoluteSize.X + (size + 1) * 5 + addBtn.AbsoluteSize.X;
  3167. openScripts.CanvasSize = UDim2.new(0, xSize, 0, 0);
  3168. end
  3169.  
  3170. local function setupTab(tab)
  3171. local id = tab.Name;
  3172. -- special case
  3173. if id == "1" then
  3174. tab.X:Destroy();
  3175. -- destroy tab
  3176. else
  3177. tab.X.MouseButton1Click:Connect(function()
  3178. -- select a new tab if the cTab is begin destroied
  3179. if cTab == id then
  3180. selectTab() -- select the first next tab
  3181. end;
  3182. tab:Destroy();
  3183. IDX_TAB[id] = nil;
  3184. IDX_SRC[id] = nil;
  3185. size -= 1;
  3186. resizeParentCanvas();
  3187. end)
  3188. end
  3189. -- text
  3190. tab.Text.Text = "Script " .. id;
  3191. -- animations
  3192. tab.Hitbox.MouseButton1Click:Connect(function()
  3193. selectTab(id);
  3194. end)
  3195. end
  3196.  
  3197. local function newTab()
  3198. -- increment id & size counters
  3199. TOP = TOP + 1;
  3200. size += 1;
  3201. -- make nwe tab
  3202. local tab = template:Clone();
  3203. tab.Name = tostring(TOP);
  3204. setupTab(tab);
  3205. tab.Parent = openScripts;
  3206. -- store
  3207. IDX_TAB[tab.Name] = tab;
  3208. IDX_SRC[tab.Name] = "";
  3209. resizeParentCanvas();
  3210. -- select
  3211. selectTab(tab.Name);
  3212. end
  3213. newTab(); -- first tab
  3214.  
  3215.  
  3216. -- new tab connection
  3217. addBtn.Hitbox.MouseButton1Click:Connect(newTab);
  3218.  
  3219.  
  3220.  
  3221. return {
  3222. getCode = function()
  3223. return IDX_SRC[cTab]; -- easy peasy lemon squisy ;D
  3224. end,
  3225. setCode = function(code)
  3226. textbox.Text = code;
  3227. end,
  3228. clearCurrent = function()
  3229. textbox.Text = "";
  3230. end,
  3231. };
  3232. end;
  3233. };
  3234. G2L_MODULES[G2L["94"]] = {
  3235. Closure = function()
  3236. local script = G2L["94"];
  3237. local utils = require(script.Parent.utils);
  3238. --[[
  3239. _ ___ __ ___ __ _____ _
  3240. /\/\ /_\ / _ \ /\ \ \/___\/ / \_ \/_\
  3241. / \ //_\\ / /_\// \/ // // / / /\//_\\
  3242. / /\/\ \/ _ \/ /_\\/ /\ / \_// /___/\/ /_/ _ \
  3243. \/ \/\_/ \_/\____/\_\ \/\___/\____/\____/\_/ \_/ LIB
  3244. This is an unreleased and uncompleted ui library.
  3245. ]]
  3246.  
  3247. local GetMeta;
  3248. local _PREFIX = "\226\128\139\226\128\139\226\128\139";
  3249. local BLANK = function() return true end;
  3250.  
  3251.  
  3252. -- Services
  3253. local UserInputService = game:GetService("UserInputService");
  3254. local TweenService = game:GetService("TweenService");
  3255. local TeleportService = game:GetService("TeleportService");
  3256. local HttpService = game:GetService("HttpService");
  3257. local TextService = game:GetService("TextService");
  3258. local RunService = game:GetService("RunService");
  3259. local CoreGui = game:GetService("CoreGui");
  3260. local Players = game:GetService("Players");
  3261. local Debris = game:GetService("Debris");
  3262. local Lighting = game:GetService("Lighting");
  3263. local SoundService = game:GetService("SoundService");
  3264. local MarketPlace = game:GetService('MarketplaceService');
  3265. local Player = Players.LocalPlayer;
  3266. local PlayerGui = Player and Player.PlayerGui;
  3267. local Mouse = Player and Player:GetMouse();
  3268.  
  3269. local get_hidden_gui = get_hidden_gui or gethui or function()
  3270. -- Test Ui
  3271. local testUI;
  3272. -- Text
  3273. local Integrity = pcall(function() testUI = Instance.new("ScreenGui", CoreGui) end);
  3274. -- check
  3275. if Integrity then
  3276. testUI:Destroy();
  3277. return CoreGui;
  3278. else
  3279. return PlayerGui;
  3280. end
  3281. end;
  3282. local protect_gui = protect_gui or syn and syn.protect_gui or function() end;
  3283.  
  3284. -- Magnolia Utils
  3285. local M_Utils do
  3286. local Charset = {} do -- [0-9a-zA-Z]
  3287. for c = 48, 57 do table.insert(Charset, string.char(c)) end
  3288. for c = 65, 90 do table.insert(Charset, string.char(c)) end
  3289. for c = 97, 122 do table.insert(Charset, string.char(c)) end
  3290. end;
  3291. M_Utils = {
  3292. SearchField = function(Table, Field, KeySens)
  3293. -- foreach
  3294. for Field2 in next, Table do
  3295. -- KeySens
  3296. local _Field = KeySens and Field:lower() or Field;
  3297. local _Field2 = KeySens and Field2:lower() or Field2;
  3298. if Field2:find(Field) then
  3299. return Field2;
  3300. end;
  3301. end;
  3302. end;
  3303. CountTable = function(Table)
  3304. local Count = 0;
  3305. -- Foreach
  3306. for i,v in next, Table do
  3307. Count = Count + 1;
  3308. end
  3309. return Count;
  3310. end;
  3311. CloneTable = function(t)
  3312. -- Check
  3313. if type(t) == 'table' then
  3314. -- Clone
  3315. local Clone = {};
  3316. table.foreach(t, function(i, v)
  3317. Clone[i] = v;
  3318. end);
  3319. return Clone;
  3320. end;
  3321. end;
  3322. RandomString = function(length)
  3323. -- Randomizer
  3324. local c = 0;
  3325. -- Return
  3326. if not length or length <= 0 then return '' end;
  3327. -- Concatenation
  3328. local Res = '';
  3329. for i=1, length do
  3330. math.randomseed(os.time() + c);
  3331. Res = Res .. Charset[math.random(1, #Charset)];
  3332. c = c + 1;
  3333. end;
  3334. return Res;
  3335. end,
  3336. DarkerColor = function(Color, DecreaseValue)
  3337. local Hue, Sat, Value = Color:ToHSV();
  3338. Value = Value - DecreaseValue;
  3339. if Value < 0 then
  3340. Value = 0;
  3341. end
  3342. return Color3.fromHSV(Hue, Sat, Value);
  3343. end,
  3344.  
  3345. };
  3346. end;
  3347.  
  3348. -- Magnolia Enums
  3349. local M_Enums, M_ReadOnly, M_IsMagnoliaEnum do
  3350.  
  3351. local MainPath = 'MagnoliaEnums';
  3352.  
  3353. -- Magnolia ReadOnly
  3354. M_ReadOnly = function()
  3355. return error("can't set value, field is read-only.");
  3356. end;
  3357.  
  3358. -- Enums Creation
  3359. M_Enums = newproxy(true);
  3360. M_EnumsMeta = getmetatable(M_Enums);
  3361. -- Enums Storage
  3362. local Data = {};
  3363. local References = {};
  3364. M_EnumsMeta.Data = Data;
  3365.  
  3366. -- Enums Meta
  3367. M_EnumsMeta.__index = function(EnumsMeta, Field)
  3368.  
  3369. -- get
  3370. local Value = Data[Field];
  3371. if Value then
  3372. return Value;
  3373. end;
  3374.  
  3375. -- Field research
  3376. local PossibleField = M_Utils.SearchField(Data, Field, true);
  3377. if PossibleField then
  3378. return error('Unable to find Enums, ' .. Field .. '. did you mean, ' .. PossibleField);
  3379. end
  3380.  
  3381. -- No Field Found
  3382. return error('Unable to find Enums, ' .. Field);
  3383. end;
  3384. M_EnumsMeta.__newindex = function(EnumsMeta, TableName, EnumTable)
  3385. if type(EnumTable) == 'table' then
  3386.  
  3387.  
  3388. for EnumName, EnumValue in next, EnumTable do
  3389. -- Create Enum
  3390. local EnumProxy = newproxy(true);
  3391. local EnumMeta = getmetatable(EnumProxy);
  3392. -- Enum Storage
  3393. EnumMeta.Path = MainPath .. "." .. TableName .. "." .. EnumName;
  3394. -- Enum Core
  3395. EnumMeta.__index = {Value = EnumValue, Name = EnumName, Type = TableName};
  3396. EnumMeta.__newindex = M_ReadOnly;
  3397. EnumMeta.__tostring = function() return EnumMeta.Path end;
  3398. -- Replace EnumTable
  3399. EnumTable[EnumName] = EnumProxy;
  3400. -- Reference
  3401. References[EnumProxy] = EnumTable;
  3402. -- Value Protection
  3403. if type(EnumValue) == 'table' then
  3404. setmetatable(EnumValue, {__newindex = M_ReadOnly})
  3405. end;
  3406. end;
  3407. -- Protect & ReadOnly EnumTable
  3408. setmetatable(EnumTable, {
  3409. __newindex = M_ReadOnly;
  3410. })
  3411. Data[TableName] = EnumTable;
  3412. else
  3413. return error('what the frik, how can an Enum not be a table, you bakaro!!');
  3414. end;
  3415. end;
  3416.  
  3417. -- Enums Registration
  3418. do
  3419. M_Enums.CornerType = {
  3420. Sharp = "rbxassetid://3457842171",
  3421. Smooth = "rbxassetid://3457843087",
  3422. Edged = "rbxassetid://3457843868",
  3423. None = "",
  3424. [0] = "rbxassetid://3457842171",
  3425. [1] = "rbxassetid://3457843087",
  3426. [2] = "rbxassetid://3457843868",
  3427. [3] = ""
  3428. };
  3429. M_Enums.SliderType = {
  3430. Box = M_Enums.CornerType.Sharp.Value,
  3431. Round = M_Enums.CornerType.Smooth.Value,
  3432. Diamond = M_Enums.CornerType.Edged.Value,
  3433. Custom = M_Enums.CornerType.None.Value
  3434. };
  3435. M_Enums.CheckBoxType = {
  3436. Sharp = 0,
  3437. Smooth = 1,
  3438. Circular = 2,
  3439. Diamond = 3,
  3440. None = 4,
  3441. [0] = 0,
  3442. [1] = 1,
  3443. [2] = 2,
  3444. [3] = 3,
  3445. [4] = 4
  3446. };
  3447. M_Enums.FillBoxType = {
  3448. Sharp = "rbxassetid://4049002850",
  3449. Smooth = "rbxassetid://4049766910",
  3450. Circular = "rbxassetid://4049877539",
  3451. [0] = "rbxassetid://4049002850",
  3452. [1] = "rbxassetid://4049766910",
  3453. [2] = "rbxassetid://4049877539"
  3454. };
  3455. M_Enums.NotificationType = {
  3456. Info = "rbxassetid://4057220511",
  3457. Error = "rbxassetid://4057319805",
  3458. Success = "rbxassetid://5774307837",
  3459. Warn = "rbxassetid://5849784138",
  3460. None = "",
  3461.  
  3462. [0] = "rbxassetid://4057220511",
  3463. [1] = "rbxassetid://4057319805",
  3464. [2] = "rbxassetid://5774307837",
  3465. [3] = "rbxassetid://5849784138",
  3466. [4] = ""
  3467. };
  3468. M_Enums.TabControlType = {
  3469. Top = 0,
  3470. Right = 1,
  3471. Bottom = 2,
  3472. Left = 3,
  3473. [0] = 0,
  3474. [1] = 1,
  3475. [2] = 2,
  3476. [3] = 3
  3477. };
  3478. M_Enums.MetroLocation = {
  3479. TopLeft = {
  3480. AnchorPoint = Vector2.new(0, 0),
  3481. Position = UDim2.new(0, 0, 0, 0),
  3482. SizeConstraint = "X",
  3483. ThicknessConstraint = "Y",
  3484. BOffsetX = 1,
  3485. BOffsetY = 1
  3486. },
  3487. TopCenter = {
  3488. AnchorPoint = Vector2.new(0.5, 0),
  3489. Position = UDim2.new(0.5, 0, 0, 0),
  3490. SizeConstraint = "X",
  3491. ThicknessConstraint = "Y",
  3492. BOffsetX = 0,
  3493. BOffsetY = 1
  3494. },
  3495. TopRight = {
  3496. AnchorPoint = Vector2.new(1, 0),
  3497. Position = UDim2.new(1, 0, 0, 0),
  3498. SizeConstraint = "X",
  3499. ThicknessConstraint = "Y",
  3500. BOffsetX = -1,
  3501. BOffsetY = 1
  3502. },
  3503. LeftTop = {
  3504. AnchorPoint = Vector2.new(0, 0),
  3505. Position = UDim2.new(0, 0, 0, 0),
  3506. SizeConstraint = "Y",
  3507. ThicknessConstraint = "X",
  3508. BOffsetX = 1,
  3509. BOffsetY = 1
  3510. },
  3511. LeftCenter = {
  3512. AnchorPoint = Vector2.new(0, 0.5),
  3513. Position = UDim2.new(0, 0, 0.5, 0),
  3514. SizeConstraint = "Y",
  3515. ThicknessConstraint = "X",
  3516. BOffsetX = 1,
  3517. BOffsetY = 0
  3518. },
  3519. LeftBottom = {
  3520. AnchorPoint = Vector2.new(0, 1),
  3521. Position = UDim2.new(0, 0, 1, 0),
  3522. SizeConstraint = "Y",
  3523. ThicknessConstraint = "X",
  3524. BOffsetX = 1,
  3525. BOffsetY = -1
  3526. },
  3527. RightTop = {
  3528. AnchorPoint = Vector2.new(1, 0),
  3529. Position = UDim2.new(1, 0, 0, 0),
  3530. SizeConstraint = "Y",
  3531. ThicknessConstraint = "X",
  3532. BOffsetX = -1,
  3533. BOffsetY = 1
  3534. },
  3535. RightCenter = {
  3536. AnchorPoint = Vector2.new(1, 0.5),
  3537. Position = UDim2.new(1, 0, 0.5, 0),
  3538. SizeConstraint = "Y",
  3539. ThicknessConstraint = "X",
  3540. BOffsetX = -1,
  3541. BOffsetY = 0
  3542. },
  3543. RightBottom = {
  3544. AnchorPoint = Vector2.new(1, 1),
  3545. Position = UDim2.new(1, 0, 1, 0),
  3546. SizeConstraint = "Y",
  3547. ThicknessConstraint = "X",
  3548. BOffsetX = -1,
  3549. BOffsetY = -1
  3550. },
  3551. BottomLeft = {
  3552. AnchorPoint = Vector2.new(0, 1),
  3553. Position = UDim2.new(0, 0, 1, 0),
  3554. SizeConstraint = "X",
  3555. ThicknessConstraint = "Y",
  3556. BOffsetX = 1,
  3557. BOffsetY = -1
  3558. },
  3559. BottomCenter = {
  3560. AnchorPoint = Vector2.new(0.5, 1),
  3561. Position = UDim2.new(0.5, 0, 1, 0),
  3562. SizeConstraint = "X",
  3563. ThicknessConstraint = "Y",
  3564. BOffsetX = 0,
  3565. BOffsetY = -1
  3566. },
  3567. BottomRight = {
  3568. AnchorPoint = Vector2.new(1, 1),
  3569. Position = UDim2.new(1, 0, 1, 0),
  3570. SizeConstraint = "X",
  3571. ThicknessConstraint = "Y",
  3572. BOffsetX = -1,
  3573. BOffsetY = -1
  3574. };
  3575. };
  3576. end;
  3577.  
  3578. -- Enums Protection
  3579. M_EnumsMeta.__newindex = M_ReadOnly;
  3580.  
  3581. -- Is Enum
  3582. M_IsMagnoliaEnum = function(MagnoliaEnum)
  3583. if References[MagnoliaEnum] then
  3584. return true;
  3585. else
  3586. return false;
  3587. end;
  3588. end;
  3589. end
  3590.  
  3591. -- Magnolia Librarys
  3592. local M_ModernColors, M_Math, M_MathMap, M_Defaults do
  3593.  
  3594. -- Modern Colors Source: https://flatuicolors.com/
  3595. do
  3596. M_ModernColors = {
  3597. DimMidnightBlue = Color3.fromRGB(32, 34, 37),
  3598. MidnightBlue = Color3.fromRGB(47, 49, 54),
  3599. LightMidnightBlue = Color3.fromRGB(54, 57, 63),
  3600. WetAsphalt = Color3.fromRGB(44, 62, 80),
  3601. Asphalt = Color3.fromRGB(52, 73, 94),
  3602. Midnight = Color3.fromRGB(47, 53, 66),
  3603. ElectricBlue = Color3.fromRGB(52, 152, 219),
  3604. Blurple = Color3.fromRGB(72, 52, 212),
  3605. Exodus = Color3.fromRGB(104, 109, 224),
  3606. Komaru = Color3.fromRGB(48, 51, 107),
  3607. DimKomaru = Color3.fromRGB(19, 15, 64),
  3608. LightExodus = Color3.fromRGB(126, 214, 223),
  3609. Amythest = Color3.fromRGB(155, 89, 182),
  3610. Wisteria = Color3.fromRGB(142, 68, 173),
  3611. Emerald = Color3.fromRGB(46, 204, 113),
  3612. Carrot = Color3.fromRGB(230, 126, 34),
  3613. Orange = Color3.fromRGB(243, 156, 18),
  3614. SunFlower = Color3.fromRGB(241, 196, 15),
  3615. Ruby = Color3.fromRGB(231, 76, 60),
  3616. Rose = Color3.fromRGB(192, 57, 43),
  3617. LightPink = Color3.fromRGB(255, 121, 121),
  3618. DimPink = Color3.fromRGB(235, 77, 75),
  3619. Pink = Color3.fromRGB(224, 86, 253),
  3620. SteelPink = Color3.fromRGB(224, 86, 253),
  3621. Light = Color3.fromRGB(213, 217, 255),
  3622. Cloud = Color3.fromRGB(236, 240, 241),
  3623. Silver = Color3.fromRGB(189, 195, 199),
  3624. Concrete = Color3.fromRGB(149, 165, 166),
  3625. Abestos = Color3.fromRGB(127, 140, 141)
  3626. };
  3627. end;
  3628.  
  3629. -- Math Library
  3630. do
  3631. M_Math = {
  3632. Map = function(Num, Start1, Stop1, Start2, Stop2)
  3633. return ((Num-Start1)/(Stop1-Start1))*(Stop2-Start2)+Start2;
  3634. end,
  3635. MapColor = function(StartColor, EndColor, StartFrame, EndFrame, Frame)
  3636. local Map = M_Math.Map;
  3637. return Color3.new(
  3638. Map(Frame, StartFrame, EndFrame, StartColor.r, EndColor.r),
  3639. Map(Frame, StartFrame, EndFrame, StartColor.g, EndColor.g),
  3640. Map(Frame, StartFrame, EndFrame, StartColor.b, EndColor.b)
  3641. )
  3642. end,
  3643. Round = function(Num)
  3644. local Low = math.floor(Num);
  3645. local High = math.floor(Num) + 1;
  3646. local LV = -(Low - Num);
  3647. local HV = High - Num;
  3648. if (HV > LV) then
  3649. return Low;
  3650. else
  3651. return High;
  3652. end;
  3653. end,
  3654. ZigZag = function(Offset) -- used for rgb effects
  3655. return math.acos(math.cos(Offset*math.pi))/math.pi;
  3656. end
  3657. };
  3658. M_MathMap = M_Math.Map;
  3659. end;
  3660.  
  3661. -- Defaults
  3662. do
  3663. M_Defaults = {
  3664. --Background:Corners
  3665. CornerSize = 6,
  3666. CornerType = M_Enums.CornerType.Smooth,
  3667. --Background:Self
  3668. BackgroundColor = M_ModernColors.MidnightBlue,
  3669. BackgroundTransparency = 0,
  3670. --Background:Borders
  3671. BorderSize = 0,
  3672. BorderColor = Color3.new(0, 0, 0),
  3673. BorderTransparency = 1,
  3674. --Text Properties
  3675. TextColor = M_ModernColors.Silver,
  3676. TextTransparency = 0,
  3677. Font = Enum.Font.Legacy,
  3678. --Text:Stroke
  3679. TextStrokeColor = M_ModernColors.Abestos,
  3680. TextStrokeTransparency = 1,
  3681. --Text:Alignment
  3682. TextXAlignment = Enum.TextXAlignment.Center,
  3683. TextYAlignment = Enum.TextYAlignment.Center,
  3684. --Text:Placeholder
  3685. PlaceholderColor = M_ModernColors.Silver,
  3686. --Global
  3687. ZIndex = 1,
  3688. SecondaryColor = M_ModernColors.DimMidnightBlue,
  3689. HighlightColor = M_ModernColors.ElectricBlue,
  3690. MetroStyle = true
  3691. };
  3692. end;
  3693.  
  3694. end;
  3695.  
  3696. -- Instance Core
  3697. local M_GC = {}; -- userdata => true "store all magnolia instances which got destroyed"
  3698. local M_CreateClass, M_New, M_IsMagnoliaInstance, M_GetInstance, M_NewCanvas, M_Data, DefaultMethods do
  3699.  
  3700. -- Main Vars
  3701. local Data = {}; -- Store class data
  3702. local References = {}; -- [index: proxy, value: meta]
  3703. local Parsed = {}; -- [index: roblox instance, value: magnolia instance]
  3704. local Meta = {}; -- Contains all metamethods
  3705. M_Data = Data;
  3706.  
  3707. local RobloxRouting = {
  3708. --Properties
  3709. --Base2D
  3710. AbsolutePosition = "__Base2D",
  3711. AbsoluteRotation = "__Base2D",
  3712. AbsoluteSize = "__Base2D",
  3713. Active = "__Base2D",
  3714. AnchorPoint = "__Base2D",
  3715. ClipsDescendants = "__Base2D",
  3716. LayoutOrder = "__Base2D",
  3717. Position = "__Base2D",
  3718. Rotation = "__Base2D",
  3719. Size = "__Base2D",
  3720. SizeConstraint = "__Base2D",
  3721. Visible = "__Base2D",
  3722. ZIndex = "__Base2D",
  3723. Parent = "__Base2D",
  3724. Name = "__Base2D",
  3725.  
  3726. --TextRender
  3727. Font = "__TextRender",
  3728. LineHeight = "__TextRender",
  3729. LocalizedText = "__TextRender",
  3730. Text = "__TextRender",
  3731. TextBounds = "__TextRender",
  3732. TextColor3 = "__TextRender",
  3733. TextFits = "__TextRender",
  3734. TextScaled = "__TextRender",
  3735. TextSize = "__TextRender",
  3736. TextStrokeColor3 = "__TextRender",
  3737. TextStrokeTransparency = "__TextRender",
  3738. TextTransparency = "__TextRender",
  3739. TextTruncate = "__TextRender",
  3740. TextWrapped = "__TextRender",
  3741. TextXAlignment = "__TextRender",
  3742. TextYAlignment = "__TextRender",
  3743.  
  3744. -- UICorner
  3745. CornerRadius = "__UICorner",
  3746.  
  3747. --ImageRender
  3748. HoverImage = "__ImageRender",
  3749. Image = "__ImageRender",
  3750. ImageColor3 = "__ImageRender",
  3751. ImageRectOffset = "__ImageRender",
  3752. ImageRectSize = "__ImageRender",
  3753. ImageTransparency = "__ImageRender",
  3754. IsLoaded = "__ImageRender",
  3755. PressedImage = "__ImageRender",
  3756. ScaleType = "__ImageRender",
  3757. SliceCenter = "__ImageRender",
  3758. SliceScale = "__ImageRender",
  3759. TileSize = "__ImageRender",
  3760.  
  3761. --TextBox
  3762. IsFocused = "__TextBox",
  3763. PlaceholderColor3 = "__TextBox",
  3764. PlaceholderText = "__TextBox",
  3765. ClearTextOnFocus = "__TextBox",
  3766. TextEditable = "__TextBox",
  3767. CursorPosition = "__TextBox",
  3768. SelectionStart = "__TextBox",
  3769. Selectable = "__TextBox",
  3770.  
  3771. --Background
  3772. Color = "__Background",
  3773. BackgroundColor = "__Background",
  3774. BackgroundColor3 = "__Background",
  3775. BackgroundTransparency = "__Background",
  3776. Transparency = "__Background",
  3777. Type = "__Background",
  3778. CornerType = "__Background",
  3779. CornerSize = "__Background",
  3780. TopLeft = "__Background",
  3781. TopBorder = "__Background",
  3782. TopRight = "__Background",
  3783. LeftBorder = "__Background",
  3784. RightBorder = "__Background",
  3785. BottomLeft = "__Background",
  3786. BottomBorder = "__Background",
  3787. BottomRight = "__Background",
  3788.  
  3789. BorderSizePixel = "__Background",
  3790. BorderSize = "__Background",
  3791. BorderColor3 = "__Background",
  3792. BorderColor = "__Background",
  3793. BorderTransparency = "__Background",
  3794.  
  3795. --Methods
  3796. --Background
  3797. CreateBorder = "__Background",
  3798. --Base2D
  3799. TweenPosition = "__Base2D",
  3800. TweennSize = "__Base2D",
  3801. TweenSizeAndPosition = "__Base2D",
  3802.  
  3803. --Hitbox
  3804. SetTextFromInput = "__CHitbox",
  3805.  
  3806. --TextBox
  3807. CaptureFocus = "__TextBox",
  3808. ReleaseFocus = "__TextBox",
  3809. --Signals
  3810. --Hitbox
  3811. MouseButton1Click = "__CHitbox",
  3812. MouseButton2Click = "__CHitbox",
  3813. MouseButton1Down = "__CHitbox",
  3814. MouseButton2Down = "__CHitbox",
  3815. MouseButton1Up = "__CHitbox",
  3816. MouseButton2Up = "__CHitbox",
  3817. MouseEnter = "__CHitbox",
  3818. MouseLeave = "__CHitbox",
  3819. MouseMoved = "__CHitbox",
  3820. MouseWheelBackward = "__Base2D",
  3821. MouseWheelForward = "__Base2D",
  3822. InputBegan = "__CHitbox",
  3823. InputEnded = "__CHitbox",
  3824. InputChanged = "__CHitbox",
  3825.  
  3826. --Textbox
  3827. Focused = "__TextBox",
  3828. FocusLost = "__TextBox"
  3829. };
  3830.  
  3831. -- Get Instance
  3832. M_GetInstance = function(V)
  3833. if typeof(V) == 'Instance' then
  3834. return V;
  3835. else
  3836. local Meta = References[V];
  3837. return Meta and Meta.__Instance;
  3838. end
  3839. end;
  3840.  
  3841. M_NewCanvas = function()
  3842. -- Parent
  3843. local Parent = get_hidden_gui();
  3844. -- Creation
  3845. local Canvas = Instance.new('ScreenGui');
  3846. -- Synapse Protection
  3847. if protect_gui then
  3848. protect_gui(Canvas);
  3849. end;
  3850. -- Setting Up
  3851. Canvas.Name = M_Utils.RandomString(math.random(5, 10));
  3852. Canvas.ZIndexBehavior = Enum.ZIndexBehavior.Sibling;
  3853. Canvas.Parent = Parent;
  3854. return Canvas;
  3855. end;
  3856.  
  3857. -- Defaul Methods
  3858. do
  3859. -- Contains all default methods
  3860. DefaultMethods = {
  3861. Destroy = function(Proxy)
  3862. local Meta = GetMeta(Proxy);
  3863. -- gc object
  3864. M_GC[Proxy] = true;
  3865. -- remove events
  3866. for i, v in next, Meta do
  3867. if v ~= Proxy then
  3868. if typeof(v) == 'Instance' then -- instance case
  3869. if v.ClassName == 'BindableEvent' then -- remove custom events
  3870. v:Destroy();
  3871. end
  3872. elseif type(v) == 'userdata' and References[v] and M_GC[v] == nil then
  3873. v:Destroy();
  3874. end;
  3875. end;
  3876. end;
  3877. -- remove main instance
  3878. Meta.__Instance:Destroy();
  3879. end;
  3880. GetMeta = function(Proxy)
  3881. return References[Proxy];
  3882. end;
  3883. };
  3884. end;
  3885.  
  3886. GetMeta = DefaultMethods.GetMeta;
  3887.  
  3888. -- M_CanWrite (Basically VCf_IsA)
  3889. local M_CanWrite = function(FieldData, Field, Value)
  3890. if FieldData then
  3891. -- Format Info
  3892. local Instruction = FieldData:byte(1, 1);
  3893. local Nullable = FieldData:byte(2, 2);
  3894. local TypeString = FieldData:sub(4, -1);
  3895. -- Nullable check
  3896. if Value == nil and Nullable == 1 then
  3897. return Value;
  3898. end;
  3899. -- Instruction Proccess
  3900. if Instruction == 0 then -- Is a Magnolia Enum?
  3901. -- Check
  3902. if M_IsMagnoliaEnum(Value) and Value.Type == TypeString then
  3903. return Value;
  3904. else
  3905. return false, 'Invalid MagnoliaEnum value. Expected ' .. TypeString .. '.';
  3906. end;
  3907. elseif Instruction == 1 then -- Is a Roblox Instance?
  3908. local BaseInstance = M_GetInstance(Value);
  3909. if typeof(BaseInstance) == 'Instance' then
  3910. return BaseInstance;
  3911. else
  3912. return false, 'Invalid Base Instance for ' .. Field .. '. Got ' .. typeof(Value) .. '.';
  3913. end
  3914. elseif Instruction == 2 then -- Accept Everything
  3915. return Value;
  3916. elseif Instruction == 3 or Instruction == 4 then -- type/typeof check
  3917. -- type buffer
  3918. local type = Instruction == 3 and type or typeof;
  3919. -- check
  3920. if type(Value) == TypeString then
  3921. return Value;
  3922. else
  3923. return false, 'Invalid type for ' .. Field .. '. ' .. TypeString .. ' expected, got ' .. typeof(Value) .. '.';
  3924. end
  3925. end;
  3926. end;
  3927. end;
  3928.  
  3929. -- M_CreateClass
  3930. M_CreateClass = function(ClassName, Fields, Routing, Constructor, DrawRegister, Methods)
  3931. -- Class Unique Check
  3932. if Data[ClassName] then
  3933. warn('You are creating a Magnolia class withe the existing ClassName, ' .. ClassName .. '. Your new class will replace the old one.')
  3934. end;
  3935. -- Data creation
  3936. local ClassData = {};
  3937. ClassData.Fields = Fields;
  3938. ClassData.Routing = Routing;
  3939. ClassData.Constructor = Constructor;
  3940. ClassData.ClassName = ClassName;
  3941. ClassData.Methods = Methods;
  3942. -- Initialize Draw Logic
  3943. local Draw = setmetatable({}, {__index = function() return function() end; end}); -- every draw attemp to not registred fields get ignored
  3944. DrawRegister(Draw);
  3945. ClassData.Draw = Draw;
  3946. -- Remove Useless Routings
  3947. for RouteName, RoutePointer in next, Routing do
  3948. if not Fields[RoutePointer] and not Methods[RoutePointer] then
  3949. Routing[RouteName] = nil;
  3950. error('Magnolia Create Class, figured out that you defined a route ' .. RouteName .. ', that point to an inexistent field ' .. RoutePointer);
  3951. end;
  3952. end;
  3953. -- Load Default Methods
  3954. for Field, Method in next, DefaultMethods do
  3955. if not(Fields[Field]) then
  3956. Fields[Field] = {'\3\0\1function', Method}; -- set method in ClassData Fields
  3957. end;
  3958. end;
  3959. -- Load Methods
  3960. for Field, Method in next, Methods do
  3961. Fields[Field] = {'\3\0\1function', Method}; -- set method in ClassData Fields
  3962. end;
  3963. -- Load ClassName Field
  3964. if not(Fields['ClassName']) then
  3965. Fields['ClassName'] = {'\3\0\1string', ClassName};
  3966. end;
  3967. -- Store Data
  3968. Data[ClassName] = ClassData;
  3969. -- return Data
  3970. return ClassData
  3971. end;
  3972.  
  3973. -- M_Meta [Contains Magnolia Instances' brain] TODO
  3974. M_Meta = {
  3975. __index = function(Proxy, Field)
  3976. -- Get Meta Data
  3977. local Meta = References[Proxy];
  3978. local ClassData = Meta.__ClassData;
  3979. local Fields = Meta.__Fields;
  3980. -- First Index
  3981. if ClassData.Fields[Field] then
  3982. return Fields[Field];
  3983. end
  3984. -- Route System
  3985. local RouteField = ClassData.Routing[Field];
  3986. if RouteField then
  3987. return Fields[RouteField];
  3988. end;
  3989. -- Roblox Route System
  3990. local RobloxField = RobloxRouting[Field];
  3991. if RobloxField and Meta[RobloxField] then
  3992. return Meta[RobloxField][Field];
  3993. end;
  3994. -- Children Index
  3995. local MainInstance = Meta.__Instance;
  3996. if MainInstance and MainInstance:FindFirstChild(Field) then
  3997. return MainInstance[Field];
  3998. end;
  3999. -- Error
  4000. return error('Unable to index MagnoliaInstance with, \'' .. Field .. '\'');
  4001. end,
  4002. __newindex = function(Proxy, Field, Value)
  4003. -- Get Meta Data
  4004. local Meta = References[Proxy];
  4005. local ClassData = Meta.__ClassData;
  4006. local Fields = Meta.__Fields;
  4007. -- Vars
  4008. local Field = ClassData.Routing[Field] or Field;
  4009. local FieldData = ClassData.Fields[Field];
  4010. -- Check
  4011. if FieldData then
  4012. -- ReadOnly Check
  4013. local ReadOnly = FieldData[1]:byte(3, 3);
  4014. if ReadOnly == 1 then
  4015. return error(Field.." is read-only.");
  4016. end;
  4017. -- Magnolia New Index
  4018. local Value, ErrorMsg = M_CanWrite(FieldData[1], Field, Value);
  4019. if ErrorMsg then
  4020. return error(ErrorMsg);
  4021. end;
  4022. -- Disable Useless Redraw
  4023. if Fields[Field] ~= Value then
  4024. local OldValue = Fields[Field];
  4025. Fields[Field] = Value;
  4026. -- Fire Drawers
  4027. ClassData.Draw[Field](Meta, Fields, OldValue, Proxy);
  4028. end;
  4029. -- Fire Signal
  4030. Meta.__ChangeSignal:Fire(Field, Value);
  4031. return;
  4032. else
  4033. -- Roblox Routing
  4034. local RobloxField = RobloxRouting[Field];
  4035. if RobloxField and typeof(Meta[RobloxField]) == 'Instance' then
  4036. -- Roblox New Index
  4037. Meta[RobloxField][Field] = Value;
  4038. return;
  4039. end
  4040. end;
  4041. -- error
  4042. return error('Unable to newindex field ' .. Field)
  4043. end,
  4044. __tostring = function(Proxy)
  4045. -- Get Meta
  4046. local Meta = References[Proxy];
  4047. -- return
  4048. return Meta.tostring or Meta.__Fields.Name or Meta.__ClassData.ClassName;
  4049. end,
  4050. __metatable = 'Can you pleawse don\'t cwash magnowia OwO',
  4051. __redraw = function(Proxy)
  4052. -- Get Meta Data
  4053. local Meta = GetMeta(Proxy);
  4054. local Fields = Meta.__Fields;
  4055. local ClassData = Meta.__ClassData;
  4056. -- Called Draw
  4057. local Called = {};
  4058. -- Loop Fields
  4059. table.foreach(ClassData.Draw, function(Field, Draw)
  4060. -- prevent from call same functions
  4061. if Called[Draw] then
  4062. return;
  4063. end
  4064. Called[Draw] = Field;
  4065. -- Draw current field
  4066. Draw(Meta, Fields, nil, Proxy); -- OldValue: nil
  4067. end);
  4068. end,
  4069. };
  4070.  
  4071. -- M_Instanciate
  4072. local M_Instanciate = function(ClassData)
  4073. -- Creation
  4074. local Proxy = newproxy(true);
  4075. local Meta = getmetatable(Proxy);
  4076. local ChangeSignal = Instance.new("BindableEvent");
  4077. local Fields = {}; -- Values Storage
  4078. -- Brain Setup [TO FINISH]
  4079. ChangeSignal.Name = "MagnoliaChangeSignal";
  4080. Meta.__index = M_Meta.__index;
  4081. Meta.__newindex = M_Meta.__newindex;
  4082. Meta.__tostring = M_Meta.__tostring;
  4083. Meta.__metatable = M_Meta.__metatable;
  4084. Meta.__ClassData = ClassData;
  4085. Meta.__Proxy = Proxy;
  4086. Meta.__Fields = Fields;
  4087. Meta.__ChangeSignal = ChangeSignal;
  4088. -- Load the draw table
  4089. Meta.Draw = ClassData.Draw;
  4090. -- Load the draw method
  4091. ClassData.Fields.Redraw = {'\3\0\1function', M_Meta.__redraw};
  4092. -- Load Default Values | note: It will also load default methods since we save them in the classdata from the CreateClass function :D
  4093. for Field, FieldData in next, ClassData.Fields do
  4094. -- Fields Creation
  4095. local FieldType = FieldData[1]:sub(4, -1);
  4096. -- Events Creation
  4097. if FieldType == 'Event' then
  4098. -- Event Creation
  4099. local Event = Instance.new('BindableEvent');
  4100. Event.Name = Field;
  4101. -- Event Index
  4102. Meta[Field] = Event;
  4103. Fields[Field] = Event.Event;
  4104. -- Reset FieldType to instance case
  4105. FieldData[1]:gsub('Event', 'Instance');
  4106. else
  4107. Fields[Field] = FieldData[2];
  4108. end;
  4109.  
  4110. end;
  4111. -- Save Reference
  4112. References[Proxy] = Meta;
  4113. return Proxy, Meta; -- Meta, Fields, ChangeSignal;
  4114. end;
  4115.  
  4116. -- M_New
  4117. M_New = function(ClassName, ...)
  4118. -- Get Data
  4119. local ClassData = Data[ClassName];
  4120. -- check
  4121. if ClassData then
  4122. local Constructor = ClassData.Constructor;
  4123. local Proxy, Meta = M_Instanciate(ClassData);
  4124. Constructor(Proxy, ...);
  4125. -- TODO
  4126. if Meta.__Instance then
  4127. Parsed[Proxy] = Meta.__Instance;
  4128. end;
  4129. -- return
  4130. return Proxy;
  4131. else
  4132. -- Try to find similar class
  4133. local PossibleClass = M_Utils.SearchField(Data, ClassName, true);
  4134. if PossibleClass then
  4135. return error('unable to find magnolia class, ' .. ClassName .. '. Did you mean ' .. PossibleClass .. '?');
  4136. end;
  4137. return error('unable to find magnolia class, ' .. ClassName .. '.');
  4138. end;
  4139. end;
  4140.  
  4141. -- M_IsMagnoliaInstance
  4142. M_IsMagnoliaInstance = function(MagnoliaInstance)
  4143. if References[MagnoliaInstance] then
  4144. return true;
  4145. else
  4146. return false;
  4147. end
  4148. end;
  4149.  
  4150. end;
  4151.  
  4152. -- Notifications Core
  4153. local M_ToastAlert;
  4154.  
  4155. -- Veranium Class Creation
  4156. do
  4157. M_CreateClass('TextBox',
  4158. {
  4159. Value = {'\3\0\1string', ''},
  4160. -- Main
  4161. BackgroundColor3 = {"\4\0\0Color3", M_Defaults.BackgroundColor},
  4162. AutoTextBoxColor = {"\3\0\0boolean", true},
  4163. FocusedColor3 = {"\4\0\0Color3", M_Defaults.SecondaryColor},
  4164. PasswordChar = {"\3\0\0string", ""},
  4165. TextTransparency = {"\3\0\0number", M_Defaults.TextTransparency},
  4166. -- Magnolia
  4167. IsFocused = {"\3\0\1boolean", false},
  4168. RoundRadius = {"\3\0\0number", 0.042},
  4169. -- Metro Properties
  4170. MetroStyle = {"\3\0\0boolean", true},
  4171. MetroDirection = {"\4\0\0UDim2"},
  4172. MetroStartColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  4173. MetroEndColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  4174. MetroStartTransparency = {"\3\0\0number", 0},
  4175. MetroEndTransparency = {"\3\0\0number", 0},
  4176. MetroStartSize = {"\3\0\0number", 3},
  4177. MetroEndSize = {"\3\0\0number", 3},
  4178. MetroTweenInfo = {"\4\0\0TweenInfo"},
  4179. -- Event
  4180. Writing = {'\4\0\1Event'}
  4181. },
  4182. {
  4183. ValueChanged = 'Writing',
  4184. MetroStartColor = "MetroStartColor3",
  4185. MetroEndColor = "MetroEndColor3",
  4186. },
  4187. function(Proxy, Parent)
  4188. -- Get Meta
  4189. local Meta = GetMeta(Proxy);
  4190. local Fields = Meta.__Fields;
  4191. -- Fields Setup
  4192. Fields.MetroDirection = UDim2.new(0, 1, 1, 1);
  4193.  
  4194. Fields.MetroTweenInfo = TweenInfo.new(
  4195. 0.5,
  4196. Enum.EasingStyle.Sine,
  4197. Enum.EasingDirection.Out
  4198. );
  4199. --Elements Creation
  4200. local Main = Instance.new("Frame", M_GetInstance(Parent));
  4201. local TextRender = Instance.new("TextBox", Main);
  4202. local PasswordChar = Instance.new("TextLabel", Main);
  4203. local Background = Instance.new("ImageLabel", Main);
  4204. --Main Setup
  4205. Main.BackgroundTransparency = 1;
  4206. Main.BorderSizePixel = 0;
  4207. Main.Name = "MagnoliaTextBox";
  4208. Main.Size = UDim2.new(0, 105, 0, 25);
  4209. Main.ZIndex = M_Defaults.ZIndex;
  4210. --Background Setup
  4211. Background.Name = _PREFIX .. 'Background';
  4212. Background.Image = "rbxassetid://3570695787";
  4213. Background.ScaleType = Enum.ScaleType.Slice;
  4214. Background.Size = UDim2.new(1, 0, 1, 0);
  4215. Background.SliceCenter = Rect.new(100, 100, 100, 100);
  4216. Background.Position = UDim2.new(0.5, 0, 0, 0);
  4217. Background.AnchorPoint = Vector2.new(0.5, 0);
  4218. Background.BackgroundTransparency = 1;
  4219. Background.ZIndex = Main.ZIndex;
  4220. --Underline Setup
  4221. local Underline = Background:Clone();
  4222. Underline.Name = _PREFIX..'Underline';
  4223. Underline.Parent = Main;
  4224. Underline.AnchorPoint = Vector2.new(0.5, 1);
  4225. Underline.Position = UDim2.new(0.5, 0, 1, 0);
  4226. Underline.Size = UDim2.new(0, 0, 0.12, 0);
  4227. Underline.Rotation = 180;
  4228. Underline.ImageRectSize = Vector2.new(200, 120);
  4229. --TextRender Setup
  4230. TextRender.Name = _PREFIX.."TextRender";
  4231. TextRender.Text = Fields.Value;
  4232. TextRender.BackgroundTransparency = 1;
  4233. TextRender.BorderSizePixel = 0;
  4234. TextRender.Size = UDim2.new(1, 0, 1, 0);
  4235. TextRender.Position = UDim2.new(0.5, 0, 0.5, 0);
  4236. TextRender.AnchorPoint = Vector2.new(0.5, 0.5);
  4237. TextRender.ZIndex = 10;
  4238. --TextRender Defaults
  4239. TextRender.TextColor3 = M_Defaults.TextColor;
  4240. TextRender.TextTransparency = M_Defaults.TextTransparency;
  4241. TextRender.Font = M_Defaults.Font;
  4242.  
  4243. TextRender.TextStrokeColor3 = M_Defaults.TextStrokeColor;
  4244. TextRender.TextStrokeTransparency = M_Defaults.TextStrokeTransparency;
  4245.  
  4246. TextRender.TextXAlignment = M_Defaults.TextXAlignment;
  4247. TextRender.TextYAlignment = M_Defaults.TextYAlignment;
  4248.  
  4249. TextRender.PlaceholderColor3 = M_Defaults.PlaceholderColor;
  4250. --PasswordChar Setup
  4251. PasswordChar.Name = _PREFIX.."PasswordChar";
  4252. PasswordChar.Text = "";
  4253. PasswordChar.BackgroundTransparency = 1;
  4254. PasswordChar.BorderSizePixel = 0;
  4255. PasswordChar.Size = UDim2.new(1, 0, 1, 0);
  4256. PasswordChar.Position = UDim2.new(0.5, 0, 0.5, 0);
  4257. PasswordChar.AnchorPoint = Vector2.new(0.5, 0.5);
  4258. --PasswordChar Defaults
  4259. PasswordChar.TextColor3 = M_Defaults.TextColor;
  4260. PasswordChar.TextTransparency = M_Defaults.TextTransparency;
  4261. PasswordChar.Font = M_Defaults.Font;
  4262.  
  4263. PasswordChar.TextStrokeColor3 = M_Defaults.TextStrokeColor;
  4264. PasswordChar.TextStrokeTransparency = M_Defaults.TextStrokeTransparency;
  4265.  
  4266. PasswordChar.TextXAlignment = M_Defaults.TextXAlignment;
  4267. PasswordChar.TextYAlignment = M_Defaults.TextYAlignment;
  4268.  
  4269. -- TextRender Connection
  4270. TextRender.Focused:Connect(function()
  4271. Fields.IsFocused = true;
  4272. -- Tween
  4273. Underline.ImageColor3 = Fields.MetroStartColor3;
  4274. TweenService:Create(
  4275. Underline,
  4276. Fields.MetroTweenInfo,
  4277. {
  4278. ImageColor3 = Fields.MetroEndColor3,
  4279. Size = UDim2.new(1, 0, Underline.Size.Y.Scale, 0);
  4280. }
  4281. ):Play();
  4282. if Fields.AutoTextBoxColor then
  4283. TweenService:Create(
  4284. TextRender,
  4285. Fields.MetroTweenInfo,
  4286. {
  4287. TextColor3 = Fields.MetroEndColor3,
  4288. }
  4289. ):Play();
  4290. end;
  4291.  
  4292. end);
  4293. TextRender.FocusLost:Connect(function()
  4294. Fields.IsFocused = false;
  4295. -- Tween
  4296. Underline.ImageColor3 = Fields.MetroEndColor3;
  4297. TweenService:Create(
  4298. Underline,
  4299. Fields.MetroTweenInfo,
  4300. {
  4301. ImageColor3 = Fields.MetroStartColor3,
  4302. Size = UDim2.new(0, 0, Underline.Size.Y.Scale, 0);
  4303. }
  4304. ):Play();
  4305. if Fields.AutoTextBoxColor then
  4306. TweenService:Create(
  4307. TextRender,
  4308. Fields.MetroTweenInfo,
  4309. {
  4310. TextColor3 = Fields.MetroStartColor3,
  4311. }
  4312. ):Play();
  4313. end;
  4314.  
  4315. end);
  4316. TextRender.Changed:Connect(function(Field)
  4317. if Fields.IsFocused and Field == 'Text' then
  4318. Fields.Value = TextRender.Text;
  4319. Meta.Writing:Fire(TextRender.Text);
  4320. end;
  4321. end);
  4322. --MetaData Setup
  4323. Meta.__Instance = Main;
  4324. Meta.__Base2D = Main;
  4325. Meta.__Background = Background;
  4326. Meta.__TextRender = TextRender;
  4327. Meta.__TextBox = TextRender;
  4328. Meta.__ImageRender = Background;
  4329. Meta.Underline = Underline;
  4330. Meta.PasswordChar = PasswordChar;
  4331. -- Redraw
  4332. Fields.Redraw(Proxy);
  4333. end,
  4334. -- Draw Costructor
  4335. function(Draw)
  4336. --
  4337. Draw['BackgroundColor3'] = function(Meta, Fields)
  4338. if not Fields.AutoTextBoxColor or not Meta.__TextBox:IsFocused() then
  4339. Meta.__Background.ImageColor3 = Fields.BackgroundColor3;
  4340. end;
  4341. end;
  4342. --
  4343. Draw['RoundRadius'] = function(Meta, Fields)
  4344. local Fields = Meta.__Fields;
  4345. Meta.__Background.SliceScale = Fields.RoundRadius;
  4346. Meta.Underline.SliceScale = Fields.RoundRadius;
  4347. end;
  4348. end,
  4349. {
  4350.  
  4351. }
  4352. )
  4353.  
  4354. M_CreateClass('Switch',
  4355. {
  4356. --Main
  4357. Size = {'\4\0\0Vector2', Vector2.new(40, 20)},
  4358. Enabled = {"\3\0\0boolean", true},
  4359.  
  4360. --Utility
  4361. Value = {"\3\0\1boolean", false},
  4362.  
  4363. --Bar
  4364. BarTransparency = {"\3\0\0number", 0},
  4365. BarThickness = {"\3\0\0number", 18},
  4366. MarkupImage = {"\3\0\0string", "rbxassetid://3457843087"},
  4367. MarkupColor3 = {"\4\0\0Color3", M_ModernColors.Cloud},
  4368. MarkupTransparency = {"\3\0\0number", 0},
  4369.  
  4370. --MISC
  4371. MarkupSize = {"\4\0\0number", 0.8},
  4372. SliderType = {"\0\0\0SliderType", M_Enums.SliderType.Round},
  4373. SideSheet = {"\3\0\0string", ""},
  4374.  
  4375. --Appearance
  4376. BarOnlineColor3 = {"\4\0\0Color3", Color3.fromRGB(115, 135, 219)}, -- Bar Color when Value is false
  4377. BarOfflineColor3 = {"\4\0\0Color3", Color3.fromRGB(112, 115, 124)}, -- Bar Color when Value is true
  4378. MarkupSizeOffset = {"\4\0\0number", 4},
  4379. MarkupDistance = {"\4\0\0number", 3}, -- Distance from Border
  4380. ClickDarkness = {"\4\0\0number", 20}, -- Color darkness after MouseButton1Down
  4381.  
  4382. --TweenInfo
  4383. TogleTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  4384. 0.2,
  4385. Enum.EasingStyle.Linear,
  4386. Enum.EasingDirection.In
  4387. )},
  4388.  
  4389. --Event
  4390. ValueChanged = {"\4\0\1Event"},
  4391. },
  4392. {
  4393. BarOnlineColor = "BarOnlineColor3",
  4394. BarOfflineColor = "BarOfflineColor3",
  4395. MarkupColor = "MarkupColor3",
  4396. },
  4397. function(Proxy, Parent, Value)
  4398. -- Get Meta
  4399. local Meta = GetMeta(Proxy);
  4400. local Fields = Meta.__Fields;
  4401. --Creation
  4402. local Main = Instance.new("Frame", M_GetInstance(Parent));
  4403. local Bar = Instance.new("Frame", Main);
  4404. local LeftSide = Instance.new("ImageLabel", Bar);
  4405. local RightSide = Instance.new("ImageLabel", Bar);
  4406. local Markup = Instance.new("ImageLabel", Bar);
  4407. local Hitbox = Instance.new("TextButton", Main);
  4408.  
  4409. --Instances Setup
  4410. Main.Name = _PREFIX.."MagnoliaSwitch";
  4411. Main.BorderSizePixel = 0;
  4412. Main.BackgroundTransparency = 1;
  4413. --RightSide
  4414. RightSide.BackgroundTransparency = 1;
  4415. RightSide.BorderSizePixel = 0;
  4416. RightSide.AnchorPoint = Vector2.new(0, 0.5);
  4417. RightSide.Position = UDim2.new(1, 0, 0.5, 0);
  4418. RightSide.ImageRectSize = Vector2.new(400, 800);
  4419. RightSide.ImageRectOffset = Vector2.new(400, 0);
  4420. RightSide.Name = _PREFIX.."RightSide";
  4421. --LeftSide
  4422. LeftSide.BackgroundTransparency = 1;
  4423. LeftSide.BorderSizePixel = 0;
  4424. LeftSide.AnchorPoint = Vector2.new(1, 0.5);
  4425. LeftSide.Position = UDim2.new(0, 0, 0.5, 0);
  4426. LeftSide.ImageRectSize = Vector2.new(400, 800);
  4427. LeftSide.ImageRectOffset = Vector2.new(0, 0);
  4428. LeftSide.Name = _PREFIX.."LeftSide";
  4429. --Hitbox
  4430. Hitbox.Text = "";
  4431. Hitbox.Name = _PREFIX.."Hitbox";
  4432. Hitbox.BorderSizePixel = 0;
  4433. Hitbox.BackgroundTransparency = 1;
  4434. Hitbox.Size = UDim2.new(1,0,1,0);
  4435. Hitbox.AnchorPoint = Vector2.new(0.5, 0.5);
  4436. Hitbox.Position = UDim2.new(0.5, 0, 0.5, 0);
  4437. Hitbox.ZIndex = 2;
  4438. --Bar
  4439. Bar.BorderSizePixel = 0;
  4440. Bar.AnchorPoint = Vector2.new(0.5, 0.5);
  4441. Bar.Position = UDim2.new(0.5, 0, 0.5, 0);
  4442. Bar.Name = _PREFIX.."Bar";
  4443. --Markup
  4444. Markup.Name = _PREFIX.."Markup";
  4445. Markup.BorderSizePixel = 1;
  4446. Markup.BackgroundTransparency = 1;
  4447. Markup.Image = Fields.MarkupImage;
  4448.  
  4449. -- Mouse Flags
  4450. local MouseOver = false;
  4451. local MouseDown = true;
  4452. Hitbox.MouseEnter:Connect(function() MouseOver = true; end);
  4453. Hitbox.MouseLeave:Connect(function() MouseOver = false; end);
  4454.  
  4455. Hitbox.MouseButton1Down:Connect(function()
  4456. MouseDown = true;
  4457. if Fields.Enabled then
  4458. -- Get Color
  4459. local Color;
  4460. if Fields.Value then
  4461. Color = Fields.BarOnlineColor3
  4462. else
  4463. Color = Fields.BarOfflineColor3
  4464. end;
  4465. -- Darker
  4466. local H,S,V = Color:ToHSV();
  4467. V = V - (Fields.ClickDarkness/100 * V); -- Hewww, efficent dark effect on different color!
  4468. Color = Color3.fromHSV(H, S, V);
  4469. -- tween
  4470. TweenService:Create(
  4471. Main,
  4472. Fields.TogleTweenInfo,
  4473. {
  4474. BackgroundColor3 = Color;
  4475. }
  4476. ):Play();
  4477. -- Connect checker
  4478. local Connection;
  4479. Connection = UserInputService.InputEnded:Connect(function(Input)
  4480. if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  4481. Connection:Disconnect();
  4482. -- toggle switch
  4483. if Fields.Enabled and MouseOver then
  4484. Fields.Toggle(Proxy);
  4485. else
  4486. Fields.RestoreBackground(Proxy);
  4487. end;
  4488. end;
  4489. end)
  4490. end;
  4491. end)
  4492.  
  4493. --Connections
  4494. Main.Changed:Connect(function(Field)
  4495. if Field == "BackgroundColor3" then
  4496. LeftSide.ImageColor3 = Main.BackgroundColor3;
  4497. RightSide.ImageColor3 = Main.BackgroundColor3;
  4498. Bar.BackgroundColor3 = Main.BackgroundColor3;
  4499. end;
  4500. end);
  4501.  
  4502. --Meta Setup
  4503. Meta.__Instance = Main;
  4504. Meta.__Base2D = Main;
  4505. Meta.__CHitbox = Hitbox;
  4506. Meta.__Background = Main;
  4507.  
  4508. Meta.Bar = Bar;
  4509. Meta.RightSide = RightSide;
  4510. Meta.LeftSide = LeftSide;
  4511. Meta.Markup = Markup;
  4512.  
  4513. --First Draw
  4514. Fields.Redraw(Proxy);
  4515. Fields.Toggle(Proxy, Fields.Value);
  4516. end,
  4517. -- Draw Costructor
  4518. function(Draw)
  4519. --
  4520. Draw['BarOnlineColor3'] = function(Meta, Fields)
  4521. -- Check Tween
  4522. if Meta.MainColorTween then
  4523. Meta.MainColorTween:Cancel();
  4524. end;
  4525. -- Get Color
  4526. local Color;
  4527. if Fields.Value then Color = Fields.BarOnlineColor3 else Color = Fields.BarOfflineColor3 end;
  4528. -- Set Color
  4529. Meta.__Instance.BackgroundColor3 = Color; -- main
  4530. end;
  4531. Draw['BarOfflineColor3'] = Draw['BarOnlineColor3'];
  4532. --
  4533. Draw['BarTransparency'] = function(Meta, Fields)
  4534. Meta.Bar.BackgroundTransparency = Fields.BarTransparency;
  4535. Meta.LeftSide.ImageTransparency = Fields.BarTransparency;
  4536. Meta.RightSide.ImageTransparency = Fields.BarTransparency;
  4537. end;
  4538. --
  4539. Draw['MarkupSize'] = function(Meta, Fields)
  4540. Meta.Markup.ImageTransparency = Fields.MarkupTransparency;
  4541. Meta.Markup.Size = UDim2.new(0, Fields.MarkupSize, 0, Fields.MarkupSize);
  4542. Meta.Markup.ImageColor3 = Fields.MarkupColor3;
  4543. end;
  4544. Draw['MarkupColor3'] = Draw['MarkupSize'];
  4545. Draw['MarkupDistance'] = Draw['MarkupSize'];
  4546. Draw['MarkupTransparency'] = Draw['MarkupSize'];
  4547. --
  4548. Draw['SliderType'] = function(Meta, Fields)
  4549. local SideSheet = Fields.SliderType.Value;
  4550. if SideSheet == "" then
  4551. Meta.LeftSide.Image = Fields.SideSheet;
  4552. Meta.RightSide.Image = Fields.SideSheet;
  4553. Meta.Markup.Image = Fields.MarkupImage;
  4554. else
  4555. Meta.LeftSide.Image = SideSheet;
  4556. Meta.RightSide.Image = SideSheet;
  4557. Meta.Markup.Image = SideSheet;
  4558. end;
  4559. end;
  4560. Draw['SlideSheet'] = Draw['SliderType'];
  4561. Draw['MarkupImage'] = Draw['SliderType'];
  4562. --
  4563. Draw['BarThickness'] = function(Meta, Fields)
  4564. Meta.__Instance.Size = UDim2.new(
  4565. 0,
  4566. Fields.Size.X,
  4567. 0,
  4568. Fields.Size.Y
  4569. );
  4570. Meta.LeftSide.Size = UDim2.new(0, Fields.BarThickness/2, 1, 0);
  4571. Meta.RightSide.Size = UDim2.new(0, Fields.BarThickness/2, 1, 0);
  4572. Meta.Bar.Size = UDim2.new(
  4573. 1,
  4574. -Fields.BarThickness,
  4575. 1,
  4576. 0
  4577. );
  4578.  
  4579. local Size = math.min(Meta.Bar.AbsoluteSize.X, Meta.Bar.AbsoluteSize.Y)*Fields.MarkupSize;
  4580. Meta.Markup.Size = UDim2.new(0, Size, 0, Size);
  4581. end;
  4582. Draw['Size'] = Draw['BarThickness'];
  4583. end,
  4584. {
  4585. RestoreBackground = function(Proxy)
  4586. -- Meta
  4587. local Meta = GetMeta(Proxy);
  4588. local Fields = Meta.__Fields;
  4589. -- get color
  4590. local Color;
  4591. if Fields.Value then
  4592. Color = Fields.BarOnlineColor3
  4593. else
  4594. Color = Fields.BarOfflineColor3
  4595. end;
  4596. -- tween
  4597. TweenService:Create(
  4598. Meta.__Instance,
  4599. Fields.TogleTweenInfo,
  4600. {
  4601. BackgroundColor3 = Color;
  4602. }
  4603. ):Play();
  4604. end,
  4605. Toggle = function(Proxy, Value)
  4606. -- Get Meta
  4607. local Meta = GetMeta(Proxy);
  4608. local ValueChanged = Meta.ValueChanged;
  4609. local Main = Meta.__Instance;
  4610. local Markup = Meta.Markup;
  4611. local Fields = Meta.__Fields;
  4612. local MarkupDistance = Fields.MarkupDistance;
  4613. local BarOnlineColor3 = Fields.BarOnlineColor3;
  4614. local BarOfflineColor3 = Fields.BarOfflineColor3;
  4615. -- Toggle
  4616. if type(Value) ~= "boolean" then Value = not Fields.Value; end;
  4617. if Value == false then
  4618. --Markup Animation
  4619. TweenService:Create(
  4620. Markup,
  4621. Fields.TogleTweenInfo,
  4622. {
  4623. Position = UDim2.new(0, MarkupDistance-Fields.BarThickness/2, 0.5, 0);
  4624. AnchorPoint = Vector2.new(0, 0.5);
  4625. }
  4626. ):Play();
  4627. --Background Animation
  4628. Meta.MainColorTween = TweenService:Create(
  4629. Main,
  4630. Fields.TogleTweenInfo,
  4631. {
  4632. BackgroundColor3 = BarOfflineColor3;
  4633. }
  4634. );
  4635. Meta.MainColorTween:Play();
  4636. Fields.Value = false;
  4637. elseif Value == true then
  4638. --Markup Animation
  4639. TweenService:Create(
  4640. Markup,
  4641. Fields.TogleTweenInfo,
  4642. {
  4643. Position = UDim2.new(1, Fields.BarThickness/2-MarkupDistance, 0.5, 0);
  4644. AnchorPoint = Vector2.new(1, 0.5);
  4645. }
  4646. ):Play();
  4647. --Background Animation
  4648. Meta.MainColorTween = TweenService:Create(
  4649. Main,
  4650. Fields.TogleTweenInfo,
  4651. {
  4652. BackgroundColor3 = BarOnlineColor3;
  4653. }
  4654. );
  4655. Meta.MainColorTween:Play();
  4656. Fields.Value = true;
  4657. end;
  4658. ValueChanged:Fire(Fields.Value);
  4659. end;
  4660. }
  4661. )
  4662. M_CreateClass("ButtonIcon",
  4663. {
  4664. Size = {"\4\0\0UDim2", UDim2.new(0, 25, 0, 25)},
  4665. IconSize = {"\3\0\0number", 13},
  4666. IconRotation = {"\3\0\0number", 0},
  4667. HoverSize = {"\3\0\0number", 2},
  4668. --Events
  4669. Clicked = {"\4\0\1Event"},
  4670. },
  4671. {
  4672.  
  4673. },
  4674. function(Proxy, Parent)
  4675. -- get meta
  4676. local Meta = GetMeta(Proxy);
  4677. local Fields = Meta.__Fields;
  4678. -- instances
  4679. local Main = Instance.new('Frame', M_GetInstance(Parent));
  4680. local Corner = Instance.new('UICorner', Main);
  4681. local Icon = Instance.new('ImageLabel', Main);
  4682. local Hitbox = Instance.new('TextButton', Main);
  4683. -- instances properties
  4684. Main.Name = _PREFIX .. 'ButtonIcon';
  4685. Main.BackgroundColor3 = M_ModernColors.DimMidnightBlue;
  4686. Main.Size = UDim2.new(0, 25, 0, 25);
  4687. Main.AnchorPoint = Vector2.new(0.5, 0.5);
  4688.  
  4689. Corner.CornerRadius = UDim.new(1, 0);
  4690.  
  4691. Icon.BackgroundTransparency = 1;
  4692. Icon.Image = 'rbxassetid://3754291346';
  4693. Icon.AnchorPoint = Vector2.new(0.5, 0.5);
  4694. Icon.Position = UDim2.new(0.5, 0, 0.5, 0);
  4695. Icon.ImageColor3 = M_ModernColors.Cloud;
  4696.  
  4697. Hitbox.Text = '';
  4698. Hitbox.BackgroundTransparency = 1;
  4699. Hitbox.Size = UDim2.new(1, 0, 1, 0);
  4700. Hitbox.AnchorPoint = Vector2.new(0.5, 0.5);
  4701. Hitbox.Position = UDim2.new(0.5, 0, 0.5, 0);
  4702. -- Connections
  4703. local IsHover = false;
  4704. local function RestoreSize()
  4705. Main.Size = Fields.Size;
  4706. Icon.Size = UDim2.new(0, Fields.IconSize, 0, Fields.IconSize);
  4707. end
  4708. local MouseEnter = function()
  4709. IsHover = true;
  4710. local Size = UDim2.new(0, Fields.HoverSize, 0, Fields.HoverSize);
  4711. Main.Size = Fields.Size + Size;
  4712. Icon.Size = Icon.Size + Size;
  4713. end;
  4714. Hitbox.MouseEnter:Connect(MouseEnter);
  4715. Hitbox.MouseLeave:Connect(function()
  4716. IsHover = false;
  4717. RestoreSize();
  4718. end);
  4719. -- click system
  4720. local MouseUpConnection;
  4721. local MouseUp = function(Input)
  4722. -- check input
  4723. if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  4724. -- check if still hoverin
  4725. if IsHover then
  4726. -- fire click event
  4727. Meta.Clicked:Fire();
  4728. end;
  4729. MouseEnter();
  4730. MouseUpConnection:Disconnect();
  4731. end;
  4732. end
  4733. Hitbox.MouseButton1Down:Connect(function()
  4734. RestoreSize();
  4735. -- connect mouse up
  4736. MouseUpConnection = UserInputService.InputEnded:Connect(MouseUp);
  4737. end);
  4738. -- Meta Setup
  4739. Meta.__Instance = Main;
  4740. Meta.__Base2D = Main;
  4741. Meta.__Background = Main;
  4742. Meta.__UICorner = Corner;
  4743. Meta.__ImageRender = Icon;
  4744. -- First Draw
  4745. Fields.Redraw(Proxy);
  4746. end,
  4747. function(Draw)
  4748. -- register draws
  4749. Draw['Size'] = function(Meta, Fields)
  4750. Meta.__Instance.Size = Fields.Size;
  4751. end
  4752. Draw['IconSize'] = function(Meta, Fields)
  4753. Meta.__ImageRender.Size = UDim2.new(0, Fields.IconSize, 0, Fields.IconSize);
  4754. end
  4755. Draw['IconRotation'] = function(Meta, Fields)
  4756. Meta.__ImageRender.Rotation = Fields.IconRotation;
  4757. end
  4758. end,
  4759. {
  4760.  
  4761. }
  4762. )
  4763. M_CreateClass("CheckBox",
  4764. {
  4765. --Main
  4766. Checked = {"\3\0\0boolean", false},
  4767. Size = {"\3\0\0number", 17},
  4768. --Box Appearance
  4769. StartBoxColor3 = {"\4\0\0Color3", M_Defaults.SecondaryColor},
  4770. EndBoxColor3 = {"\4\0\0Color3", M_Defaults.SecondaryColor},
  4771. StartBoxTransparency = {"\3\0\0number", 0},
  4772. EndBoxTransparency = {"\3\0\0number", 0},
  4773. CheckBoxType = {"\0\0\0CheckBoxType", M_Enums.CheckBoxType.Smooth},
  4774. CheckBoxImage = {"\3\0\0string", ""},
  4775. CheckBoxFill = {"\3\0\0boolean", true},
  4776. --Check Appearance
  4777. CheckImage = {"\3\0\0string", ""},
  4778. StartCheckColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  4779. EndCheckColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  4780. StartCheckTransparency = {"\3\0\0number", 1},
  4781. EndCheckTransparency = {"\3\0\0number", 0},
  4782. StartCheckSize = {"\3\0\0number", 0},
  4783. EndCheckSize = {"\3\0\0number", 0.5},
  4784. --Metro Style
  4785. MetroStyle = {"\3\0\0boolean", true},
  4786. MetroTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  4787. 0.15,
  4788. Enum.EasingStyle.Sine,
  4789. Enum.EasingDirection.Out
  4790. )},
  4791. --Events
  4792. CheckChanged = {"\4\0\1Event"},
  4793.  
  4794. },
  4795. {
  4796.  
  4797. },
  4798. function(Proxy, Parent)
  4799. -- Get Meta
  4800. local Meta = GetMeta(Proxy);
  4801. local Fields = Meta.__Fields;
  4802. --Elements Creation
  4803. local Main = Instance.new("Frame", M_GetInstance(Parent));
  4804. local Box = Instance.new("ImageLabel", Main);
  4805. local Check = Instance.new("ImageLabel", Box);
  4806. local Hitbox = Instance.new("TextButton", Main);
  4807.  
  4808. --Main Setup
  4809. Main.BackgroundTransparency = 1;
  4810. Main.BorderSizePixel = 0;
  4811. Main.Name = "VeraniumCheckBox";
  4812. Main.ZIndex = M_Defaults.ZIndex;
  4813. Main.Size = UDim2.new(0, 17, 0, 17);
  4814. --Box Setup
  4815. Box.BackgroundTransparency = 1;
  4816. Box.BorderSizePixel = 0;
  4817. Box.Size = UDim2.new(1, 0, 1, 0);
  4818. Box.Position = UDim2.new(0.5, 0, 0.5, 0);
  4819. Box.AnchorPoint = Vector2.new(0.5, 0.5);
  4820. Box.Name = _PREFIX.."Box";
  4821. --Check Setup
  4822. Check.BackgroundTransparency = 1;
  4823. Check.BorderSizePixel = 0;
  4824. Check.Position = UDim2.new(0.5, 0, 0.5, 0);
  4825. Check.AnchorPoint = Vector2.new(0.5, 0.5);
  4826. Check.Name = _PREFIX.."CheckMark"
  4827. --Hitbox Setup
  4828. Hitbox.BackgroundTransparency = 1;
  4829. Hitbox.Text = "";
  4830. Hitbox.AnchorPoint = Vector2.new(0.5, 0.5);
  4831. Hitbox.Position = UDim2.new(0.5, 0, 0.5, 0);
  4832. Hitbox.Size = UDim2.new(1, 5, 1, 5);
  4833. Hitbox.Name = _PREFIX.."Hitbox";
  4834.  
  4835. --Connections
  4836. Hitbox.MouseButton1Down:Connect(function()
  4837. Fields.Checked = not Fields.Checked;
  4838. Meta.CheckChanged:Fire(true);
  4839. Proxy:Check();
  4840. end);
  4841. --MetaData Setup
  4842. Meta.__Instance = Main;
  4843. Meta.__Base2D = Main;
  4844.  
  4845. Meta.Box = Box;
  4846. Meta.Check = Check;
  4847. Meta.Hitbox = Hitbox;
  4848.  
  4849. --First Draw
  4850. Fields.Check(Proxy, false);
  4851. Fields.Redraw(Proxy);
  4852. end,
  4853. -- Draw Register
  4854. function(Draw)
  4855. -- Size
  4856. Draw['Size'] = function(Meta, Fields)
  4857. Meta.__Instance.Size = UDim2.new(0, Fields.Size, 0, Fields.Size);
  4858. end;
  4859. --Uhh... A lot...?
  4860. Draw['Checked'] = function(Meta, Fields)
  4861. Meta.CheckChanged:Fire(false);
  4862. Fields.Check(Meta.__Proxy, false);
  4863. end;
  4864. Draw['StartBoxColor3'] = function(Meta, Fields)
  4865. Fields.Check(Meta.__Proxy, false);
  4866. end;
  4867. Draw['EndBoxColor3'] = Draw['StartBoxColor3'];
  4868. Draw['StartBoxTransparency'] = Draw['StartBoxColor3'];
  4869. Draw['EndBoxTransparency'] = Draw['StartBoxColor3'];
  4870. Draw['StartCheckColor3'] = Draw['StartBoxColor3'];
  4871. Draw['EndCheckColor3'] = Draw['StartBoxColor3'];
  4872. Draw['StartCheckTransparency'] = Draw['StartBoxColor3'];
  4873. Draw['EndCheckTransparency'] = Draw['StartBoxColor3'];
  4874. Draw['StartCheckSize'] = Draw['StartBoxColor3'];
  4875. Draw['EndCheckSize'] = Draw['StartBoxColor3'];
  4876. --Once more, a lot.
  4877. Draw['CheckBoxType'] = function(Meta, Fields)
  4878. -- vars
  4879. local Offset = Fields.CheckBoxType.Value;
  4880. local Box = Meta.Box;
  4881. local Check = Meta.Check;
  4882. -- checks
  4883. if Offset == 4 then
  4884. Box.Image = Fields.CheckBoxImage;
  4885. Box.ImageRectSize = Vector2.new(0, 0);
  4886. Box.ImageRectOffset = Vector2.new(0, 0);
  4887. else
  4888. Box.Image = "rbxassetid://4018402187";
  4889. Box.ImageRectSize = Vector2.new(100, 100);
  4890. if Fields.CheckBoxFill then
  4891. Box.ImageRectOffset = Vector2.new(Offset*100, 100);
  4892. else
  4893. Box.ImageRectOffset = Vector2.new(Offset*100, 0);
  4894. end;
  4895. end;
  4896. if Fields.CheckImage == "" then
  4897. Check.Image = "rbxassetid://4018402187";
  4898. Check.ImageRectSize = Vector2.new(100, 100);
  4899. if Offset == 4 then
  4900. Check.ImageRectOffset = Vector2.new(0, 100);
  4901. else
  4902. Check.ImageRectOffset = Vector2.new(Offset*100, 100);
  4903. end
  4904. else
  4905. Check.Image = Fields.CheckImage;
  4906. Check.ImageRectSize = Vector2.new(0, 0);
  4907. Check.ImageRectOffset = Vector2.new(0, 0);
  4908. end;
  4909. end;
  4910. Draw['CheckBoxType'] = Draw['CheckBoxType'];
  4911. Draw['CheckImage'] = Draw['CheckBoxType'];
  4912. Draw['CheckBoxImage'] = Draw['CheckBoxType'];
  4913. Draw['CheckBoxFill'] = Draw['CheckBoxType'];
  4914. end,
  4915. {
  4916. CreateLabel = function(self, Text)
  4917. --Setup
  4918. local Meta = GetMeta(self);
  4919. local Main = Meta.___Instance;
  4920.  
  4921. local Label = Instance.new("TextLabel", Main);
  4922. Label.Text = Text;
  4923. Label.Name = _PREFIX.."Label";
  4924. Label.BackgroundTransparency = 1;
  4925. Label.BorderSizePixel = 0;
  4926. Label.Font = M_Defaults.Font;
  4927. Label.TextColor3 = M_Defaults.TextColor;
  4928. Label.TextTransparency = M_Defaults.TextTransparency;
  4929. Label.TextYAlignment = Enum.TextYAlignment.Center;
  4930. Label.Size = UDim2.new(0, 0, 1, 0);
  4931.  
  4932. Meta.___TextRender = Label;
  4933.  
  4934. Meta.Draw["Label"](Meta, Meta.__Fields);
  4935. end,
  4936. Check = function(self, MetroStyle)
  4937. --Setup
  4938. local Meta = GetMeta(self);
  4939. local Main = Meta.__Instance;
  4940. local Fields = Meta.__Fields;
  4941.  
  4942. if MetroStyle == nil then
  4943. MetroStyle = Fields.MetroStyle;
  4944. end;
  4945.  
  4946. local Box = Meta.Box;
  4947. local Check = Meta.Check;
  4948. local BoxTarget, CheckTarget;
  4949.  
  4950. if not Fields.Checked then
  4951. BoxTarget = {
  4952. ImageColor3 = Fields.StartBoxColor3,
  4953. ImageTransparency = Fields.StartBoxTransparency
  4954. };
  4955. CheckTarget = {
  4956. ImageColor3 = Fields.StartCheckColor3,
  4957. ImageTransparency = Fields.StartCheckTransparency,
  4958. Size = UDim2.new(
  4959. Fields.StartCheckSize,
  4960. 0,
  4961. Fields.StartCheckSize,
  4962. 0
  4963. )
  4964. };
  4965. else
  4966. BoxTarget = {
  4967. ImageColor3 = Fields.EndBoxColor3,
  4968. ImageTransparency = Fields.EndBoxTransparency
  4969. };
  4970. CheckTarget = {
  4971. ImageColor3 = Fields.EndCheckColor3,
  4972. ImageTransparency = Fields.EndCheckTransparency,
  4973. Size = UDim2.new(
  4974. Fields.EndCheckSize,
  4975. 0,
  4976. Fields.EndCheckSize,
  4977. 0
  4978. )
  4979. };
  4980. end;
  4981.  
  4982. if MetroStyle then
  4983. TweenService:Create(
  4984. Box,
  4985. Fields.MetroTweenInfo,
  4986. {
  4987. ImageColor3 = BoxTarget.ImageColor3,
  4988. ImageTransparency = BoxTarget.ImageTransparency
  4989. }
  4990. ):Play();
  4991. TweenService:Create(
  4992. Check,
  4993. Fields.MetroTweenInfo,
  4994. {
  4995. ImageColor3 = CheckTarget.ImageColor3,
  4996. ImageTransparency = CheckTarget.ImageTransparency,
  4997. Size = CheckTarget.Size
  4998. }
  4999. ):Play();
  5000. else
  5001. Box.ImageColor3 = BoxTarget.ImageColor3;
  5002. Box.ImageTransparency = BoxTarget.ImageTransparency;
  5003.  
  5004. Check.ImageColor3 = CheckTarget.ImageColor3;
  5005. Check.ImageTransparency = CheckTarget.ImageTransparency;
  5006. Check.Size = CheckTarget.Size;
  5007. end;
  5008. end;
  5009. }
  5010. )
  5011. M_CreateClass("Slider",
  5012. {
  5013. --Functionality
  5014. MinValue = {"\3\0\0number", 0},
  5015. MaxValue = {"\3\0\0number", 1},
  5016. Value = {"\3\0\0number", 0.5},
  5017. IsDragging = {"\3\0\1boolean", false},
  5018. Step = {"\3\0\0number", 0.01},
  5019. Size = {"\4\0\0Vector2", Vector2.new(0, 100)},
  5020.  
  5021. --Metro Properties
  5022. MetroStyle = {"\3\0\0boolean", true},
  5023. MetroTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  5024. 0.25,
  5025. Enum.EasingStyle.Sine,
  5026. Enum.EasingDirection.Out
  5027. )},
  5028.  
  5029. --MISC
  5030. SideSheet = {"\3\0\0string", ""},
  5031. MarkupImage = {"\3\0\0string", "rbxassetid://3457843087"},
  5032.  
  5033. --Appearance
  5034. BarColor3 = {"\4\0\0Color3", M_Defaults.SecondaryColor},
  5035. BarTransparency = {"\3\0\0number", 0},
  5036. BarThickness = {"\3\0\0number", 10},
  5037.  
  5038. MarkupColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  5039. MarkupTransparency = {"\3\0\0number", 0},
  5040. MarkupSize = {"\3\0\0number", 0.6},
  5041.  
  5042. --Eevents
  5043. DragEnd = {"\4\0\1Event"},
  5044. DragStart = {"\4\0\1Event"},
  5045. ValueChanged = {"\4\0\1Event"},
  5046. },
  5047. {
  5048.  
  5049. },
  5050. function(Proxy, Parent)
  5051. -- Get Meta
  5052. local Meta = GetMeta(Proxy);
  5053. local Fields = Meta.__Fields;
  5054. local Connections = {};
  5055. --Elements Creation
  5056. local Main = Instance.new("Frame", M_GetInstance(Parent));
  5057. local Markup = Instance.new("ImageLabel", Main);
  5058. local Hitbox = Instance.new("TextButton", Main);
  5059.  
  5060. --Main Setup
  5061. Main.BackgroundTransparency = 1;
  5062. Main.BorderSizePixel = 0;
  5063. Main.Name = "MagnoliaSlider";
  5064. Main.ZIndex = M_Defaults.ZIndex;
  5065. Instance.new('UICorner', Main);
  5066. --Markup Setup
  5067. Markup.BackgroundTransparency = 1;
  5068. Markup.BorderSizePixel = 0;
  5069. Markup.AnchorPoint = Vector2.new(0.5, 0.5);
  5070. Markup.Name = _PREFIX.."Markup";
  5071. --Hitbox Setup
  5072. Hitbox.Text = "";
  5073. Hitbox.TextTransparency = 1;
  5074. Hitbox.BackgroundTransparency = 1;
  5075. Hitbox.BorderSizePixel = 0;
  5076. Hitbox.AnchorPoint = Vector2.new(0.5, 0.5);
  5077. Hitbox.Position = UDim2.new(0.5, 0, 0.5, 0);
  5078. Hitbox.Size = UDim2.new(1, 5, 1, 5);
  5079. Hitbox.Name = _PREFIX.."Hitbox";
  5080.  
  5081. --Connections
  5082. local IsDown = false;
  5083. local function MoveMarkup()
  5084. if IsDown then
  5085. local Offset;
  5086. if Main.Rotation == -90 then -- this could be improved with a a math formurla
  5087. Offset = Mouse.Y - (Main.AbsolutePosition.Y - Main.AbsoluteSize.X/2 + 3.5);
  5088. Fields.Value = M_Math.Map(Offset, Main.AbsoluteSize.X, 0, Fields.MinValue, Fields.MaxValue);
  5089. else
  5090. Offset = Mouse.X - Main.AbsolutePosition.X;
  5091. Fields.Value = M_Math.Map(Offset, 0, Main.AbsoluteSize.X, Fields.MinValue, Fields.MaxValue);
  5092. end;
  5093.  
  5094.  
  5095. if Fields.Value > Fields.MaxValue then
  5096. Fields.Value = Fields.MaxValue;
  5097. elseif Fields.Value < Fields.MinValue then
  5098. Fields.Value = Fields.MinValue;
  5099. end;
  5100. if Fields.Step ~= 0 then
  5101. Fields.Value = M_Math.Round(Fields.Value/Fields.Step)*Fields.Step
  5102. end
  5103. Meta.ValueChanged:Fire(Fields.Value);
  5104. end;
  5105.  
  5106. if Fields.MetroStyle then
  5107. local MarkupSize = Markup.AbsoluteSize.X/2;
  5108. local X = M_Math.Map(Fields.Value, Fields.MinValue, Fields.MaxValue, MarkupSize+2, Main.AbsoluteSize.X-MarkupSize-2);
  5109. TweenService:Create(
  5110. Markup,
  5111. Fields.MetroTweenInfo,
  5112. {
  5113. Position = UDim2.new(0, X, 0.5, 0)
  5114. }
  5115. ):Play();
  5116. else
  5117. Proxy:RelocateMarkup();
  5118. end;
  5119. end;
  5120. Hitbox.MouseButton1Down:Connect(function()
  5121. IsDown = true;
  5122. Fields.IsDragging = IsDown;
  5123. Meta.DragStart:Fire();
  5124. MoveMarkup();
  5125. end);
  5126. Connections[0] = UserInputService.InputEnded:Connect(function(Input)
  5127. if Input.UserInputType == Enum.UserInputType.MouseButton1 and IsDown then
  5128. IsDown = false;
  5129. Fields.IsDragging = IsDown;
  5130. Meta.DragEnd:Fire();
  5131. end;
  5132. end);
  5133. Connections[1] = Mouse.Move:Connect(MoveMarkup);
  5134. Hitbox.MouseMoved:Connect(function(X)
  5135.  
  5136. end);
  5137. --MetaData Setup
  5138. Meta.__Instance = Main;
  5139. Meta.__Base2D = Main;
  5140. Meta.__Background = Main;
  5141. Meta.__Connection = Connections;
  5142.  
  5143. Meta.Markup = Markup;
  5144. Meta.Hitbox = Hitbox;
  5145. --First Draw
  5146. Fields.Redraw(Proxy);
  5147. end,
  5148. -- Draw Register
  5149. function(Draw)
  5150. Draw['MarkupImage'] = function(Meta, Fields)
  5151. Meta.Markup.Image = Fields.MarkupImage;
  5152. end;
  5153. --BarColor3
  5154. Draw['BarColor3'] = function(Meta, Fields)
  5155. Meta.__Instance.BackgroundColor3 = Fields.BarColor3;
  5156. end;
  5157. --BarTransparency
  5158. Draw['BarTransparency'] = function(Meta, Fields)
  5159. Meta.__Instance.BackgroundTransparency = Fields.BarTransparency;
  5160. end;
  5161. --BarThickness | Size | MarkupSize
  5162. Draw['BarThickness'] = function(Meta, Fields)
  5163. Meta.__Instance.Size = UDim2.new(
  5164. Fields.Size.X,
  5165. Fields.Size.Y,
  5166. 0,
  5167. Fields.BarThickness
  5168. );
  5169.  
  5170. local Size = math.min(Meta.__Instance.AbsoluteSize.X, Meta.__Instance.AbsoluteSize.Y)*Fields.MarkupSize;
  5171. Meta.Markup.Size = UDim2.new(0, Size, 0, Size);
  5172. end;
  5173. Draw['Size'] = Draw['BarThickness'];
  5174. --MarkupColor3
  5175. Draw['MarkupColor3'] = function(Meta, Fields)
  5176. Meta.Markup.ImageColor3 = Fields.MarkupColor3;
  5177. end;
  5178. --MarkupTransparency
  5179. Draw['MarkupTransparency'] = function(Meta, Fields)
  5180. Meta.Markup.ImageTransparency = Fields.MarkupTransparency;
  5181. end;
  5182. Draw['REDRAW'] = function(Meta, Fields)
  5183. Fields.RelocateMarkup(Meta.__Proxy);
  5184. end;
  5185. Draw['Value'] = function(Meta, Fields)
  5186. Fields.RelocateMarkup(Meta.__Proxy);
  5187. Meta.ValueChanged:Fire(Fields.Value);
  5188. end;
  5189. end,
  5190. {
  5191. RelocateMarkup = function(Proxy)
  5192. -- Get Meta
  5193. local Meta = GetMeta(Proxy)
  5194. local Fields = Meta.__Fields
  5195. local Markup = Meta.Markup
  5196. -- Map value
  5197. if Fields.Step ~= 0 then
  5198. Fields.Value = M_Math.Round(Fields.Value/Fields.Step)*Fields.Step
  5199. end
  5200. if Fields.Value > Fields.MaxValue then
  5201. Fields.Value = Fields.MaxValue
  5202. end
  5203. if Fields.Value < Fields.MinValue then
  5204. Fields.Value = Fields.MinValue
  5205. end
  5206. -- Set Position
  5207. Markup.Position = UDim2.new(M_Math.Map(
  5208. Fields.Value,
  5209. Fields.MinValue,
  5210. Fields.MaxValue, 0, 1
  5211. ), 0, 0.5, 0)
  5212. end
  5213. }
  5214. );
  5215. M_CreateClass("FillBox",
  5216. {
  5217. --Main
  5218. Checked = {"\3\0\0boolean", false},
  5219. Protected = {"\3\0\0boolean", false},
  5220. Size = {"\3\0\0number", 20},
  5221. LeftLabel = {"\3\0\0boolean", false},
  5222. LabelPadding = {"\3\0\0number", 2},
  5223. --Appearance
  5224. StartBoxColor3 = {"\4\0\0Color3", M_ModernColors.Midnight},
  5225. EndBoxColor3 = {"\4\0\0Color3", M_ModernColors.ElectricBlue},
  5226. StartBoxTransparency = {"\3\0\0number", 0},
  5227. EndBoxTransparency = {"\3\0\0number", 0},
  5228. FillBoxType = {"\0\0\0FillBoxType", M_Enums.FillBoxType.Smooth},
  5229. --Events
  5230. CheckChanged = {"\4\0\1Event"},
  5231. },
  5232. {
  5233. Value = 'Checked',
  5234. ValueChanged = 'CheckChanged'
  5235. },
  5236. function(Proxy, Parent)
  5237. local Meta = GetMeta(Proxy);
  5238. local Fields = Meta.__Fields;
  5239. local Cs = Meta.__ChangeSignal;
  5240.  
  5241. --Elements Creation
  5242. local Main = Instance.new("Frame", M_GetInstance(Parent));
  5243. local Box = Instance.new("ImageButton", Main);
  5244.  
  5245. --Main Setup
  5246. Main.BackgroundTransparency = 1;
  5247. Main.BorderSizePixel = 0;
  5248. Main.Name = _PREFIX .. "VeraniumFillBox";
  5249. Main.ZIndex = M_Defaults.ZIndex;
  5250. Main.Size = UDim2.new(0, 17, 0, 17);
  5251. --Box Setup
  5252. Box.BackgroundTransparency = 1;
  5253. Box.BorderSizePixel = 0;
  5254. Box.Size = UDim2.new(1, 0, 1, 0);
  5255. Box.Position = UDim2.new(0.5, 0, 0.5, 0);
  5256. Box.AnchorPoint = Vector2.new(0.5, 0.5);
  5257. Box.ImageRectSize = Vector2.new(50, 50);
  5258. Box.Name = _PREFIX.."Box";
  5259. Box.ZIndex = Main.ZIndex + 1;
  5260. --Changed Signal
  5261. Cs.Parent = Main;
  5262. --Connections
  5263. Box.MouseButton1Up:Connect(function()
  5264. if Fields.Protected == false then
  5265. Fields.Checked = not Fields.Checked;
  5266. Proxy:Check(true, true);
  5267. Meta.CheckChanged:Fire(true);
  5268. end;
  5269. end);
  5270. --MetaData Setup
  5271. Meta.__Instance = Main;
  5272. Meta.__Base2D = Main;
  5273. Meta.__ImageRender = Box;
  5274. Meta.Box = Box;
  5275. --First Draw
  5276. --Proxy:Check(false, true);
  5277. Fields.Redraw(Proxy);
  5278.  
  5279. end,
  5280. -- Draw Register
  5281. function(Draw)
  5282. --Size
  5283. Draw['Size'] = function(Meta, Fields)
  5284. Meta.__Instance.Size = UDim2.new(0, Fields.Size, 0, Fields.Size);
  5285. end;
  5286. --
  5287. Draw['EndBoxColor3'] = function(Meta, Fields)
  5288. if Fields.Checked then
  5289. Meta.Box.ImageColor3 = Fields.EndBoxColor3;
  5290. else
  5291. Meta.Box.ImageColor3 = Fields.StartBoxColor3;
  5292. end;
  5293. end;
  5294. Draw['EndBoxColor3'] = Draw['StartBoxColor3'];
  5295. --FillBoxType
  5296. Draw['FillBoxType'] = function(Meta, Fields)
  5297. local Texture = Fields.FillBoxType.Value;
  5298. Meta.Box.Image = Texture;
  5299. end;
  5300. --Pretty much all appearance-related properties
  5301. Draw['StartBoxColor3'] = function(Meta, Fields)
  5302. Fields.Check(Meta.__Proxy, true, true);
  5303. end;
  5304. Draw['EndBoxTransparency'] = Draw['StartBoxColor3'];
  5305. Draw['StartBoxTransparency'] = Draw['StartBoxColor3'];
  5306. Draw['EndBoxTransparency'] = Draw['StartBoxColor3'];
  5307. --
  5308. Draw['Checked'] = function(Meta, Fields)
  5309. Meta.CheckChanged:Fire(Fields.Checked);
  5310. Fields.Check(Meta.__Proxy, true, true);
  5311. end;
  5312. end,
  5313. {
  5314. CreateLabel = function(self, Text)
  5315. --Setup
  5316. local Meta = GetMeta(self);
  5317. local Main = Meta.__Instance;
  5318.  
  5319. local Label = Instance.new("TextLabel", Main);
  5320. Label.Name = _PREFIX.."Label";
  5321. Label.Text = Text;
  5322. Label.BackgroundTransparency = 1;
  5323. Label.BorderSizePixel = 0;
  5324. Label.Font = M_Defaults.Font;
  5325. Label.TextColor3 = M_Defaults.TextColor;
  5326. Label.TextTransparency = M_Defaults.TextTransparency;
  5327. Label.TextYAlignment = Enum.TextYAlignment.Center;
  5328. Label.Size = UDim2.new(0, 0, 1, 0);
  5329.  
  5330. Meta.__TextRender = Label;
  5331.  
  5332. Meta.Draw["Label"](Meta, Meta.__Fields);
  5333. end,
  5334. Check = function(self, Tween, Yield)
  5335. local Meta = GetMeta(self);
  5336. local Main = Meta.__Instance;
  5337. local Box = Meta.Box;
  5338. local Fields = Meta.__Fields;
  5339.  
  5340. if Tween == nil then
  5341. Tween = true;
  5342. end;
  5343. if Yield == nil then
  5344. Yield = true;
  5345. end;
  5346.  
  5347. local StartOffset, EndOffset, Step, SCol, ECol, St, Et =
  5348. 0, 700, 50, Fields.StartBoxColor3, Fields.EndBoxColor3,
  5349. Fields.StartBoxTransparency, Fields.EndBoxTransparency;
  5350. if not Fields.Checked then
  5351. StartOffset, EndOffset, Step, SCol, ECol, St, Et =
  5352. 650, -50, -50, Fields.EndBoxColor3, Fields.StartBoxColor3,
  5353. Fields.EndBoxTransparency, Fields.StartBoxTransparency;
  5354. end;
  5355. if math.floor(Box.ImageRectOffset.X) == math.floor(EndOffset-Step) and Tween then
  5356. Box.ImageColor3 = ECol;
  5357. Box.ImageTransparency = Et;
  5358. return;
  5359. end;
  5360. local CVal = StartOffset;
  5361.  
  5362. local function Animate()
  5363. repeat RunService.Heartbeat:Wait();
  5364. Box.ImageRectOffset = Vector2.new(CVal, 0);
  5365. Box.ImageColor3 = M_Math.MapColor(SCol, ECol, StartOffset, EndOffset, CVal);
  5366. Box.ImageTransparency = M_Math.Map(CVal, StartOffset, EndOffset, St, Et);
  5367. CVal = CVal + Step;
  5368. until math.floor(CVal) == math.floor(EndOffset); -- Because lua:tm: is very epic it switches integers to floats at random!
  5369. Box.ImageColor3 = ECol;
  5370. Box.ImageTransparency = Et;
  5371. end;
  5372. if Tween then
  5373. if Yield then
  5374. spawn(Animate);
  5375. else
  5376. Animate();
  5377. end;
  5378. else
  5379. Box.ImageRectOffset = Vector2.new(EndOffset-Step);
  5380. Box.ImageColor3 = ECol;
  5381. Box.ImageTransparency = Et;
  5382. end;
  5383. Animate = nil;
  5384. end;
  5385. }
  5386. );
  5387.  
  5388. M_CreateClass("DropdownBox",
  5389. {
  5390. --Main
  5391. Size = {"\4\0\0Vector2", Vector2.new(115, 25)},
  5392. Enabled = {"\3\0\0boolean", true},
  5393. Padding = {"\3\0\0Vector2", Vector2.new(5, 0)},
  5394. ToggleSound = {"\4\1\0Instance"},
  5395.  
  5396. --Text
  5397. Text = {"\3\0\0string", "DropdownBox"},
  5398. TextColor3 = {"\4\0\0Color3", M_Defaults.TextColor},
  5399.  
  5400. --Utility
  5401. Count = {"\3\0\1number", 0},
  5402. Scroll = {"\3\0\0number", 0},
  5403. IsOpen = {"\3\0\1boolean", false},
  5404. CanUnselect = {"\3\0\0boolean", false},
  5405. SelectedIndex = {"\2\1\0", nil},
  5406. SelectedValue = {"\2\1\1", nil},
  5407. MaxDrop = {"\3\0\0number", 3},
  5408. ShowSelected = {"\3\0\0boolean", true},
  5409. UseIndex = {"\3\0\0boolean", false},
  5410.  
  5411. --Appearance
  5412. BoxColor3 = {"\4\0\0Color3", M_Defaults.BackgroundColor},
  5413. BoxHoverColor3 = {"\4\0\0Color3", M_Defaults.BackgroundColor},
  5414. BoxOpenedColor3 = {"\4\0\0Color3", M_Defaults.SecondaryColor},
  5415. ArrowColor3 = {"\4\0\0Color3", M_ModernColors.Silver},
  5416. ArrowSize = {"\3\0\0number", 10},
  5417.  
  5418. --Events
  5419. Opened = {"\4\0\1Event"},
  5420. Closed = {"\4\0\1Event"},
  5421. ListChanged = {"\4\0\1Event"},
  5422. SelectionChanged = {"\4\0\1Event"},
  5423.  
  5424. --TweenInfo
  5425. ExpandTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  5426. 0.5,
  5427. Enum.EasingStyle.Sine,
  5428. Enum.EasingDirection.Out
  5429. )},
  5430. SlideTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  5431. 0.25,
  5432. Enum.EasingStyle.Sine,
  5433. Enum.EasingDirection.Out
  5434. )},
  5435. ScrollTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  5436. 0.25,
  5437. Enum.EasingStyle.Quad,
  5438. Enum.EasingDirection.Out
  5439. )},
  5440. ElasticyTweenInfo = {"\4\0\0TweenInfo", TweenInfo.new(
  5441. 0.25,
  5442. Enum.EasingStyle.Sine,
  5443. Enum.EasingDirection.Out
  5444. )},
  5445.  
  5446. --ItemFields
  5447. ItemHoverColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  5448. ItemHoverOffset = {"\3\0\0number", 10},
  5449. ItemSelectedColor3 = {"\4\0\0Color3", M_Defaults.HighlightColor},
  5450. ItemSelectedOffset = {"\3\0\0number", 5},
  5451. --Title
  5452. TitleHoverColor3 = {"\4\0\0Color3", M_Defaults.TextColor},
  5453.  
  5454. --End/Start Animation
  5455. BorderSizePixel = {"\3\0\0number", M_Defaults.BorderSize},
  5456. HoverBorderSizePixel = {"\3\0\0number", M_Defaults.BorderSize},
  5457. OpenBorderSizePixel = {"\3\0\0number", M_Defaults.BorderSize},
  5458. EndArrowColor3 = {"\4\0\0Color3", M_ModernColors.Silver},
  5459. },
  5460. {
  5461. Value = 'SelectedValue',
  5462. ValueChanged = 'SelectionChanged'
  5463. },
  5464. function(Proxy, Parent, List, Idx)
  5465. -- Get Meta
  5466. local Meta = GetMeta(Proxy);
  5467. local Fields = Meta.__Fields;
  5468. local List = List or {};
  5469.  
  5470. --Elements Creation
  5471. local Main = Instance.new("Frame", M_GetInstance(Parent));
  5472. local Background = Instance.new("ImageLabel", Main);
  5473. local Arrow = Instance.new("ImageLabel", Main);
  5474. local Title = Instance.new("TextButton", Main);
  5475. local ElementCanvas = Instance.new("Frame", Main);
  5476. local ElementContainer = Instance.new("Frame", ElementCanvas);
  5477.  
  5478. --Main Setup
  5479. Main.BackgroundTransparency = 1;
  5480. Main.BorderSizePixel = 0;
  5481. Main.Name = _PREFIX.."MagnoliaDropdownBox";
  5482.  
  5483. --Background
  5484. Background.Name = _PREFIX.."Background";
  5485. Background.BackgroundTransparency = 1;
  5486. Background.Image = "rbxassetid://3570695787";
  5487. Background.ScaleType = Enum.ScaleType.Slice;
  5488. Background.SliceScale = 0.1;
  5489. Background.Size = UDim2.new(1, 0, 1, 0);
  5490. Background.SliceCenter = Rect.new(100, 100, 100, 100);
  5491. Background.Position = UDim2.new(0.5, 0, 0, 0);
  5492. Background.AnchorPoint = Vector2.new(0.5, 0);
  5493. Background.ZIndex = Main.ZIndex;
  5494.  
  5495. --Arrow Setup
  5496. Arrow.Name = _PREFIX.."Arrow";
  5497. Arrow.BackgroundTransparency = 1;
  5498. Arrow.BorderSizePixel = 0;
  5499. Arrow.Image = "rbxassetid://3931363707";
  5500. Arrow.AnchorPoint = Vector2.new(1, 0.5);
  5501.  
  5502. --Title Setup
  5503. Title.Name = _PREFIX.."Title";
  5504. Title.BackgroundTransparency = 1;
  5505. Title.AnchorPoint = Vector2.new(0.5, 0);
  5506. Title.TextXAlignment = Enum.TextXAlignment.Left;
  5507. Title.Font = M_Defaults.Font;
  5508. Title.TextColor3 = M_Defaults.TextColor;
  5509. Title.TextSize = 8;
  5510.  
  5511. --ElementCanvas Setup
  5512. ElementCanvas.Name = _PREFIX.."ElementCanvas";
  5513. ElementCanvas.BackgroundTransparency = 1;
  5514. ElementCanvas.BorderSizePixel = 0;
  5515. ElementCanvas.AnchorPoint = Vector2.new(0.5, 1);
  5516. ElementCanvas.Position = UDim2.new(0.5, 0, 1, 0);
  5517. ElementCanvas.ClipsDescendants = true;
  5518.  
  5519. --ElementContainer Setup
  5520. ElementContainer.Name = _PREFIX.."ElementContainer";
  5521. ElementContainer.BackgroundTransparency = 1;
  5522. ElementContainer.BorderSizePixel = 0;
  5523. ElementContainer.AnchorPoint = Vector2.new(0.5, 0);
  5524. ElementContainer.Position = UDim2.new(0.5, 0, 0, 0);
  5525. ElementContainer.Size = UDim2.new(1, 0, 0, 0);
  5526. ElementContainer.ClipsDescendants = false;
  5527.  
  5528. --Connections
  5529. local Layer = 0;
  5530. Main.Changed:Connect(function(Field)
  5531. if Field == "BackgroundColor3" then
  5532. Background.ImageColor3 = Main.BackgroundColor3;
  5533. end;
  5534. end);
  5535. Main.MouseEnter:Connect(function()
  5536. if not Fields.IsOpen then
  5537. Main.BackgroundColor3 = Fields.BoxHoverColor3;
  5538. end;
  5539. end);
  5540. Main.MouseLeave:Connect(function()
  5541. if not Fields.IsOpen then
  5542. Main.BackgroundColor3 = Fields.BoxColor3;
  5543. end;
  5544. end);
  5545. Title.MouseEnter:Connect(function()
  5546. Title.TextColor3 = Fields.TitleHoverColor3;
  5547. end);
  5548. Title.MouseLeave:Connect(function()
  5549. Title.TextColor3 = Fields.TextColor3;
  5550. end);
  5551. Title.MouseButton1Down:Connect(function()
  5552. if not Fields.Enabled then return; end;
  5553. if not Fields.IsOpen then
  5554. Proxy:Open();
  5555. else
  5556. Proxy:Close();
  5557. end;
  5558. end);
  5559. ElementCanvas.MouseWheelBackward:Connect(function()
  5560. local List = Meta.List;
  5561. local MaxDrop = math.min(Fields.MaxDrop-1, Fields.Count-1);
  5562. Fields.Scroll = Fields.Scroll + 1;
  5563. if Fields.Scroll > (Fields.Count - MaxDrop - 1) then
  5564. Fields.Scroll = Fields.Count - MaxDrop - 1;--Elasticy Effect
  5565. TweenService:Create(
  5566. ElementContainer,
  5567. Fields.ElasticyTweenInfo,
  5568. {
  5569. Position = UDim2.new(0.5, 0, 0,
  5570. (-Fields.Scroll - 0.25)*Fields.Size.Y)
  5571. }
  5572. ):Play();
  5573. Layer = Layer + 1;
  5574. local LayerBackup = Layer;
  5575. wait(Fields.ElasticyTweenInfo.Time);
  5576. if LayerBackup ~= Layer then
  5577. return;
  5578. else
  5579. Layer = 0;
  5580. end;
  5581. end;
  5582. TweenService:Create(
  5583. ElementContainer,
  5584. Fields.ScrollTweenInfo,
  5585. {
  5586. Position = UDim2.new(0.5, 0, 0,
  5587. (-Fields.Scroll)*Fields.Size.Y)
  5588. }
  5589. ):Play();
  5590. end);
  5591. ElementCanvas.MouseWheelForward:Connect(function()
  5592. local List = Meta.List;
  5593. Fields.Scroll = Fields.Scroll - 1;
  5594. if Fields.Scroll < 0 then
  5595. Fields.Scroll = 0;--Elasticy Effect
  5596. TweenService:Create(
  5597. ElementContainer,
  5598. Fields.ElasticyTweenInfo,
  5599. {
  5600. Position = UDim2.new(0.5, 0, 0,
  5601. Fields.Size.Y*0.25)
  5602. }
  5603. ):Play();
  5604. Layer = Layer + 1;
  5605. local LayerBackup = Layer;
  5606. wait(Fields.ElasticyTweenInfo.Time);
  5607. if LayerBackup ~= Layer then
  5608. return;
  5609. else
  5610. Layer = 0;
  5611. end;
  5612. end;
  5613. TweenService:Create(
  5614. ElementContainer,
  5615. Fields.ScrollTweenInfo,
  5616. {
  5617. Position = UDim2.new(0.5, 0, 0,
  5618. (-Fields.Scroll)*Fields.Size.Y)
  5619. }
  5620. ):Play();
  5621. end);
  5622. --Meta Setup
  5623. Meta.__Instance = Main;
  5624. Meta.__Base2D = Main;
  5625. Meta.__ImageRender = Background;
  5626. Meta.__TextRender = Title;
  5627.  
  5628. Meta.ElementCanvas = ElementCanvas;
  5629. Meta.ElementContainer = ElementContainer;
  5630. Meta.Arrow = Arrow;
  5631. Meta.Title = Title;
  5632.  
  5633. Meta.List = {};
  5634. Meta.MouseHover = false;
  5635.  
  5636. --List Setup
  5637. for Idx, Val in pairs(List) do
  5638. Fields.AddItem(Proxy, Idx, Val);
  5639. end;
  5640.  
  5641. --Select
  5642. if Idx then
  5643. Fields.Select(Proxy, Idx);
  5644. else
  5645. --Fields.Select(Proxy, next(List));
  5646. end;
  5647. --First Draw
  5648. Fields.Redraw(Proxy);
  5649. end,
  5650. function(Draw)
  5651. -- Get Meta
  5652. --local Meta = GetMeta(Proxy);
  5653. --Instances
  5654. --local Main = Meta.__Instance;
  5655. --local Background = Meta.__ImageRender;
  5656. --local Title = Meta.__TextRender;
  5657. --local Arrow = Meta.Arrow;
  5658. --local ElementCanvas = Meta.ElementCanvas;
  5659. --local ElementContainer = Meta.ElementContainer;
  5660. --local SelectedText = Meta.SelectedText;
  5661. --Utility
  5662. --local Items = Meta.Items;
  5663. --local List = Meta.List;
  5664. --Fields
  5665. --local Fields = Meta.__Fields;
  5666. Draw['SelectedIndex'] = function(Meta, Fields, OldIndex, self)
  5667. Fields.Select(self, Fields.SelectedIndex);
  5668. end;
  5669. --Padding/Size
  5670. Draw['Padding'] = function(Meta, Fields)
  5671. -- instances
  5672. local Main = Meta.__Instance;
  5673. local Title = Meta.__TextRender;
  5674. local Arrow = Meta.Arrow;
  5675. -- chck if open
  5676. if not Fields.IsOpen then
  5677. Main.Size = UDim2.new(0, Fields.Size.X, 0, Fields.Size.Y);
  5678. else
  5679. Main.Size = UDim2.new(0, Fields.Size.X,
  5680. 0, Fields.Size.Y * (Fields.MaxDrop + 1));
  5681. end;
  5682. Meta.Title.Position = UDim2.new(0.5, Fields.Padding.X, 0, 0);
  5683. Title.Size = UDim2.new(1, -Fields.Padding.X, 0, Fields.Size.Y);
  5684. Arrow.Position = UDim2.new(1, -Fields.Padding.X, 0, math.floor(Fields.Size.Y/2));
  5685. Arrow.Size = UDim2.new(0, Fields.ArrowSize, 0, Fields.ArrowSize);
  5686. Meta.ElementCanvas.Size = UDim2.new(1, 0, 1, - Fields.Size.Y);
  5687. -- loop items
  5688. for Idx, Data in pairs(Meta.List)do
  5689. local Item = Data.Item;
  5690. TweenService:Create(Item, TweenInfo.new(0), {
  5691. Position = UDim2.new(0, Fields.Padding.X, 0,
  5692. Fields.Size.Y * Data.Ndx),
  5693. Size = UDim2.new(1, 0, 0, Fields.Size.Y)
  5694. }):Play(); -- this tween is gonna fix bugged default select before resize
  5695. end;
  5696. end;
  5697. Draw['Size'] = Draw['Padding'];
  5698. Draw['ArrowSize'] = Draw['Padding'];
  5699. --Text
  5700. Draw['Text'] = function(Meta, Fields)
  5701. -- instances
  5702. local Title = Meta.__TextRender;
  5703. -- check
  5704. if Fields.ShowSelected then
  5705. if Fields.UseIndex then
  5706. if Fields.SelectedIndex ~= nil then
  5707. Title.Text = tostring(Fields.SelectedIndex);
  5708. else
  5709. Title.Text = Fields.Text;
  5710. end;
  5711. else
  5712. if Fields.SelectedValue ~= nil then
  5713. Title.Text = tostring(Fields.SelectedValue);
  5714. else
  5715. Title.Text = Fields.Text;
  5716. end;
  5717. end;
  5718. else
  5719. Title.Text = Fields.Text;
  5720. end;
  5721. Title.TextColor3 = Fields.TextColor3;
  5722. for Idx, Val in pairs(Meta.List)do
  5723. local Item = Val.Item;
  5724. Item.Font = Title.Font;
  5725. Item.TextSize = Title.TextSize;
  5726. Item.TextColor3 = Title.TextColor3;
  5727. end;
  5728. end;
  5729. Draw['TextColor3'] = Draw['Text'];
  5730. --MaxDrop Scroll
  5731. Draw['MaxDrop'] = function(Meta, Fields)
  5732. -- stop draw if closed
  5733. if Fields.IsOpen == false then
  5734. return;
  5735. end
  5736. Meta.__Instance.Size = UDim2.new(0, Fields.Size.X,
  5737. 0, Fields.Size.Y * (Fields.MaxDrop + 1));
  5738. if Fields.Scroll < 0 then
  5739. Fields.Scroll = 0;
  5740. end;
  5741. local Delta = #Meta.List - Fields.MaxDrop - 1
  5742. if Fields.Scroll > Delta then
  5743. Fields.Scroll = Delta;
  5744. end;
  5745. TweenService:Create(
  5746. Meta.ElementContainer,
  5747. Fields.ScrollTweenInfo,
  5748. {
  5749. Position = UDim2.new(0.5, 0, 0,
  5750. (-Fields.Scroll)*Fields.Size.Y)
  5751. }
  5752. ):Play();
  5753. end;
  5754. Draw['Scroll'] = Draw['MaxDrop'];
  5755. --UseIndex
  5756. Draw['UseIndex'] = function(Meta, Fields)
  5757. for Idx, ItemData in pairs(Meta.List) do
  5758. local Item = ItemData.Item;
  5759. if Fields.UseIndex then
  5760. Item.Text = ItemData.Idx;
  5761. else
  5762. Item.Text = tostring(ItemData.Val);
  5763. end;
  5764. end;
  5765. end;
  5766. -- ItemSelectedColor3
  5767. Draw['ItemSelectedColor3'] = function(Meta, Fields)
  5768. if Meta.SelectedText then
  5769. Meta.SelectedText.TextColor3 = Fields.ItemSelectedColor3;
  5770. end;
  5771. end;
  5772. --Box Appearance
  5773. Draw['BoxColor3'] = function(Meta, Fields)
  5774. local Main = Meta.__Instance;
  5775. local Background = Meta.__ImageRender;
  5776. if Fields.IsOpen then
  5777. Main.BackgroundColor3 = Fields.BoxOpenedColor3;
  5778. Background.BorderSizePixel = Fields.OpenBorderSizePixel;
  5779. elseif Meta.MouseHover then
  5780. Main.BackgroundColor3 = Fields.BoxHoverColor3;
  5781. Background.BorderSizePixel = Fields.HoverBorderSizePixel;
  5782. else
  5783. Main.BackgroundColor3 = Fields.BoxColor3;
  5784. Background.BorderSizePixel = Fields.BorderSizePixel;
  5785. end;
  5786. end;
  5787. Draw['BoxHoverColor3'] = Draw['BoxColor3'];
  5788. Draw['BorderSizePixel'] = Draw['BoxColor3'];
  5789. Draw['OpenBorderSizePixel'] = Draw['BoxColor3'];
  5790. Draw['HoverBorderSizePixel'] = Draw['BoxColor3'];
  5791. --Arrow Appearance
  5792. Draw['ArrowColor3'] = function(Meta, Fields)
  5793. if Fields.IsOpen then
  5794. Meta.Arrow.ImageColor3 = Fields.EndArrowColor3;
  5795. else
  5796. Meta.Arrow.ImageColor3 = Fields.ArrowColor3;
  5797. end;
  5798. end;
  5799. Draw['EndArrowColor3'] = Draw['ArrowColor3'];
  5800. end,
  5801. {
  5802. AddItem = function(self, Idx, Val)
  5803. -- Check
  5804. if Val == nil then
  5805. return error("Val cannot be nil.");
  5806. end;
  5807. -- Get Meta
  5808. local Meta = GetMeta(self);
  5809. local ElementCanvas = Meta.ElementCanvas;
  5810. local ElementContainer = Meta.ElementContainer;
  5811. local Title = Meta.__TextRender;
  5812. local List = Meta.List;
  5813. local Fields = Meta.__Fields;
  5814. local Padding = Fields.Padding;
  5815. local ListChanged = Meta.ListChanged;
  5816. -- default index is top
  5817. if not Idx then
  5818. Idx = Fields.Count + 1;
  5819. end
  5820. -- idx check if already present
  5821. if List[Idx] then
  5822. return error('Idx already present in the list')
  5823. end;
  5824. -- Creation
  5825. local TextRender = Instance.new("TextButton", ElementContainer);
  5826. TextRender.Name = _PREFIX..tostring(Idx);
  5827. TextRender.BackgroundTransparency = 1;
  5828. TextRender.BorderSizePixel = 0;
  5829. TextRender.TextColor3 = Fields.TextColor3;
  5830. TextRender.Font = Title.Font;
  5831. TextRender.TextSize = Title.TextSize;
  5832. TextRender.TextColor3 = Fields.TextColor3;
  5833. TextRender.TextXAlignment = Enum.TextXAlignment.Left;
  5834. -- Visible Text
  5835. if Fields.UseIndex then
  5836. TextRender.Text = Idx;
  5837. else
  5838. TextRender.Text = Val;
  5839. end;
  5840. -- Get Size
  5841. local Ndx = Fields.Count;
  5842. Fields.Count = Fields.Count + 1;
  5843. TextRender.Position = UDim2.new(0, Fields.Padding.X, 0,
  5844. Fields.Size.Y * Ndx);
  5845. TextRender.Size = UDim2.new(1, 0, 0, Fields.Size.Y);
  5846. List[Idx] = {
  5847. Ndx = Ndx,
  5848. Val = Val,
  5849. Item = TextRender
  5850. };
  5851. -- Connections
  5852. TextRender.MouseEnter:Connect(function()
  5853. if Fields.SelectedIndex == Idx then return; end;
  5854. TweenService:Create(
  5855. TextRender,
  5856. Fields.SlideTweenInfo,
  5857. {
  5858. TextColor3 = Fields.ItemHoverColor3,
  5859. Position = UDim2.new(0, Fields.ItemHoverOffset, 0,
  5860. Fields.Size.Y * List[Idx].Ndx);
  5861. }
  5862. ):Play();
  5863. end);
  5864. TextRender.MouseLeave:Connect(function()
  5865. if Fields.SelectedIndex == Idx then return; end;
  5866. TweenService:Create(
  5867. TextRender,
  5868. Fields.SlideTweenInfo,
  5869. {
  5870. TextColor3 = Fields.TextColor3,
  5871. Position = UDim2.new(0, Fields.Padding.X, 0,
  5872. Fields.Size.Y * List[Idx].Ndx);
  5873. }
  5874. ):Play();
  5875. end);
  5876. local ClickClosure = function()
  5877. if Fields.SelectedIndex == Idx then
  5878. if Fields.CanUnselect then
  5879. self:Unselect();
  5880. end;
  5881. else
  5882. self:Select(Idx);
  5883. end;
  5884. end;
  5885. TextRender.MouseButton1Click:Connect(ClickClosure);
  5886. TextRender.MouseButton2Click:Connect(ClickClosure);
  5887. -- re-size
  5888. if Fields.IsOpen then
  5889. Fields.Open(self, true);
  5890. end
  5891. -- Fire Event
  5892. ListChanged:Fire(true, Idx);
  5893. return TextRender;
  5894. end,
  5895. RemoveItem = function(self, Index)
  5896. -- Get Meta
  5897. local Meta = GetMeta(self);
  5898. local List = Meta.List;
  5899. local Fields = Meta.__Fields;
  5900. local Padding = Fields.Padding;
  5901. local ListChanged = Meta.ListChanged;
  5902. -- Search
  5903. local Value = List[Index];
  5904. if Value == nil then
  5905. return; -- exit function
  5906. end;
  5907. -- remove item
  5908. Value.Item:Remove(); Value.Item:Destroy();
  5909. -- dictionary case
  5910. if type(Index) ~= 'number' then
  5911. List[Index] = nil;
  5912. -- random order?
  5913. local I = 0;
  5914. for _, Val in next, List do
  5915. local Item = Val.Item;
  5916. Val.Ndx = I; -- update
  5917. Item.Position = UDim2.new(0, Fields.Padding.X, 0,
  5918. Fields.Size.Y * I);
  5919. I = I + 1;
  5920. end
  5921. else
  5922. table.remove(List, Index);
  5923. -- array case
  5924. for Idx = Index, #List, 1 do
  5925. local Item = List[Idx].Item;
  5926. List[Idx].Ndx = Idx; -- update n-index
  5927. Item.Position = UDim2.new(0, Fields.Padding.X, 0,
  5928. Fields.Size.Y * Idx);
  5929. end;
  5930. end
  5931. Value = nil;
  5932. -- remove selected index
  5933. if Fields.SelectedIndex == Index then
  5934. Fields.SelectedIndex = nil;
  5935. Fields.SelectedValue = nil;
  5936. end;
  5937. -- event
  5938. Fields.Count = Fields.Count - 1;
  5939. -- re-size
  5940. if Fields.IsOpen then
  5941. Fields.Open(self, true);
  5942. end
  5943. ListChanged:Fire(false, Index);
  5944. return;
  5945. end,
  5946. GetOpenSize = function(self)
  5947. -- Get Meta
  5948. local Meta = GetMeta(self);
  5949. local Fields = Meta.__Fields;
  5950. local MaxDrop = Fields.MaxDrop;
  5951. -- Math
  5952. return math.min(Fields.MaxDrop+1, Fields.Count+1) * Fields.Size.Y;
  5953. end,
  5954. Open = function(self, Ignore)
  5955. -- Get Meta
  5956. local Meta = GetMeta(self);
  5957. local Fields = Meta.__Fields;
  5958. local Main = Meta.__Instance;
  5959. local Arrow = Meta.Arrow;
  5960. -- stop useless calls
  5961. if Fields.IsOpen and Ignore == nil then
  5962. return;
  5963. end
  5964. Fields.IsOpen = true;
  5965. -- Tweens
  5966. TweenService:Create(
  5967. Main,
  5968. Fields.ExpandTweenInfo,
  5969. {
  5970. Size = UDim2.new(0, Fields.Size.X,
  5971. 0, Fields.GetOpenSize(self)),
  5972. BackgroundColor3 = Fields.BoxOpenedColor3
  5973. }
  5974. ):Play();
  5975. TweenService:Create(
  5976. Arrow,
  5977. Fields.ExpandTweenInfo,
  5978. {
  5979. Rotation = 180
  5980. }
  5981. ):Play();
  5982. Fields.IsOpen = true;
  5983. if not Ignore then -- ignore resizes
  5984. Meta.Opened:Fire();
  5985. -- sound
  5986. if Fields.ToggleSound then
  5987. Fields.ToggleSound:Play();
  5988. end;
  5989. end;
  5990. end,
  5991. Close = function(self)
  5992. -- Get Meta
  5993. local Meta = GetMeta(self);
  5994. local List = Meta.List;
  5995. local Fields = Meta.__Fields;
  5996. local Main = Meta.__Instance;
  5997. local Arrow = Meta.Arrow;
  5998. -- stop useless calls
  5999. if Fields.IsOpen == false then
  6000. return;
  6001. end
  6002. Fields.IsOpen = false;
  6003. -- Tweens
  6004. TweenService:Create(
  6005. Main,
  6006. Fields.ExpandTweenInfo,
  6007. {
  6008. Size = UDim2.new(0, Fields.Size.X,
  6009. 0, Fields.Size.Y),
  6010. BackgroundColor3 = Fields.BoxColor3
  6011. }
  6012. ):Play();
  6013. TweenService:Create(
  6014. Arrow,
  6015. Fields.ExpandTweenInfo,
  6016. {
  6017. Rotation = 0
  6018. }
  6019. ):Play();
  6020. Fields.IsOpen = false;
  6021. Meta.Closed:Fire();
  6022. -- sound
  6023. if Fields.ToggleSound then
  6024. Fields.ToggleSound:Play();
  6025. end;
  6026. end,
  6027. Select = function(self, Idx)
  6028. -- Get Meta
  6029. local Meta = GetMeta(self);
  6030. local Fields = Meta.__Fields;
  6031. local List = Meta.List;
  6032. local Data = List[Idx];
  6033. if Data then
  6034. Fields.SelectedIndex = Idx;
  6035. Fields.SelectedValue = Data.Val;
  6036. Meta.SelectedText = Data.Item;
  6037. Meta.Draw["Text"](Meta, Fields);
  6038.  
  6039. Meta.ItemTween = TweenService:Create(Data.Item,
  6040. Fields.SlideTweenInfo,
  6041. {
  6042. TextColor3 = Fields.ItemSelectedColor3,
  6043. Position = UDim2.new(0, Fields.ItemSelectedOffset, 0,
  6044. Fields.Size.Y * Data.Ndx)
  6045. }
  6046. );
  6047. Meta.ItemTween:Play();
  6048. Meta.SelectionChanged:Fire(Idx, Data.Val);
  6049. return true;
  6050. else
  6051. return false;
  6052. end
  6053. end,
  6054. Unselect = function(Proxy)
  6055. local Meta = GetMeta(Proxy);
  6056. local Fields = Meta.__Fields;
  6057. local List = Meta.List;
  6058. local Item;
  6059. for Ndx, Val in pairs(List)do
  6060. if Val.Idx == Fields.SelectedIndex then
  6061. Item = Val;
  6062. break;
  6063. end;
  6064. end;
  6065. Fields.SelectedIndex = nil;
  6066. Fields.SelectedValue = nil;
  6067. Meta.SelectedText = nil;
  6068. Fields.Redraw(Proxy, "Text");
  6069.  
  6070. TweenService:Create(Item.Item,
  6071. Fields.SlideTweenInfo,
  6072. {
  6073. TextColor3 = Fields.ItemSelectedColor3,
  6074. Position = UDim2.new(0, Fields.Padding.X, 0,
  6075. Fields.Size.Y * Item.Ndx)
  6076. }
  6077. ):Play();
  6078. Meta.SelectionChanged:Fire();
  6079. end
  6080. }
  6081. )
  6082. M_CreateClass("ScrollingFrame",
  6083. {
  6084. -- Fields
  6085. Container = {"\2\1\1"},
  6086. MaxLayer = {"\3\0\0number", 10},
  6087. AutoAdjust = {"\3\0\0boolean", false},
  6088. ScrollTweenInfo = {"\4\0\0TweenInfo"},
  6089. -- TweenInfo
  6090. -- Utility
  6091. GripSize = {"\3\0\0number", 3},
  6092. GripVisible = {"\3\0\0boolean", false},
  6093. IsTravelling = {"\3\0\1boolean", false},
  6094. CanScroll = {"\3\0\0boolean", true},
  6095. FreeScroll = {"\3\0\0boolean", false},
  6096. Step = {"\3\0\0number", 1},
  6097. StepSize = {"\3\0\0number", 25},
  6098. Layer = {"\3\0\1number", 0},
  6099. OnTop = {"\3\0\1boolean", true},
  6100. OnBottom = {"\3\0\1boolean", false},
  6101. -- Methods
  6102. -- Scroll = "\3\0\1function",
  6103. -- Reset = "\3\0\1function",
  6104. -- GetFullSize = "\3\0\1function",
  6105. -- GetVisibleLayers = "\3\0\1function",
  6106. -- Events
  6107. Travelling = {"\4\0\1Event"},
  6108. ScrollingUp = {"\4\0\1Event"},
  6109. ScrollingDown = {"\4\0\1Event"},
  6110. BottomTouched = {"\4\0\1Event"},
  6111. TopTouched = {"\4\0\1Event"}
  6112. },
  6113. {
  6114.  
  6115. },
  6116. function(Proxy, Parent, ScrollTweenInfo)
  6117. -- Get Meta
  6118. local Meta = GetMeta(Proxy);
  6119. local Fields = Meta.__Fields;
  6120.  
  6121. -- Grip Color
  6122. Fields.GripColor = M_ModernColors.ElectricBlue;
  6123. Fields.ScrollTweenInfo = ScrollTweenInfo;
  6124. -- Creation
  6125. local Main = Instance.new("Frame", M_GetInstance(Parent));
  6126. local Grip = Instance.new("Frame", Main);
  6127. local Container = Instance.new("Frame", Main);
  6128. Fields.Container = Container;
  6129. Meta.Container = Container;
  6130. -- Creation Setup
  6131. Main.Name = _PREFIX..'ScrollingFrame';
  6132. Main.BackgroundTransparency = 1;
  6133. Main.Size = UDim2.new(0, 200, 0, 200);
  6134.  
  6135. Grip.Name = 'Grip';
  6136. Grip.BorderSizePixel = 0;
  6137. Grip.AnchorPoint = Vector2.new(1, 0);
  6138. Grip.Position = UDim2.new(1, 0, 0, 0);
  6139.  
  6140. Container.Name = _PREFIX..'Container';
  6141. Container.AnchorPoint = Vector2.new(0.5, 0);
  6142. Container.Position = UDim2.new(0.5, 0, 0, 0);
  6143. Container.BackgroundTransparency = 1;
  6144. Container.Size = UDim2.new(1, 0, 1, 0);
  6145. Container.ClipsDescendants = true;
  6146.  
  6147. -- Main Connection
  6148. Main.Changed:Connect(function(Field)
  6149. if Field == 'Size' then
  6150. Fields.Redraw(Proxy, 'StepSize');
  6151. end;
  6152. end);
  6153.  
  6154. --Meta Setup
  6155. Meta.__Instance = Main;
  6156. Meta.__Base2D = Main;
  6157. Meta.__Background = Container;
  6158. Meta.Grip = Grip;
  6159.  
  6160. -- Grip Function
  6161. local UpdateGrip = function()
  6162. local FullSize = Fields.GetFullSize(Proxy);
  6163.  
  6164. local Mapped = M_Math.Map(Fields.Layer, 0, Fields.MaxLayer, 0, FullSize);
  6165. Grip.Position = UDim2.new(1, 0, 0, Mapped);
  6166.  
  6167. -- Change AnchorPoint
  6168. local Y = tostring(Mapped / FullSize * 100)/100;
  6169. Grip.AnchorPoint = Vector2.new(1, Y);
  6170. end;
  6171.  
  6172. -- Core
  6173. Main.MouseWheelForward:Connect(function()
  6174. if Fields.CanScroll then
  6175. if Fields.Layer <= 0 then
  6176. TweenService:Create(
  6177. Container,
  6178. Fields.ScrollTweenInfo,
  6179. {
  6180. Position = UDim2.new(0.5, 0, 0, (-Fields.Layer*Fields.StepSize)+Fields.StepSize);
  6181. }
  6182. ):Play();
  6183. wait(Fields.ScrollTweenInfo.Time);
  6184. elseif Fields.Layer > 0 then
  6185. -- Travelling
  6186. Meta.Travelling:Fire();
  6187. Fields.IsTravelling = true;
  6188. -- Fields Update
  6189. Fields.OnTop = false;
  6190. Fields.Layer = Fields.Layer - Fields.Step;
  6191. -- Top Touched
  6192. if Fields.Layer <= 0 then
  6193. -- Variables
  6194. Fields.OnBottom = false;
  6195. Fields.OnTop = true;
  6196. Fields.IsTravelling = false;
  6197. -- Event
  6198. Meta.TopTouched:Fire();
  6199. end;
  6200. end;
  6201. TweenService:Create(
  6202. Container,
  6203. Fields.ScrollTweenInfo,
  6204. {
  6205. Position = UDim2.new(0.5, 0, 0, (-Fields.Layer*Fields.StepSize));
  6206. }
  6207. ):Play();
  6208. UpdateGrip();
  6209. end;
  6210. end);
  6211. Main.MouseWheelBackward:Connect(function()
  6212. if Fields.CanScroll then
  6213. if Fields.Layer >= Fields.MaxLayer then
  6214. TweenService:Create(
  6215. Container,
  6216. Fields.ScrollTweenInfo,
  6217. {
  6218. Position = UDim2.new(0.5, 0, 0, (-Fields.Layer*Fields.StepSize)-Fields.StepSize);
  6219. }
  6220. ):Play();
  6221. wait(Fields.ScrollTweenInfo.Time);
  6222. else
  6223. -- Travelling
  6224. Meta.Travelling:Fire();
  6225. Fields.IsTravelling = true;
  6226. -- Fields Update
  6227. Fields.OnBottom = false;
  6228. Fields.Layer = Fields.Layer + Fields.Step;
  6229. -- Bottom Touched
  6230. if Fields.Layer >= Fields.MaxLayer then
  6231. -- Variables
  6232. Fields.OnBottom = true;
  6233. Fields.OnTop = false;
  6234. Fields.IsTravelling = false;
  6235. -- Event
  6236. Meta.BottomTouched:Fire();
  6237. end;
  6238. end;
  6239. TweenService:Create(
  6240. Container,
  6241. Fields.ScrollTweenInfo,
  6242. {
  6243. Position = UDim2.new(0.5, 0, 0, (-Fields.Layer*Fields.StepSize));
  6244. }
  6245. ):Play();
  6246. UpdateGrip();
  6247. end;
  6248. end);
  6249.  
  6250. -- Return
  6251. Fields.Redraw(Proxy);
  6252. return Proxy;
  6253. end,
  6254. -- Draw Register
  6255. function(Draw)
  6256. --
  6257. Draw['GripVisible'] = function(Meta, Fields)
  6258. Meta.Grip.Visible = Fields.GripVisible;
  6259. Meta.Grip.Size = UDim2.new(0, Fields.GripSize, 0, Meta.Grip.Size.Y.Offset);
  6260. end;
  6261. Draw['GripSize'] = Draw['GripVisible'];
  6262. --
  6263. Draw['MaxLayer'] = function(Meta, Fields)
  6264. local FullSize = Fields.GetFullSize(Meta.__Proxy);
  6265. local VisibleLayers = Fields.GetVisibleLayers(Meta.__Proxy, FullSize);
  6266.  
  6267. Meta.Grip.Size = UDim2.new(0, Fields.GripSize, 0, FullSize/VisibleLayers);
  6268. end;
  6269. Draw['StepSize'] = Draw['MaxLayer'];
  6270. --
  6271. Draw['GripColor'] = function(Meta, Fields)
  6272. Meta.Grip.BackgroundColor3 = Fields.GripColor;
  6273. end;
  6274. end,
  6275. {
  6276. GetFullSize = function(Proxy)
  6277. -- Variables
  6278. local Meta = GetMeta(Proxy);
  6279. local Fields = Meta.__Fields;
  6280. local Main = Meta.__Instance;
  6281. -- Calculate
  6282. return Main.AbsoluteSize.Y;
  6283. end,
  6284. GetVisibleLayers = function(Proxy)
  6285. -- Variables
  6286. local Meta = GetMeta(Proxy);
  6287. local Fields = Meta.__Fields;
  6288. local Main = Meta.__Instance;
  6289. -- Calculate
  6290. return math.floor(Main.AbsoluteSize.Y / Fields.StepSize);
  6291. end,
  6292. Scroll = function(Proxy, Step)
  6293. -- Main
  6294. local Meta = GetMeta(Proxy);
  6295. local Fields = Meta.__Fields;
  6296. -- Instance
  6297. end;
  6298. Reset = function(Proxy)
  6299. -- Variables
  6300. local Meta = GetMeta(Proxy);
  6301. local Fields = Meta.__Fields;
  6302. -- Container
  6303. local Container = Meta.__Background;
  6304. -- Reset
  6305. Fields.Layer = 0;
  6306. TweenService:Create(
  6307. Container,
  6308. Fields.ScrollTweenInfo,
  6309. {
  6310. Position = UDim2.new(0.5, 0, 0, (Fields.Layer*Fields.StepSize));
  6311. }
  6312. ):Play();
  6313. end;
  6314. }
  6315. );
  6316.  
  6317. M_CreateClass('ColorPicker',
  6318. {
  6319. Size = {"\4\0\0Vector2", Vector2.new(200, 130)},
  6320. PointerSize = {"\3\0\0number", 20},
  6321. BottomPadding = {"\3\0\0number", 20},
  6322. -- Utility
  6323. ValueDragging = {"\3\0\1boolean", false},
  6324. Dragging = {"\3\0\1boolean", false},
  6325. BorderDistance = {"\3\0\0number", 5},
  6326. IsOpen = {"\3\0\1boolean", false},
  6327. Color = {"\4\0\0Color3"},
  6328. --
  6329. SecondaryColor = {"\4\0\0Color3", M_ModernColors.DimMidnightBlue},
  6330. TextColor = {"\4\0\0Color3", Color3.new(1, 1, 1)},
  6331. -- Event
  6332. ColorChanged = {"\4\0\1Event"},
  6333. },
  6334. {
  6335. Value = 'Color',
  6336. ValueChanged = 'ColorChanged'
  6337. },
  6338. function(Proxy, Parent, StartColor)
  6339. -- Get Meta
  6340. local Meta = GetMeta(Proxy);
  6341. local Fields = Meta.__Fields;
  6342. -- Set Color
  6343. Fields.Color = typeof(StartColor) == 'Color3' and StartColor or Color3.new(1, 1, 1);
  6344. -- Creation
  6345. local Main = Instance.new("Frame", Parent);
  6346. local Container = Instance.new("Frame", Main);
  6347. local Canvas = Instance.new("ImageButton", Container);
  6348. local Pointer = Instance.new("ImageLabel", Canvas);
  6349. local ValueCanvas = Instance.new("ImageButton", Container);
  6350. local ValuePointer = Instance.new("Frame", ValueCanvas);
  6351. local ColorInfo = Instance.new("TextLabel", Container);
  6352.  
  6353. -- Instance Setup
  6354. Main.Name = _PREFIX.."ColorPicker";
  6355. Main.BorderColor3 = Color3.fromRGB(255, 255, 255);
  6356. Main.BackgroundTransparency = 1;
  6357. Main.ClipsDescendants = true;
  6358.  
  6359. Container.Name = _PREFIX.."Container";
  6360. Container.AnchorPoint = Vector2.new(0, 0);
  6361.  
  6362. Canvas.Name = _PREFIX.."Canvas";
  6363. Canvas.Image = "rbxassetid://4018903152";
  6364. Canvas.ClipsDescendants = true;
  6365. Canvas.BackgroundTransparency = 1;
  6366. Canvas.Active = true;
  6367.  
  6368. Pointer.Name = _PREFIX.."Pointer";
  6369. Pointer.Image = "rbxassetid://4019495410";
  6370. Pointer.AnchorPoint = Vector2.new(0.5, 0.5);
  6371. Pointer.BackgroundTransparency = 1;
  6372.  
  6373. ValueCanvas.Name = _PREFIX.."ValueCanvas";
  6374. ValueCanvas.BorderSizePixel = 0;
  6375. ValueCanvas.Image = "rbxassetid://4019265005";
  6376. ValueCanvas.AnchorPoint = Vector2.new(1, 0);
  6377. ValueCanvas.BackgroundTransparency = 1;
  6378.  
  6379. ValuePointer.Name = _PREFIX.."ValuePointer";
  6380. ValuePointer.Size = UDim2.new(1, 0, 0, 6);
  6381. ValuePointer.BorderSizePixel = 0;
  6382.  
  6383. ColorInfo.Name = _PREFIX..'ColorInfo';
  6384. ColorInfo.Text = Fields.GetFormat(Proxy);
  6385. ColorInfo.BackgroundTransparency = 1;
  6386. ColorInfo.AnchorPoint = Vector2.new(0, 1);
  6387. ColorInfo.Position = UDim2.new(0, Fields.BorderDistance, 1, 0);
  6388. ColorInfo.TextXAlignment = Enum.TextXAlignment.Left;
  6389.  
  6390. -- Events
  6391. Fields.ColorChanged:Connect(function()
  6392. ColorInfo.Text = Fields.GetFormat(Proxy);
  6393. end);
  6394.  
  6395. local canvasConnection;
  6396. local valueConnection;
  6397.  
  6398. -- Core Connections
  6399. utils.onDownUp(Canvas, function()
  6400. Fields.Dragging = true;
  6401. canvasConnection = Mouse.Move:Connect(Meta.MoveClosure);
  6402. end, function()
  6403. Fields.Dragging = false;
  6404. if canvasConnection then
  6405. canvasConnection:Disconnect();
  6406. end;
  6407. end);
  6408.  
  6409. utils.onDownUp(ValueCanvas, function()
  6410. Fields.ValueDragging = true;
  6411. valueConnection = Mouse.Move:Connect(Meta.MoveClosure);
  6412. end, function()
  6413. Fields.ValueDragging = false;
  6414. if valueConnection then
  6415. valueConnection:Disconnect();
  6416. end;
  6417. end);
  6418.  
  6419. Meta.MoveClosure = function(input)
  6420. -- Pointer System
  6421. if Fields.Dragging then
  6422. local Position = UDim2.new(math.clamp((Mouse.X - Canvas.AbsolutePosition.X) / Canvas.AbsoluteSize.X, 0, 1), 0, math.clamp((Mouse.Y - Canvas.AbsolutePosition.Y) / Canvas.AbsoluteSize.Y, 0, 1), 0);
  6423. -- Tween
  6424. TweenService:Create(
  6425. Pointer,
  6426. utils.tweenInfo.move,
  6427. {
  6428. Position = Position;
  6429. }
  6430. ):Play();
  6431. wait(utils.tweenInfo.move.Time);
  6432. -- Select Color
  6433. Fields.SelectColor(Proxy);
  6434. end;
  6435. -- Value Pointer System
  6436. if Fields.ValueDragging then
  6437. local Position = UDim2.new(0, 0, math.clamp((Mouse.Y - ValueCanvas.AbsolutePosition.Y) / ValueCanvas.AbsoluteSize.Y, 0, 1), 0);
  6438. local AnchorPoint = Vector2.new(0, ValuePointer.Position.Y.Scale);
  6439. -- Tween
  6440. TweenService:Create(
  6441. ValuePointer,
  6442. utils.tweenInfo.move,
  6443. {
  6444. Position = Position,
  6445. AnchorPoint = AnchorPoint;
  6446. }
  6447. ):Play();
  6448. wait(utils.tweenInfo.move.Time);
  6449. -- Select Color
  6450. Fields.SelectColor(Proxy);
  6451. end;
  6452. end;
  6453.  
  6454. Meta.RainbowOffset = 0x0;
  6455.  
  6456. -- Meta Setup
  6457. Meta.__Instance = Main;
  6458. Meta.__Base2D = Main;
  6459. Meta.__ImageRender = Pointer;
  6460. Meta.ColorInfo = ColorInfo;
  6461. Meta.Canvas = Canvas;
  6462. Meta.Container = Container;
  6463. Meta.ValueCanvas = ValueCanvas;
  6464. Meta.ValuePointer = ValuePointer;
  6465. -- First Draw
  6466. Fields.Redraw(Proxy);
  6467. Fields.Close(Proxy, true);
  6468. end,
  6469. -- Draw Register
  6470. function(Draw)
  6471. --
  6472. Draw['Size'] = function(Meta, Fields)
  6473. Meta.__Instance.Size = UDim2.new(0, Fields.IsOpen and Fields.Size.X, 0, Fields.Size.Y);
  6474. Meta.Container.Size = UDim2.new(0, Fields.Size.X, 0, Fields.Size.Y);
  6475. Meta.__ImageRender.Size = UDim2.new(0, Fields.PointerSize, 0, Fields.PointerSize);
  6476. Meta.__ImageRender.ImageColor3 = Fields.Color;
  6477. Fields.SelectColor(Meta.__Proxy, Fields.Color);
  6478. end;
  6479. Draw['PointerSize'] = Draw['Size'];
  6480. --
  6481. Draw['BorderDistance'] = function(Meta, Fields)
  6482. local ValueCanvas = Meta.ValueCanvas;
  6483. -- ValueCanvas Setup
  6484. ValueCanvas.Position = UDim2.new(1, -Fields.BorderDistance, 0, Fields.BorderDistance);
  6485. ValueCanvas.Size = UDim2.new(0, 26, 1, -Fields.BorderDistance*2 - Fields.BottomPadding);
  6486. -- Canvas Setup
  6487. Meta.Canvas.Position = UDim2.new(0, Fields.BorderDistance, 0, Fields.BorderDistance);
  6488. Meta.Canvas.Size = UDim2.new(0, Fields.Size.X - Fields.BorderDistance*3 - ValueCanvas.Size.X.Offset, 1, ValueCanvas.Size.Y.Offset);
  6489. end;
  6490. --
  6491. Draw['BottomPadding'] = function(Meta, Fields)
  6492. Meta.ColorInfo.Size = UDim2.new(1, 0, 0, Fields.BottomPadding);
  6493. end;
  6494. --
  6495. Draw['SecondaryColor'] = function(Meta, Fields)
  6496. Meta.Container.BackgroundColor3 = Fields.SecondaryColor;
  6497. Meta.__ImageRender.ImageColor3 = Fields.SecondaryColor;
  6498. Meta.ValuePointer.BackgroundColor3 = Fields.SecondaryColor;
  6499. end;
  6500. --
  6501. Draw['TextColor'] = function(Meta, Fields)
  6502. Meta.ColorInfo.TextColor3 = Fields.TextColor;
  6503. end;
  6504. end,
  6505. {
  6506. GetFormat = function(Proxy)
  6507. -- Variables
  6508. local Meta = GetMeta(Proxy);
  6509. local Fields = Meta.__Fields;
  6510. local Color = Fields.Color;
  6511. -- return
  6512. local Res = string.format('H: %.1f S: %.1f V: %.1f', Color:ToHSV())
  6513. return Res;
  6514. end,
  6515. SelectColor = function(self, ColorToPoint)
  6516. -- Get Meta
  6517. local Meta = GetMeta(self);
  6518. local Fields = Meta.__Fields;
  6519. -- Instances
  6520. local Pointer = Meta.__ImageRender;
  6521. local ValuePointer = Meta.ValuePointer;
  6522. local ValueCanvas = Meta.ValueCanvas;
  6523. -- Global
  6524. local H,S,V;
  6525. if typeof(ColorToPoint) == "Color3" then
  6526. local ColorToPoint = Color3.new(ColorToPoint.R, ColorToPoint.G, ColorToPoint.B);
  6527. H,S,V = ColorToPoint:ToHSV();
  6528. -- Pointers Update
  6529. Pointer.Position = UDim2.new(H, 0, 1 - S, 0);
  6530. ValuePointer.Position = UDim2.new(0, 0, 1 - V, 0);
  6531. -- Value Canvas Update
  6532. ValueCanvas.ImageColor3 = Color3.fromHSV(H, S, 1);
  6533. -- Return
  6534. Fields.Color = Color3.fromHSV(H, S, V);
  6535. Meta.ColorChanged:Fire(Fields.Color);
  6536. else
  6537. H = Pointer.Position.X.Scale;
  6538. S = Pointer.Position.Y.Scale;
  6539. V = ValuePointer.Position.Y.Scale;
  6540. -- Value Canvas Update
  6541. ValueCanvas.ImageColor3 = Color3.fromHSV(H, 1 - S, 1);
  6542. -- Return
  6543. Fields.Color = Color3.fromHSV(H, 1 - S, 1 - V);
  6544. Meta.ColorChanged:Fire(Fields.Color);
  6545. end;
  6546. end,
  6547. Open = function(self)
  6548. -- Get Meta
  6549. local Meta = GetMeta(self);
  6550. local Fields = Meta.__Fields;
  6551. local Main = Meta.__Instance;
  6552. -- Check
  6553. if Fields.IsOpen == false then
  6554. Fields.IsOpen = true;
  6555. -- Tween
  6556. TweenService:Create(
  6557. Main,
  6558. utils.tweenInfo.move,
  6559. {
  6560. Size = UDim2.new(0, Fields.Size.X, 0, Fields.Size.Y);
  6561. }
  6562. ):Play();
  6563. end;
  6564. end,
  6565. Close = function(self, IgnoreSound)
  6566. -- Get Meta
  6567. local Meta = GetMeta(self);
  6568. local Fields = Meta.__Fields;
  6569. local Main = Meta.__Instance;
  6570. local MoveConnection = Meta.MoveConnection;
  6571. -- Check
  6572. if Fields.IsOpen then
  6573. Fields.IsOpen = false;
  6574. -- Tween
  6575. TweenService:Create(
  6576. Main,
  6577. utils.tweenInfo.move,
  6578. {
  6579. Size = UDim2.new(0, 0, 0, Fields.Size.Y);
  6580. }
  6581. ):Play();
  6582. -- Disconnect Move Connection
  6583. if MoveConnection then
  6584. MoveConnection:Disconnect();
  6585. Meta.MoveConnection = nil;
  6586. end;
  6587. end;
  6588. end;
  6589. }
  6590. );
  6591. end;
  6592.  
  6593. -- Notifications Core
  6594. do
  6595. local Distance = 6;
  6596. local DistanceBorder = 20;
  6597. -- TweenInfos
  6598. local Slide = TweenInfo.new(
  6599. 0.2,
  6600. Enum.EasingStyle.Linear,
  6601. Enum.EasingDirection.In
  6602. );
  6603. local SlideY = TweenInfo.new(
  6604. 0.2,
  6605. Enum.EasingStyle.Linear,
  6606. Enum.EasingDirection.Out
  6607. );
  6608. -- DefaultValues
  6609. local Duration = 2;
  6610. local TextColor = Color3.new(1, 1, 1);
  6611. local BackgroundColor = M_ModernColors.DimMidnightBlue;
  6612. -- Storages
  6613. local Notifications = {}; -- keep all online notifications
  6614. local IDs = {}; -- keep all notifications instance
  6615. local Tweening = {}; -- keep a bool that let understand if the alert lib is tweening down some alerts
  6616. --
  6617. local Dummy;
  6618. do
  6619. -- Instances Creation
  6620. Dummy = Instance.new('ImageLabel');
  6621. Dummy.Name = _PREFIX .. 'MagnoliaAlert';
  6622. Dummy.Image = "rbxassetid://3570695787";
  6623. Dummy.ScaleType = Enum.ScaleType.Slice;
  6624. Dummy.SliceScale = 0.12;
  6625. Dummy.SliceCenter = Rect.new(100, 100, 100, 100);
  6626. Dummy.Size = UDim2.new(0, 340, 0, 70);
  6627. Dummy.AnchorPoint = Vector2.new(0, 1);
  6628. Dummy.Position = UDim2.new(1, 0, 1, -30);
  6629. Dummy.BorderSizePixel = 0;
  6630. Dummy.BackgroundTransparency = 1;
  6631.  
  6632. local Underline = Dummy:Clone();
  6633. Underline.Name = 'Underline';
  6634. Underline.Parent = Dummy;
  6635. Underline.AnchorPoint = Vector2.new(0.5, 1);
  6636. Underline.Position = UDim2.new(0.5, 0, 1, 0);
  6637. Underline.Size = UDim2.new(0, 0, 0.06, 0);
  6638. Underline.Rotation = 180;
  6639. Underline.ImageRectSize = Vector2.new(200, 120);
  6640. end;
  6641.  
  6642. -- Main function
  6643. M_ToastAlert = function(Parent, Settings)
  6644. -- retrive settings
  6645. local TitleText = Settings.Title;
  6646. local TextText = Settings.Text or 'None';
  6647. local IconImage = Settings.Icon;
  6648. local Duration = Settings.Duration or Duration;
  6649. local TextColor = Settings.TextColor or TextColor;
  6650. local BackgroundColor = Settings.BackgroundColor or BackgroundColor;
  6651. -- get storage
  6652. local Online = Notifications[Parent] or {};
  6653. Notifications[Parent] = Online;
  6654. -- create alert
  6655. local Alert = Dummy:Clone();
  6656. local Underline = Alert.Underline;
  6657. local Last = Online[#Online] or Alert;
  6658. -- push online
  6659. Alert.Parent = Parent;
  6660. Online[#Online + 1] = Alert;
  6661. local StartID = #Online;
  6662. IDs[Alert] = StartID; -- store current id
  6663. -- appaerance
  6664. Alert.ImageColor3 = BackgroundColor;
  6665. Underline.ImageColor3 = TextColor;
  6666. local StartXOffset = DistanceBorder;
  6667. -- icon
  6668. local Icon;
  6669. if IconImage then
  6670. Icon = Instance.new('ImageLabel', Alert);
  6671. Icon.BackgroundTransparency = 1;
  6672. Icon.Image = IconImage;
  6673. Icon.Position = UDim2.new(0, DistanceBorder, 0.5, 0);
  6674. Icon.AnchorPoint = Vector2.new(0, 0.5);
  6675. local Size = Alert.Size.Y.Offset - Icon.Position.X.Offset*2;
  6676. Icon.Size = UDim2.new(0, Size, 0, Size);
  6677. -- set texts x position
  6678. StartXOffset = DistanceBorder * 2 + Size;
  6679. end;
  6680. -- title
  6681. local Title;
  6682. local XSize = Alert.Size.X.Offset - StartXOffset - DistanceBorder/2;
  6683. if TitleText then
  6684. Title = Instance.new('TextLabel', Alert);
  6685. Title.BackgroundTransparency = 1;
  6686. Title.TextXAlignment = Enum.TextXAlignment.Left;
  6687. Title.Text = TitleText;
  6688. Title.TextColor3 = TextColor;
  6689. Title.TextSize = Settings.TitleSize or 13;
  6690. Title.Size = UDim2.new(0, XSize, 0, Title.TextSize);
  6691. Title.Position = UDim2.new(0, StartXOffset, 0,
  6692. DistanceBorder-5);
  6693. end;
  6694. -- text
  6695. local Text = Instance.new('TextLabel', Alert);
  6696. Text.BackgroundTransparency = 1;
  6697. Text.TextXAlignment = Enum.TextXAlignment.Left;
  6698. Text.TextYAlignment = Enum.TextYAlignment.Top;
  6699. Text.TextWrapped = true;
  6700. Text.TextSize = Settings.TextSize or 10;
  6701. Text.TextColor3 = TextColor;
  6702. Text.AnchorPoint = Vector2.new(0, 0);
  6703. Text.Text = TextText;
  6704. if Title then
  6705. local y = -(Text.TextSize + DistanceBorder);
  6706. Text.Size = UDim2.new(0, XSize, 0, Alert.AbsoluteSize.Y + y - DistanceBorder);
  6707. Text.Position = UDim2.new(0, StartXOffset, 1, y);
  6708. else
  6709. -- set text center
  6710. Text.TextYAlignment = Enum.TextYAlignment.Center;
  6711. Text.Size = UDim2.new(0, XSize, 1, -(DistanceBorder*2));
  6712. Text.AnchorPoint = Vector2.new(0, 0.5);
  6713. Text.Position = UDim2.new(0, StartXOffset, 0.5, 0);
  6714. end;
  6715. -- set icon color
  6716. if Icon then
  6717. Icon.ImageColor3 = M_Utils.DarkerColor(TextColor, 0.2);
  6718. end;
  6719. -- sound
  6720. if Settings.Sound then
  6721. Settings.Sound:Play();
  6722. end;
  6723. --start position
  6724. Alert.Position = UDim2.new(1, Alert.Size.X.Offset + Distance, 1, 0);
  6725. -- alert appear
  6726. TweenService:Create(
  6727. Alert,
  6728. Slide,
  6729. {
  6730. Position = UDim2.new(1, -Alert.Size.X.Offset-Distance, 1, StartID * -(Alert.Size.Y.Offset + Distance))
  6731. }
  6732. ):Play();
  6733. -- Close transparency sync
  6734. Alert.Changed:Connect(function(Field)
  6735. if Field == 'ImageTransparency' then
  6736. Underline.ImageTransparency = Alert.ImageTransparency;
  6737. -- Texts
  6738. Text.TextTransparency = Alert.ImageTransparency;
  6739. if Title then
  6740. Title.TextTransparency = Alert.ImageTransparency;
  6741. end;
  6742. -- Images
  6743. if Icon then
  6744. Icon.ImageTransparency = Alert.ImageTransparency;
  6745. end;
  6746. end;
  6747. end);
  6748. -- start Underline
  6749. local Tween = TweenService:Create(
  6750. Underline,
  6751. TweenInfo.new(Duration, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
  6752. {
  6753. Size = UDim2.new(0.97, 0, Underline.Size.Y.Scale, 0)
  6754. }
  6755. );
  6756. Tween:Play();
  6757. spawn(function()
  6758. Tween.Completed:Wait();
  6759. -- Animations
  6760. TweenService:Create(
  6761. Underline,
  6762. Slide,
  6763. {
  6764. Size = UDim2.new(0, 0, Underline.Size.Y.Scale, 0)
  6765. }
  6766. ):Play();
  6767. TweenService:Create(
  6768. Alert,
  6769. Slide,
  6770. {
  6771. Size = UDim2.new(0, Alert.Size.X.Offset/1.03, 0, Alert.Size.Y.Offset/1.03),
  6772. ImageTransparency = 0.1
  6773. }
  6774. ):Play();
  6775. wait(.5);
  6776. local SlideOff = TweenService:Create(
  6777. Alert,
  6778. Slide,
  6779. {
  6780. Position = UDim2.new(1, Alert.Size.X.Offset + Distance, 1, Alert.Position.Y.Offset)
  6781. }
  6782. );
  6783. -- Animation
  6784. SlideOff:Play();
  6785. SlideOff.Completed:Wait();
  6786. -- Remove from online
  6787. local CurrentId = IDs[Alert];
  6788. IDs[Alert] = nil;
  6789. table.remove(Online, CurrentId);
  6790. -- update all id of the online alerts
  6791. for ID, Target in next, Online do -- from this id to last id
  6792. -- update IDs table
  6793. IDs[Target] = ID;
  6794. --SlideY
  6795. local Target = Online[ID];
  6796. -- Tween
  6797. TweenService:Create(
  6798. Target,
  6799. SlideY,
  6800. {
  6801. Position = UDim2.new(1, -Target.Size.X.Offset-Distance, 1,
  6802. ID * -(Target.Size.Y.Offset + Distance)
  6803. )
  6804. }
  6805. ):Play();
  6806. end;
  6807. -- Destroy
  6808. Alert:Destroy();
  6809. end);
  6810. end;
  6811. end;
  6812.  
  6813. -- Load Magnolia
  6814. local Magnolia = {
  6815. -- Magnolia Functions
  6816. new = M_New;
  6817. CreateClass = M_CreateClass;
  6818. GetInstance = M_GetInstance;
  6819. GetMeta = GetMeta;
  6820. NewCanvas = M_NewCanvas;
  6821. GetHiddenGui = get_hidden_gui;
  6822. ProtectGui = protect_gui;
  6823. Enum = M_Enums;
  6824. IsEnum = M_IsMagnoliaEnum;
  6825. IsMagnolia = M_IsMagnoliaInstance;
  6826. -- Librarys
  6827. ModernColors = M_ModernColors;
  6828. Math = M_Math;
  6829. Utils = M_Utils;
  6830. -- Alert Service
  6831. ToastAlert= M_ToastAlert;
  6832. };
  6833.  
  6834.  
  6835.  
  6836. return Magnolia;
  6837. end;
  6838. };
  6839. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.InviteBtn.handler
  6840. local function C_16()
  6841. local script = G2L["16"];
  6842. -- services
  6843. local tweenService = game:GetService("TweenService");
  6844. local httpService = game:GetService("HttpService")
  6845.  
  6846. -- vars
  6847. local invCode = "xJHCqm84cW";
  6848. local httpRequest = (syn and syn.request) or http_request or function() end;
  6849.  
  6850. -- utls
  6851. local utils = require(script.Parent.Parent.Parent.Parent.Parent.utils);
  6852.  
  6853. -- ui
  6854. local hitbox = script.Parent.Hitbox;
  6855. local icon = script.Parent.ImageLabel;
  6856.  
  6857. -- colors
  6858. local hoverColor = utils.modernColors.ElectricBlue;
  6859. local leaveColor = icon.ImageColor3;
  6860.  
  6861. -- tweens
  6862. local hoverTween = tweenService:Create(icon,
  6863. utils.tweenInfo.hover,
  6864. {
  6865. ImageColor3 = hoverColor
  6866. }
  6867. );
  6868. local leaveTween = tweenService:Create(icon,
  6869. utils.tweenInfo.hover,
  6870. {
  6871. ImageColor3 = leaveColor
  6872. }
  6873. );
  6874.  
  6875. hitbox.MouseEnter:Connect(function()
  6876. hoverTween:Play();
  6877. end)
  6878.  
  6879. hitbox.MouseLeave:Connect(function()
  6880. leaveTween:Play();
  6881. end)
  6882.  
  6883.  
  6884. hitbox.MouseButton1Click:Connect(function()
  6885.  
  6886.  
  6887. if not httpRequest then warn("Exploit not supported. No HTTP found.") return end
  6888.  
  6889. httpRequest({
  6890. Url = "http://127.0.0.1:6463/rpc?v=1",
  6891. Method = "POST",
  6892.  
  6893. Headers = {
  6894. ['Content-Type'] = 'application/json',
  6895. Origin = 'https://discord.com'
  6896. },
  6897.  
  6898. Body = httpService:JSONEncode({
  6899. cmd = 'INVITE_BROWSER',
  6900. nonce = httpService:GenerateGUID(false),
  6901. args = {code = invCode}
  6902. })
  6903. })
  6904. end);
  6905.  
  6906.  
  6907.  
  6908. end;
  6909. task.spawn(C_16);
  6910. -- StarterGui.backdoor.exe v8.Main.Sidebar.Bottom.CharCounter.handler
  6911. local function C_18()
  6912. local script = G2L["18"];
  6913. -- ui
  6914. local counter = script.Parent;
  6915. local textbox = script.Parent.Parent.Parent.Parent.BodyClipping.Executor.InnerBody.SourceBg.Source.ScrollingFrame.SourceBox;
  6916.  
  6917. -- vars
  6918. local format = "%d\n——\n%d";
  6919.  
  6920.  
  6921. -- connection update
  6922. textbox:GetPropertyChangedSignal("Text"):Connect(function()
  6923. local charAmnt = #textbox.Text;
  6924.  
  6925. local lineAmnt = 0
  6926.  
  6927. if charAmnt > 0 then
  6928. _, lineAmnt = textbox.Text:gsub("\n", "")
  6929. lineAmnt += 1
  6930. end
  6931.  
  6932. counter.Text = format:format(charAmnt, lineAmnt);
  6933. end)
  6934. end;
  6935. task.spawn(C_18);
  6936. -- StarterGui.backdoor.exe v8.Main.Sidebar.handler
  6937. local function C_21()
  6938. local script = G2L["21"];
  6939. -- services
  6940. local tweenService = game:GetService("TweenService");
  6941. local players = game:GetService("Players");
  6942.  
  6943. -- globals
  6944. local player = players.LocalPlayer;
  6945. local utils = require(script.Parent.Parent.Parent.utils);
  6946.  
  6947. -- ui
  6948. local btns = script.Parent.Top;
  6949. local bg = btns.bg;
  6950. local bodies = script.Parent.Parent.BodyClipping;
  6951.  
  6952. -- btn to body
  6953. local BTN_BODY = {
  6954. [btns.HomeBtn] = bodies.Executor,
  6955. [btns.MenuBtn] = bodies.Games,
  6956. [btns.SettingsBtn] = bodies.Settings
  6957. };
  6958.  
  6959.  
  6960. local cBtn; -- current btn
  6961. local iconSize = 20;
  6962. local selIconSize = 22;
  6963.  
  6964.  
  6965. local function onBtnClick(btn)
  6966. if cBtn then
  6967. -- animations old btn
  6968. tweenService:Create(cBtn,
  6969. utils.tweenInfo.expand,
  6970. {
  6971. Size = UDim2.new(0, iconSize, 0, iconSize),
  6972. ImageColor3 = Color3.fromRGB(37, 37, 37)
  6973. }
  6974. ):Play();
  6975. BTN_BODY[cBtn].Visible = false;
  6976. end;
  6977. -- ui update
  6978. BTN_BODY[btn].Visible = true;
  6979. -- animations new btn
  6980. tweenService:Create(btn,
  6981. utils.tweenInfo.expand,
  6982. {
  6983. Size = UDim2.new(0, selIconSize, 0, selIconSize),
  6984. ImageColor3 = Color3.fromRGB(181, 181, 181)
  6985. }
  6986. ):Play();
  6987. -- btn bg
  6988. tweenService:Create(bg,
  6989. utils.tweenInfo.move,
  6990. {
  6991. Position = btn.Position
  6992. }
  6993. ):Play();
  6994. -- set current btn
  6995. cBtn = btn;
  6996. end
  6997.  
  6998.  
  6999. for i, btn in next, btns:GetChildren() do
  7000. if btn:IsA("ImageLabel") then
  7001. btn.Hitbox.MouseButton1Click:Connect(function()
  7002. onBtnClick(btn);
  7003. end)
  7004. end
  7005. end
  7006.  
  7007. -- first click
  7008. onBtnClick(btns.HomeBtn);
  7009. end;
  7010. task.spawn(C_21);
  7011. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.Scripthub.TextBox.handler
  7012. local function C_3e()
  7013. local script = G2L["3e"];
  7014. -- services
  7015. local tweenService = game:GetService("TweenService");
  7016.  
  7017. -- utls
  7018. local utils = require(script.Parent.Parent.Parent.Parent.Parent.Parent.Parent.utils);
  7019.  
  7020. -- ui
  7021. local textbox = script.Parent.TextBox;
  7022. local scripts = script.Parent.Parent.Scripts;
  7023.  
  7024. -- colors
  7025. local hoverColor = utils.modernColors.ElectricBlue;
  7026. local leaveColor = textbox.PlaceholderColor3;
  7027. local borderColor = Color3.fromRGB(21, 21, 21); -- leave border color
  7028.  
  7029. -- tweens
  7030. local hoverTween = tweenService:Create(textbox,
  7031. utils.tweenInfo.hover,
  7032. {
  7033. TextColor3 = hoverColor,
  7034. PlaceholderColor3 = hoverColor
  7035. }
  7036. );
  7037. local leaveTween = tweenService:Create(textbox,
  7038. utils.tweenInfo.hover,
  7039. {
  7040. TextColor3 = leaveColor,
  7041. PlaceholderColor3 = leaveColor
  7042. }
  7043. );
  7044.  
  7045. local phoverTween = tweenService:Create(script.Parent,
  7046. utils.tweenInfo.hover,
  7047. {
  7048. BorderColor3 = hoverColor
  7049. }
  7050. );
  7051.  
  7052. local pleaveTween = tweenService:Create(script.Parent,
  7053. utils.tweenInfo.hover,
  7054. {
  7055. BorderColor3 = borderColor
  7056. }
  7057. );
  7058.  
  7059. textbox.Focused:Connect(function()
  7060. hoverTween:Play();
  7061. phoverTween:Play();
  7062. end)
  7063.  
  7064. textbox.FocusLost:Connect(function()
  7065. leaveTween:Play();
  7066. pleaveTween:Play();
  7067. end)
  7068.  
  7069. textbox:GetPropertyChangedSignal("TextColor3"):Connect(function()
  7070. script.Parent.ImageLabel.ImageColor3 = textbox.TextColor3;
  7071. end);
  7072.  
  7073.  
  7074. -- search system
  7075. textbox:GetPropertyChangedSignal("Text"):Connect(function()
  7076. local text = textbox.Text:lower(); -- key insensitive search
  7077. for i, v in next, scripts:GetChildren() do
  7078. if not v:IsA("ImageLabel") then
  7079. continue;
  7080. end
  7081. if v.Name:lower():find(text) then
  7082. v.Visible = true;
  7083. else
  7084. v.Visible = false;
  7085. end;
  7086. end
  7087. end)
  7088.  
  7089. end;
  7090. task.spawn(C_3e);
  7091. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ClearBtn.handler
  7092. local function C_45()
  7093. local script = G2L["45"];
  7094. local hitbox = script.Parent.Hitbox;
  7095. local editor = require(script.Parent.Parent.Parent.Parent.Parent.Parent.Parent.editor);
  7096.  
  7097.  
  7098. hitbox.MouseButton1Click:Connect(editor.clearCurrent);
  7099.  
  7100.  
  7101.  
  7102. end;
  7103. task.spawn(C_45);
  7104. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.SaveBtn.handler
  7105. local function C_4a()
  7106. local script = G2L["4a"];
  7107. local hitbox = script.Parent.Hitbox;
  7108. local savePopup = script.Parent.Parent.Parent.Parent.Parent.Parent.SavePopup;
  7109.  
  7110.  
  7111. hitbox.MouseButton1Click:Connect(function()
  7112. savePopup.Visible = true;
  7113. end)
  7114. end;
  7115. task.spawn(C_4a);
  7116. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.HideBtn.handler
  7117. local function C_4f()
  7118. local script = G2L["4f"];
  7119. local sourceFrame = script.Parent.Parent.Parent.SourceBg.Source;
  7120.  
  7121. script.Parent.Hitbox.MouseButton1Click:Connect(function()
  7122. sourceFrame.Visible = not sourceFrame.Visible;
  7123. end)
  7124. end;
  7125. task.spawn(C_4f);
  7126. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.ExecuteBtn.LocalScript
  7127. local function C_52()
  7128. local script = G2L["52"];
  7129. script.Parent.Activated:Connect(function()
  7130. print("k")
  7131. end)
  7132. end;
  7133. task.spawn(C_52);
  7134. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Executor.InnerBody.BottomButtons.handler
  7135. local function C_55()
  7136. local script = G2L["55"];
  7137. -- services
  7138. local tweenService = game:GetService("TweenService");
  7139.  
  7140. -- utls
  7141. local utils = require(script.Parent.Parent.Parent.Parent.Parent.Parent.utils);
  7142.  
  7143. -- ui
  7144. local btns = script.Parent;
  7145.  
  7146. -- colors
  7147. local hoverColor = utils.modernColors.ElectricBlue;
  7148. local leaveColor = Color3.fromRGB(170, 170, 170);
  7149.  
  7150. -- setup func
  7151. local function setup(btn)
  7152. local hitbox = btn.Hitbox;
  7153. hitbox.MouseEnter:Connect(function()
  7154. tweenService:Create(btn.ImageButton,
  7155. utils.tweenInfo.hover,
  7156. {
  7157. ImageColor3 = hoverColor
  7158. }
  7159. ):Play();
  7160. tweenService:Create(btn.TextLabel,
  7161. utils.tweenInfo.hover,
  7162. {
  7163. TextColor3 = hoverColor
  7164. }
  7165. ):Play();
  7166. end);
  7167. hitbox.MouseLeave:Connect(function()
  7168. tweenService:Create(btn.ImageButton,
  7169. utils.tweenInfo.hover,
  7170. {
  7171. ImageColor3 = leaveColor
  7172. }
  7173. ):Play();
  7174. tweenService:Create(btn.TextLabel,
  7175. utils.tweenInfo.hover,
  7176. {
  7177. TextColor3 = leaveColor
  7178. }
  7179. ):Play();
  7180. end)
  7181. end
  7182.  
  7183. -- loop btns and make tweeninfos
  7184. for i, btn in ipairs(script.Parent:GetChildren()) do
  7185. if btn:IsA("ImageButton") then
  7186. setup(btn);
  7187. end
  7188. end
  7189. end;
  7190. task.spawn(C_55);
  7191. -- StarterGui.backdoor.exe v8.Main.BodyClipping.Settings.handler
  7192. local function C_7f()
  7193. local script = G2L["7f"];
  7194. local canvas = script.Parent.Parent.Parent.Parent;
  7195. local configs = require(canvas.config);
  7196. local magnolia = require(canvas.magnolia);
  7197.  
  7198. local container = script.Parent.InnerBody.ScrollingFrame;
  7199. local dummy = container.dummy;
  7200.  
  7201. dummy.Parent = nil;
  7202.  
  7203. -- names
  7204. -- this table change configs index names to an Human text
  7205. local NAMES = {
  7206. codeColors = "Code Editor",
  7207. canDebug = "Can Debug"
  7208. }
  7209.  
  7210. local pickerConnection;
  7211.  
  7212. local colorPicker = magnolia.new("ColorPicker", canvas.Main);
  7213. colorPicker.AnchorPoint = Vector2.new(0.5, 0.5);
  7214. colorPicker.Position = UDim2.fromScale(0.5, 0.5);
  7215. colorPicker.ZIndex = 100;
  7216. colorPicker.Visible = false;
  7217. colorPicker:Open();
  7218. canvas.Main.UICorner:Clone().Parent = magnolia.GetInstance(colorPicker);
  7219.  
  7220. -- draw setting
  7221. local size = 0;
  7222. local function loadSetting(name, value, inTable)
  7223. local body;
  7224. local textName = NAMES[name] or name;
  7225. local data = inTable or configs.data.settings;
  7226.  
  7227. if typeof(value) == "Color3" then
  7228. body = dummy:Clone();
  7229. local preview = Instance.new("ImageButton", body);
  7230. preview.Size = UDim2.fromOffset(20, 20);
  7231. preview.AnchorPoint = Vector2.new(1, 0.5);
  7232. preview.Position = UDim2.fromScale(1, 0.5);
  7233. preview.BackgroundColor3 = value;
  7234. local corner = Instance.new("UICorner", preview);
  7235. corner.CornerRadius = UDim.new(1, 0);
  7236. -- update value
  7237. preview.MouseButton1Click:Connect(function()
  7238. colorPicker.Visible = not colorPicker.Visible;
  7239. if colorPicker.Visible then
  7240. colorPicker:SelectColor(preview.BackgroundColor3);
  7241. pickerConnection = colorPicker.ColorChanged:Connect(function()
  7242. data[name] = colorPicker.Color;
  7243. preview.BackgroundColor3 = colorPicker.Color;
  7244. configs.save();
  7245. end)
  7246. else
  7247. pickerConnection:Disconnect();
  7248. end
  7249. end)
  7250.  
  7251.  
  7252. elseif type(value) == "boolean" then
  7253. body = dummy:Clone();
  7254. local switch = magnolia.new("Switch", body);
  7255. switch.AnchorPoint = Vector2.new(1, 0.5);
  7256. switch.Position = UDim2.fromScale(1, 0.5);
  7257. switch:Toggle(value);
  7258. -- update value
  7259. switch.ValueChanged:Connect(function()
  7260. data[name] = switch.Value;
  7261. configs.save();
  7262. end)
  7263. elseif value == nil then -- title case
  7264. body = dummy:Clone();
  7265. body.Title.Font = Enum.Font.SourceSansBold;
  7266. end
  7267.  
  7268. if body then
  7269. size += 1;
  7270. body.Name = tostring(size);
  7271. body.Title.Text = textName;
  7272. body.Parent = container;
  7273. if inTable then
  7274. body.Title.Position = UDim2.new(0, 20,0.5, 0)
  7275. end
  7276. end
  7277. end
  7278.  
  7279. -- load settings
  7280. local loadSettings;
  7281. loadSettings = function(settings, inTable)
  7282. for name, s in next, settings do
  7283. if type(s) == "table" then
  7284. loadSetting(name) -- description
  7285. loadSettings(s, s);
  7286. else
  7287. loadSetting(name, s, inTable)
  7288. end
  7289. end
  7290. -- resize canvas
  7291. container.CanvasSize = UDim2.fromOffset(0,
  7292. size * dummy.AbsoluteSize.Y + size * container.UIListLayout.Padding.Offset
  7293. );
  7294. end;
  7295.  
  7296. -- auto close color picker
  7297. script.Parent:GetPropertyChangedSignal("Visible"):Connect(function()
  7298. if script.Parent.Visible == false then
  7299. colorPicker.Visible = false;
  7300. if pickerConnection then
  7301. pickerConnection:Disconnect();
  7302. end
  7303. end
  7304. end)
  7305.  
  7306.  
  7307. loadSettings(configs.data.settings);
  7308.  
  7309. end;
  7310. task.spawn(C_7f);
  7311. -- StarterGui.backdoor.exe v8.Main.drag
  7312. local function C_80()
  7313. local script = G2L["80"];
  7314. -- services
  7315. local runService = game:GetService("RunService");
  7316. local tweenService = game:GetService("TweenService");
  7317. local players = game:GetService("Players");
  7318. local inputService = game:GetService("UserInputService")
  7319.  
  7320. -- globals
  7321. local player = players.LocalPlayer;
  7322. local mouse = player:GetMouse();
  7323. local utils = require(script.Parent.Parent.utils);
  7324.  
  7325. -- ui
  7326. local main = script.Parent;
  7327. local hitbox = script.Parent.Topbar.Hitbox;
  7328.  
  7329.  
  7330. -- tweeninfo
  7331. local moveTweenInfo = utils.tweenInfo.move;
  7332.  
  7333. -- vars
  7334. local dragConnection;
  7335. local clickPos;
  7336.  
  7337. local isMobile = inputService.TouchEnabled;
  7338.  
  7339. -- core
  7340. local function drag()
  7341. local Position;
  7342. -- simple drag system
  7343. if isMobile then
  7344. Position = UDim2.fromOffset(mouse.X, mouse.Y);
  7345. else
  7346. local relPos = Vector2.new(mouse.X, mouse.Y)-main.AbsolutePosition;
  7347. local res = main.AbsolutePosition + (relPos - clickPos);
  7348. Position = UDim2.fromOffset(res.X, res.Y);
  7349. end
  7350. -- tween
  7351. tweenService:Create(
  7352. main,
  7353. moveTweenInfo,
  7354. {
  7355. Position = Position
  7356. }
  7357. ):Play();
  7358. end
  7359.  
  7360. -- disconnect and clear
  7361. local function disconnect()
  7362. if dragConnection then
  7363. dragConnection:Disconnect();
  7364. dragConnection = nil;
  7365. end
  7366. end
  7367. -- custom drag
  7368. utils.onDownUp(hitbox,
  7369. function() -- on button down
  7370. disconnect();
  7371. clickPos = Vector2.new(mouse.X, mouse.Y)-main.AbsolutePosition;
  7372.  
  7373. dragConnection = runService.RenderStepped:Connect(drag);
  7374. end,
  7375. function() -- on button up
  7376. disconnect();
  7377. end
  7378. );
  7379. end;
  7380. task.spawn(C_80);
  7381. -- StarterGui.backdoor.exe v8.Main.Resize.handler
  7382. local function C_83()
  7383. local script = G2L["83"];
  7384. -- require
  7385. local utils = require(script.Parent.Parent.Parent.utils);
  7386.  
  7387. -- service
  7388. local runService = game:GetService("RunService");
  7389.  
  7390. -- consts
  7391. local minSize = Vector2.new(503, 248);
  7392. local maxSize = Vector2.new(720, 432);
  7393.  
  7394. -- vars
  7395. local mouse = game:GetService("Players").LocalPlayer:GetMouse();
  7396. local dragConnection;
  7397. local oldIcon = mouse.Icon;
  7398.  
  7399. -- ui
  7400. local main = script.Parent.Parent;
  7401. local hitbox = script.Parent;
  7402.  
  7403. hitbox.MouseEnter:Connect(function()
  7404. if dragConnection then
  7405. return;
  7406. end
  7407. oldIcon = mouse.Icon;
  7408. mouse.Icon = "rbxassetid://10406654632";
  7409. end);
  7410.  
  7411. hitbox.MouseLeave:Connect(function()
  7412. mouse.Icon = oldIcon;
  7413. end);
  7414.  
  7415.  
  7416. local function disconnect()
  7417. if not dragConnection then
  7418. return;
  7419. end
  7420. dragConnection:Disconnect();
  7421. dragConnection = nil;
  7422. mouse.Icon = oldIcon;
  7423. end;
  7424.  
  7425. local function drag()
  7426. mouse.Icon = "rbxassetid://10406654632";
  7427. local pos = Vector2.new(mouse.X, mouse.Y);
  7428. local delta = pos - main.AbsolutePosition;
  7429. local size = UDim2.new(
  7430. 0, math.clamp(delta.X, minSize.X, maxSize.X),
  7431. 0, math.clamp(delta.Y, minSize.Y, maxSize.Y)
  7432. );
  7433. main.Size = size;
  7434. end
  7435.  
  7436. utils.onDownUp(hitbox,
  7437. function() -- on button down
  7438. disconnect();
  7439. dragConnection = runService.RenderStepped:Connect(drag);
  7440. end,
  7441. function() -- on button up
  7442. disconnect();
  7443. end
  7444. );
  7445. end;
  7446. task.spawn(C_83);
  7447. -- StarterGui.backdoor.exe v8.Main.SavePopup.handler
  7448. local function C_86()
  7449. local script = G2L["86"];
  7450.  
  7451. -- ui
  7452. local canvas = script.Parent.Parent.Parent;
  7453. local hitbox = script.Parent.ImageLabel.Hitbox;
  7454.  
  7455. -- imports
  7456. local config = require(canvas.config);
  7457. local magnolia = require(canvas.magnolia);
  7458. local scriptshub = require(canvas.scripthub);
  7459. local editor = require(canvas.editor);
  7460.  
  7461. -- close system
  7462. hitbox.MouseButton1Click:Connect(function()
  7463. script.Parent.Visible = false;
  7464. end)
  7465.  
  7466. -- setup ui
  7467. local textbox = magnolia.new("TextBox", script.Parent);
  7468. local textboxIns = magnolia.GetMeta(textbox).__TextBox;
  7469. textbox.PlaceholderText = "Script Name";
  7470. textbox.Position = UDim2.fromScale(0.5, 0.5);
  7471. textbox.AnchorPoint = Vector2.new(0.5, 0.5);
  7472. textbox.Size = UDim2.new(1, -20, 0, 24);
  7473.  
  7474. local saveBtn = magnolia.new("ButtonIcon", script.Parent);
  7475. saveBtn.Position = UDim2.fromScale(0.5, 0.8);
  7476. saveBtn.AnchorPoint = Vector2.new(0.5, 0.5);
  7477. saveBtn.Size = UDim2.fromOffset(40, 40);
  7478. saveBtn.IconSize = 20;
  7479. saveBtn.Image = "rbxassetid://4732495519";
  7480.  
  7481. -- save system
  7482. saveBtn.Clicked:Connect(function()
  7483. local code = editor.getCode();
  7484. local name = textbox.Text;
  7485. -- checks
  7486. if #name == 0 then
  7487. return;
  7488. end
  7489. -- add to scripthub if not present
  7490. scriptshub.addScript(name, code, true);
  7491. -- save to config
  7492. config.data.scripts[name] = code;
  7493. config.save();
  7494. script.Parent.Visible = false;
  7495. end)
  7496.  
  7497. -- auto focus
  7498. script.Parent:GetPropertyChangedSignal("Visible"):Connect(function()
  7499. if script.Parent.Visible then
  7500. textboxIns:CaptureFocus();
  7501. end
  7502. end)
  7503. end;
  7504. task.spawn(C_86);
  7505. -- StarterGui.backdoor.exe v8.intro
  7506. local function C_8e()
  7507. local script = G2L["8e"];
  7508.  
  7509. -- service
  7510. local tweenService = game:GetService("TweenService");
  7511. local utils = require(script.Parent.utils);
  7512.  
  7513. -- vars
  7514. local main = script.Parent.Main;
  7515. local bodies = main.BodyClipping;
  7516. local resizeBtn = main.Resize;
  7517. local sidebar = main.Sidebar;
  7518. local topbar = main.Topbar;
  7519. local uiCorner = main.UICorner;
  7520.  
  7521. -- defaults
  7522. local defaultSize = main.Size;
  7523. local defaultRadius = uiCorner.CornerRadius;
  7524.  
  7525. -- icon setup
  7526. local icon = Instance.new("ImageLabel", main);
  7527. icon.BackgroundTransparency = 1;
  7528. icon.Image = "rbxassetid://10352444178";
  7529. icon.Size = UDim2.new(0, 80, 0, 80);
  7530. icon.AnchorPoint = Vector2.new(0.5, 0.5);
  7531. icon.Position = UDim2.new(0.5, 0, 0.5, 0);
  7532.  
  7533. -- start point setup
  7534. bodies.Visible = false;
  7535. resizeBtn.Visible = false;
  7536. sidebar.Visible = false;
  7537. topbar.Visible = false;
  7538. uiCorner.CornerRadius = UDim.new(1, 0); -- circle
  7539. main.Size = UDim2.new(0, 100, 0, 100);
  7540. main.AnchorPoint = Vector2.new(0.5, 0.5);
  7541. main.Position = UDim2.new(0.5, 0, 1, main.AbsoluteSize.Y);
  7542.  
  7543. uiCorner:Clone().Parent = icon;
  7544.  
  7545. -- make sure home is visible (workflow)
  7546. for i, v in next, bodies:GetChildren() do
  7547. v.Visible = false;
  7548. end
  7549. bodies.Executor.Visible = true;
  7550.  
  7551. -- studio game load
  7552. if game:GetService("RunService"):IsStudio() then
  7553. task.wait(1);
  7554. end
  7555.  
  7556. -- tween ball on center
  7557. local moveTween = tweenService:Create(
  7558. main,
  7559. utils.tweenInfo.slowBackMove,
  7560. {
  7561. Position = UDim2.new(0.5, 0, 0.5, 0);
  7562. }
  7563. );
  7564. -- icon animation
  7565. tweenService:Create(
  7566. icon,
  7567. utils.tweenInfo.slowBackMove,
  7568. {
  7569. Rotation = 360*2;
  7570. }
  7571. ):Play();
  7572. moveTween:Play();
  7573. moveTween.Completed:Wait();
  7574.  
  7575.  
  7576. -- expand main
  7577. local expandTween = tweenService:Create(
  7578. main,
  7579. utils.tweenInfo.expand,
  7580. {
  7581. Size = defaultSize;
  7582. }
  7583. );
  7584. expandTween:Play();
  7585. tweenService:Create(
  7586. uiCorner,
  7587. utils.tweenInfo.expand,
  7588. {
  7589. CornerRadius = defaultRadius;
  7590. }
  7591. ):Play();
  7592. -- disappear icon animation
  7593. tweenService:Create(
  7594. icon,
  7595. utils.tweenInfo.expand,
  7596. {
  7597. ImageTransparency = 1;
  7598. }
  7599. ):Play();
  7600. expandTween.Completed:Wait();
  7601.  
  7602. icon:Destroy();
  7603. main.AnchorPoint = Vector2.new(0, 0);
  7604. main.Position = UDim2.new(0.5, -defaultSize.X.Offset/2, 0.5, -defaultSize.Y.Offset/2);
  7605. bodies.Visible = true;
  7606. resizeBtn.Visible = true;
  7607. sidebar.Visible = true;
  7608. topbar.Visible = true;
  7609. end;
  7610. task.spawn(C_8e);
  7611. -- StarterGui.backdoor.exe v8.secure
  7612. local function C_95()
  7613. local script = G2L["95"];
  7614. local magnolia = require(script.Parent.magnolia);
  7615.  
  7616. local canvas = script.Parent;
  7617.  
  7618. magnolia.ProtectGui(canvas);
  7619. canvas.Name = magnolia.Utils.RandomString(math.random(5, 8));
  7620. canvas.Parent = magnolia.GetHiddenGui();
  7621. end;
  7622. task.spawn(C_95);
  7623.  
  7624. return G2L["1"], require;
Add Comment
Please, Sign In to add comment