memberhero

Fixed Dex 3.0

Dec 29th, 2020 (edited)
680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if game:GetService("RunService"):IsClient()then error("Please run as a server script. Use h/ instead of hl/.")end;print("FE Compatibility: by WaverlyCole");InternalData = {}
  2. do
  3. script.Parent = owner.Character
  4. local Event = Instance.new("RemoteEvent");Event.Name = "UserInput"
  5. local function NewFakeEvent()
  6. local Bind = Instance.new("BindableEvent")
  7. local Fake;Fake = {Connections = {},
  8. fakeEvent=true;
  9. Connect=function(self,Func)
  10. Bind.Event:connect(Func)
  11. self.Connections[Bind] = true
  12. return setmetatable({Connected = true},{
  13. __index = function (self,Index)
  14. if Index:lower() == "disconnect" then
  15. return function() Fake.Connections[Bind] = false;self.Connected = false end
  16. end
  17. return Fake[Index]
  18. end;
  19. __tostring = function() return "Connection" end;
  20. })
  21. end}
  22. Fake.connect = Fake.Connect;return Fake;
  23. end
  24. local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()}
  25. local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()}
  26. local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
  27. self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
  28. end};ContextActionService.UnBindAction = ContextActionService.BindAction
  29. local function TriggerEvent(self,Event,...)
  30. local Trigger = Mouse[Event]
  31. if Trigger and Trigger.fakeEvent and Trigger.Connections then
  32. for Connection,Active in pairs(Trigger.Connections) do if Active then Connection:Fire(...) end end
  33. end
  34. end
  35. Mouse.TrigEvent = TriggerEvent;UserInputService.TrigEvent = TriggerEvent
  36. Event.OnServerEvent:Connect(function(FiredBy,Input)
  37. if FiredBy.Name ~= owner.Name then return end
  38. if Input.MouseEvent then
  39. Mouse.Target = Input.Target;Mouse.Hit = Input.Hit
  40. else
  41. local Begin = Input.UserInputState == Enum.UserInputState.Begin
  42. if Input.UserInputType == Enum.UserInputType.MouseButton1 then return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up") end
  43. for _,Action in pairs(ContextActionService.Actions) do
  44. for _,Key in pairs(Action.Keys) do if Key==Input.KeyCode then Action.Function(Action.Name,Input.UserInputState,Input) end end
  45. end
  46. Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower())
  47. UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false)
  48. end
  49. end)
  50. InternalData["Mouse"] = Mouse;InternalData["ContextActionService"] = ContextActionService;InternalData["UserInputService"] = UserInputService
  51. Event.Parent = NLS([[
  52. local Player = owner;local Event = script:WaitForChild("UserInput");local UserInputService = game:GetService("UserInputService");local Mouse = Player:GetMouse()
  53. local Input = function(Input,gameProcessedEvent)
  54. if gameProcessedEvent then return end
  55. Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
  56. end
  57. UserInputService.InputBegan:Connect(Input);UserInputService.InputEnded:Connect(Input)
  58. local Hit,Target
  59. while wait(1/30) do
  60. if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
  61. Hit,Target = Mouse.Hit,Mouse.Target;Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
  62. end
  63. end
  64. ]],owner.Character)
  65. end
  66. RealGame = game;game = setmetatable({},{
  67. __index = function (self,Index)
  68. local Sandbox = function (Thing)
  69. if Thing:IsA("Player") then
  70. local RealPlayer = Thing
  71. return setmetatable({},{
  72. __index = function (self,Index)
  73. local Type = type(RealPlayer[Index])
  74. if Type == "function" then
  75. if Index:lower() == "getmouse" or Index:lower() == "mouse" then
  76. return function (self)return InternalData["Mouse"] end
  77. end
  78. return function (self,...)return RealPlayer[Index](RealPlayer,...) end
  79. end
  80. return RealPlayer[Index]
  81. end;
  82. __tostring = function(self) return RealPlayer.Name end
  83. })
  84. end
  85. end
  86. if RealGame[Index] then
  87. local Type = type(RealGame[Index])
  88. if Type == "function" then
  89. if Index:lower() == "getservice" or Index:lower() == "service" then
  90. return function (self,Service)
  91. local FakeServices = {
  92. ["players"] = function()
  93. return setmetatable({},{
  94. __index = function (self2,Index2)
  95. local RealService = RealGame:GetService(Service)
  96. local Type2 = type(Index2)
  97. if Type2 == "function" then
  98. return function (self,...) return RealService[Index2](RealService,...)end
  99. else
  100. if Index2:lower() == "localplayer" then return Sandbox(owner) end
  101. return RealService[Index2]
  102. end
  103. end;
  104. __tostring = function(self) return RealGame:GetService(Service).Name end
  105. })
  106. end;
  107. ["contextactionservice"] = function() return InternalData["ContextActionService"] end;
  108. ["userinputservice"] = function() return InternalData["UserInputService"] end;
  109. ["runservice"] = function()
  110. return setmetatable({},{
  111. __index = function(self2,Index2)
  112. local RealService = RealGame:GetService(Service)
  113. local Type2 = type(Index2)
  114. if Type2 == "function" then
  115. return function (self,...) return RealService[Index2](RealService,...) end
  116. else
  117. local RunServices = {
  118. ["bindtorenderstep"] = function() return function (self,Name,Priority,Function) return RealGame:GetService("RunService").Stepped:Connect(Function) end end;
  119. ["renderstepped"] = function() return RealService["Stepped"] end
  120. }
  121. if RunServices[Index2:lower()] then return RunServices[Index2:lower()]() end
  122. return RealService[Index2]
  123. end
  124. end
  125. })
  126. end
  127. }
  128. if FakeServices[Service:lower()] then return FakeServices[Service:lower()]() end
  129. return RealGame:GetService(Service)
  130. end
  131. end
  132. return function (self,...) return RealGame[Index](RealGame,...) end
  133. else
  134. if game:GetService(Index) then return game:GetService(Index) end
  135. return RealGame[Index]
  136. end
  137. end
  138. return nil
  139. end
  140. });Game = game;owner = game:GetService("Players").LocalPlayer;script = Instance.new("Script");print("Complete! Running...")
  141. function sandbox(var,func)
  142. local env = getfenv(func)
  143. local newenv = setmetatable({},{
  144. __index = function(self,k)
  145. if k=="script" then
  146. return var
  147. else
  148. return env[k]
  149. end
  150. end,
  151. })
  152. setfenv(func,newenv)
  153. return func
  154. end
  155. cors = {}
  156. mas = Instance.new("Model",game:GetService("Lighting"))
  157. ScreenGui0 = Instance.new("ScreenGui")
  158. Frame1 = Instance.new("Frame")
  159. LocalScript2 = Instance.new("LocalScript")
  160. ModuleScript3 = Instance.new("ModuleScript")
  161. Frame4 = Instance.new("Frame")
  162. TextLabel5 = Instance.new("TextLabel")
  163. TextBox6 = Instance.new("TextBox")
  164. BindableFunction7 = Instance.new("BindableFunction")
  165. BindableFunction8 = Instance.new("BindableFunction")
  166. BindableEvent9 = Instance.new("BindableEvent")
  167. Frame10 = Instance.new("Frame")
  168. BindableEvent11 = Instance.new("BindableEvent")
  169. BindableFunction12 = Instance.new("BindableFunction")
  170. BindableFunction13 = Instance.new("BindableFunction")
  171. BindableFunction14 = Instance.new("BindableFunction")
  172. BindableFunction15 = Instance.new("BindableFunction")
  173. LocalScript16 = Instance.new("LocalScript")
  174. BindableFunction17 = Instance.new("BindableFunction")
  175. LocalScript18 = Instance.new("LocalScript")
  176. Frame19 = Instance.new("Frame")
  177. TextButton20 = Instance.new("TextButton")
  178. TextLabel21 = Instance.new("TextLabel")
  179. TextLabel22 = Instance.new("TextLabel")
  180. ImageLabel23 = Instance.new("ImageLabel")
  181. Frame24 = Instance.new("Frame")
  182. Frame25 = Instance.new("Frame")
  183. Frame26 = Instance.new("Frame")
  184. TextButton27 = Instance.new("TextButton")
  185. ImageLabel28 = Instance.new("ImageLabel")
  186. TextButton29 = Instance.new("TextButton")
  187. ImageLabel30 = Instance.new("ImageLabel")
  188. TextButton31 = Instance.new("TextButton")
  189. ImageLabel32 = Instance.new("ImageLabel")
  190. TextButton33 = Instance.new("TextButton")
  191. ImageLabel34 = Instance.new("ImageLabel")
  192. TextButton35 = Instance.new("TextButton")
  193. ImageLabel36 = Instance.new("ImageLabel")
  194. Frame37 = Instance.new("Frame")
  195. Frame38 = Instance.new("Frame")
  196. TextLabel39 = Instance.new("TextLabel")
  197. BindableFunction40 = Instance.new("BindableFunction")
  198. Frame41 = Instance.new("Frame")
  199. TextLabel42 = Instance.new("TextLabel")
  200. TextLabel43 = Instance.new("TextLabel")
  201. TextButton44 = Instance.new("TextButton")
  202. TextLabel45 = Instance.new("TextLabel")
  203. TextLabel46 = Instance.new("TextLabel")
  204. Frame47 = Instance.new("Frame")
  205. Frame48 = Instance.new("Frame")
  206. TextLabel49 = Instance.new("TextLabel")
  207. Frame50 = Instance.new("Frame")
  208. TextButton51 = Instance.new("TextButton")
  209. TextLabel52 = Instance.new("TextLabel")
  210. TextButton53 = Instance.new("TextButton")
  211. TextBox54 = Instance.new("TextBox")
  212. TextButton55 = Instance.new("TextButton")
  213. TextLabel56 = Instance.new("TextLabel")
  214. TextLabel57 = Instance.new("TextLabel")
  215. Frame58 = Instance.new("Frame")
  216. TextLabel59 = Instance.new("TextLabel")
  217. Frame60 = Instance.new("Frame")
  218. TextButton61 = Instance.new("TextButton")
  219. TextLabel62 = Instance.new("TextLabel")
  220. TextButton63 = Instance.new("TextButton")
  221. Frame64 = Instance.new("Frame")
  222. TextLabel65 = Instance.new("TextLabel")
  223. Frame66 = Instance.new("Frame")
  224. TextLabel67 = Instance.new("TextLabel")
  225. TextButton68 = Instance.new("TextButton")
  226. Frame69 = Instance.new("Frame")
  227. TextLabel70 = Instance.new("TextLabel")
  228. Frame71 = Instance.new("Frame")
  229. TextLabel72 = Instance.new("TextLabel")
  230. ScrollingFrame73 = Instance.new("ScrollingFrame")
  231. TextButton74 = Instance.new("TextButton")
  232. TextLabel75 = Instance.new("TextLabel")
  233. TextLabel76 = Instance.new("TextLabel")
  234. TextButton77 = Instance.new("TextButton")
  235. TextButton78 = Instance.new("TextButton")
  236. Frame79 = Instance.new("Frame")
  237. TextButton80 = Instance.new("TextButton")
  238. TextBox81 = Instance.new("TextBox")
  239. TextButton82 = Instance.new("TextButton")
  240. TextButton83 = Instance.new("TextButton")
  241. Frame84 = Instance.new("Frame")
  242. Frame85 = Instance.new("Frame")
  243. TextButton86 = Instance.new("TextButton")
  244. ScrollingFrame87 = Instance.new("ScrollingFrame")
  245. Frame88 = Instance.new("Frame")
  246. TextLabel89 = Instance.new("TextLabel")
  247. TextLabel90 = Instance.new("TextLabel")
  248. TextLabel91 = Instance.new("TextLabel")
  249. Frame92 = Instance.new("Frame")
  250. TextLabel93 = Instance.new("TextLabel")
  251. Frame94 = Instance.new("Frame")
  252. Frame95 = Instance.new("Frame")
  253. Frame96 = Instance.new("Frame")
  254. ImageButton97 = Instance.new("ImageButton")
  255. Frame98 = Instance.new("Frame")
  256. Frame99 = Instance.new("Frame")
  257. Frame100 = Instance.new("Frame")
  258. Frame101 = Instance.new("Frame")
  259. Frame102 = Instance.new("Frame")
  260. ImageButton103 = Instance.new("ImageButton")
  261. Frame104 = Instance.new("Frame")
  262. Frame105 = Instance.new("Frame")
  263. Frame106 = Instance.new("Frame")
  264. Frame107 = Instance.new("Frame")
  265. Frame108 = Instance.new("Frame")
  266. TextButton109 = Instance.new("TextButton")
  267. Frame110 = Instance.new("Frame")
  268. Frame111 = Instance.new("Frame")
  269. TextButton112 = Instance.new("TextButton")
  270. TextButton113 = Instance.new("TextButton")
  271. BindableEvent114 = Instance.new("BindableEvent")
  272. LocalScript115 = Instance.new("LocalScript")
  273. TextButton116 = Instance.new("TextButton")
  274. Frame117 = Instance.new("Frame")
  275. Frame118 = Instance.new("Frame")
  276. ImageLabel119 = Instance.new("ImageLabel")
  277. Frame120 = Instance.new("Frame")
  278. ImageLabel121 = Instance.new("ImageLabel")
  279. TextLabel122 = Instance.new("TextLabel")
  280. TextLabel123 = Instance.new("TextLabel")
  281. TextLabel124 = Instance.new("TextLabel")
  282. Frame125 = Instance.new("Frame")
  283. Frame126 = Instance.new("Frame")
  284. TextLabel127 = Instance.new("TextLabel")
  285. Frame128 = Instance.new("Frame")
  286. Frame129 = Instance.new("Frame")
  287. TextLabel130 = Instance.new("TextLabel")
  288. TextLabel131 = Instance.new("TextLabel")
  289. TextButton132 = Instance.new("TextButton")
  290. TextLabel133 = Instance.new("TextLabel")
  291. TextLabel134 = Instance.new("TextLabel")
  292. Frame135 = Instance.new("Frame")
  293. TextLabel136 = Instance.new("TextLabel")
  294. TextLabel137 = Instance.new("TextLabel")
  295. TextButton138 = Instance.new("TextButton")
  296. TextLabel139 = Instance.new("TextLabel")
  297. TextLabel140 = Instance.new("TextLabel")
  298. Frame141 = Instance.new("Frame")
  299. TextLabel142 = Instance.new("TextLabel")
  300. TextLabel143 = Instance.new("TextLabel")
  301. TextButton144 = Instance.new("TextButton")
  302. TextLabel145 = Instance.new("TextLabel")
  303. TextLabel146 = Instance.new("TextLabel")
  304. Frame147 = Instance.new("Frame")
  305. TextLabel148 = Instance.new("TextLabel")
  306. TextLabel149 = Instance.new("TextLabel")
  307. TextButton150 = Instance.new("TextButton")
  308. TextLabel151 = Instance.new("TextLabel")
  309. TextLabel152 = Instance.new("TextLabel")
  310. TextLabel153 = Instance.new("TextLabel")
  311. Frame154 = Instance.new("Frame")
  312. Frame155 = Instance.new("Frame")
  313. TextLabel156 = Instance.new("TextLabel")
  314. TextButton157 = Instance.new("TextButton")
  315. TextBox158 = Instance.new("TextBox")
  316. Frame159 = Instance.new("Frame")
  317. TextButton160 = Instance.new("TextButton")
  318. TextLabel161 = Instance.new("TextLabel")
  319. TextLabel162 = Instance.new("TextLabel")
  320. Frame163 = Instance.new("Frame")
  321. Frame164 = Instance.new("Frame")
  322. TextLabel165 = Instance.new("TextLabel")
  323. BindableFunction166 = Instance.new("BindableFunction")
  324. TextLabel167 = Instance.new("TextLabel")
  325. Frame168 = Instance.new("Frame")
  326. ImageLabel169 = Instance.new("ImageLabel")
  327. TextLabel170 = Instance.new("TextLabel")
  328. TextLabel171 = Instance.new("TextLabel")
  329. TextLabel172 = Instance.new("TextLabel")
  330. ImageButton173 = Instance.new("ImageButton")
  331. TextLabel174 = Instance.new("TextLabel")
  332. ScreenGui0.Name = "Dex"
  333. ScreenGui0.Parent = mas
  334. Frame1.Name = "PropertiesFrame"
  335. Frame1.Parent = ScreenGui0
  336. Frame1.Position = UDim2.new(1, 0, 0.5, 36)
  337. Frame1.Transparency = 0.10000000149012
  338. Frame1.Size = UDim2.new(0, 300, 0.5, -36)
  339. Frame1.Active = true
  340. Frame1.BackgroundColor = BrickColor.new("Institutional white")
  341. Frame1.BackgroundColor3 = Color3.new(1, 1, 1)
  342. Frame1.BackgroundTransparency = 0.10000000149012
  343. Frame1.BorderColor = BrickColor.new("Sand violet metallic")
  344. Frame1.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  345. Frame1.BorderSizePixel = 0
  346. LocalScript2.Name = "Properties"
  347. LocalScript2.Parent = Frame1
  348. table.insert(cors,sandbox(LocalScript2,function()
  349. --[[
  350.  
  351. Change log:
  352.  
  353. 09/18
  354. Fixed checkbox mouseover sprite
  355. Encapsulated checkbox creation into separate method
  356. Fixed another checkbox issue
  357.  
  358. 09/15
  359. Invalid input is ignored instead of setting to default of that data type
  360. Consolidated control methods and simplified them
  361. All input goes through ToValue method
  362. Fixed position of BrickColor palette
  363. Made DropDown appear above row if it would otherwise exceed the page height
  364. Cleaned up stylesheets
  365.  
  366. 09/14
  367. Made properties window scroll when mouse wheel scrolled
  368. Object/Instance and Color3 data types handled properly
  369. Multiple BrickColor controls interfering with each other fixed
  370. Added support for Content data type
  371.  
  372. --]]
  373.  
  374. wait(0.2)
  375.  
  376. local Gui = script.Parent.Parent
  377. local PropertiesFrame = Gui:WaitForChild("PropertiesFrame")
  378. local ExplorerFrame = Gui:WaitForChild("ExplorerPanel")
  379. print = ExplorerFrame:WaitForChild("GetPrint"):Invoke()
  380.  
  381.  
  382. -- Services
  383. local Teams = game:GetService("Teams")
  384. local Workspace = game:GetService("Workspace")
  385. local Debris = game:GetService("Debris")
  386. local ContentProvider = game:GetService("ContentProvider")
  387. local Players = game:GetService("Players")
  388. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  389.  
  390. -- Functions
  391. function httpGet(url)
  392. return game:HttpGet(url,true)
  393. end
  394.  
  395. -- RbxApi Stuff
  396.  
  397. local apiUrl = "http://anaminus.github.io/rbx/json/api/latest.json"
  398. local maxChunkSize = 100 * 1000
  399. local ApiJson
  400. if script:FindFirstChild("RawApiJson") then
  401. ApiJson = script.RawApiJson
  402. else
  403. ApiJson = ""
  404. end
  405.  
  406. function getLocalApiJson()
  407. print(ApiJson)
  408. local usels = false
  409. local s = pcall(function() if ApiJson.Source ~= "" then usels = true end end)
  410. if usels then
  411. return loadstring(ApiJson.Source)()()
  412. else
  413. return require(ApiJson)()
  414. end
  415. end
  416.  
  417. function getCurrentApiJson()
  418. local jsonStr = nil
  419. if readfile and getelysianpath then
  420. if readfile(getelysianpath().."Xpl0rerApi.txt") then
  421. print("Api found in folder!")
  422. jsonStr = readfile(getelysianpath().."Xpl0rerApi.txt")
  423. return jsonStr
  424. end
  425. end
  426. local success
  427. if not SetGlobal then
  428. success = pcall(function()
  429. jsonStr = httpGet(apiUrl)
  430. print("Fetched json successfully")
  431. end)
  432. end
  433. if success then
  434. print("Returning json")
  435. --print(jsonStr:sub(1,500))
  436. return jsonStr
  437. else
  438. print("Error fetching json: " .. tostring(err))
  439. print("Falling back to local copy")
  440. return getLocalApiJson()
  441. end
  442. end
  443.  
  444. function splitStringIntoChunks(jsonStr)
  445. -- Splits up a string into a table with a given size
  446. local t = {}
  447. for i = 1, math.ceil(string.len(jsonStr)/maxChunkSize) do
  448. local str = jsonStr:sub((i-1)*maxChunkSize+1, i*maxChunkSize)
  449. table.insert(t, str)
  450. end
  451. return t
  452. end
  453.  
  454. local jsonToParse = getCurrentApiJson()
  455. local apiChunks = splitStringIntoChunks(jsonToParse)
  456.  
  457. function getRbxApi()
  458. --[[
  459. Api.Classes
  460. Api.Enums
  461. Api.GetProperties(className)
  462. Api.IsEnum(valueType)
  463. --]]
  464.  
  465. -- Services
  466. local HttpService = game:GetService("HttpService")
  467. local ServerStorage = game:GetService("ServerStorage")
  468. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  469.  
  470. -- Remotes
  471. --local Remotes = ReplicatedStorage:WaitForChild("OnlineStudio"):WaitForChild("Remotes")
  472. --local GetApiJsonFunction = Remotes:WaitForChild("GetApiJson")
  473.  
  474. -- Functions
  475. local JsonDecode = function(s) return HttpService:JSONDecode(s) end
  476.  
  477. local function GetApiRemoteFunction(index)
  478. if (apiChunks[index]) then
  479. return apiChunks[index], #apiChunks
  480. else
  481. print("Bad index for GetApiJson")
  482. return nil
  483. end
  484. end
  485.  
  486. local function getApiJson()
  487. local apiTable = {}
  488. local firstPage, pageCount = GetApiRemoteFunction(1)
  489. table.insert(apiTable, firstPage)
  490. for i = 2, pageCount do
  491. --print("Fetching API page # " .. tostring(i))
  492. local result = GetApiRemoteFunction(i)
  493. table.insert(apiTable, result)
  494. end
  495. return table.concat(apiTable)
  496. end
  497.  
  498. local json = getApiJson()
  499. local apiDump = JsonDecode(json)
  500.  
  501. local Classes = {}
  502. local Enums = {}
  503.  
  504. local function sortAlphabetic(t, property)
  505. table.sort(t,
  506. function(x,y) return x[property] < y[property]
  507. end)
  508. end
  509.  
  510. local function isEnum(name)
  511. return Enums[name] ~= nil
  512. end
  513.  
  514. local function getProperties(className)
  515. local class = Classes[className]
  516. local properties = {}
  517.  
  518. if not class then return properties end
  519.  
  520. while class do
  521. for _,property in pairs(class.Properties) do
  522. table.insert(properties, property)
  523. end
  524. class = Classes[class.Superclass]
  525. end
  526.  
  527. sortAlphabetic(properties, "Name")
  528.  
  529. return properties
  530. end
  531.  
  532. for _,item in pairs(apiDump) do
  533. local itemType = item.type
  534. -- Classes --
  535. if (itemType == 'Class') then
  536. Classes[item.Name] = item
  537. item.Properties = {}
  538. item.Functions = {}
  539. item.YieldFunctions = {}
  540. item.Events = {}
  541. item.Callbacks = {}
  542. -- Members --
  543. elseif (itemType == 'Property') then
  544. table.insert(Classes[item.Class].Properties, item)
  545. elseif (itemType == 'Function') then
  546. table.insert(Classes[item.Class].Functions, item)
  547. elseif (itemType == 'YieldFunction') then
  548. table.insert(Classes[item.Class].YieldFunctions, item)
  549. elseif (itemType == 'Event') then
  550. table.insert(Classes[item.Class].Events, item)
  551. elseif (itemType == 'Callback') then
  552. table.insert(Classes[item.Class].Callbacks, item)
  553. -- Enums --
  554. elseif (itemType == 'Enum') then
  555. Enums[item.Name] = item
  556. item.EnumItems = {}
  557. elseif (itemType == 'EnumItem') then
  558. Enums[item.Enum].EnumItems[item.Name] = item
  559. end
  560. end
  561.  
  562. return {
  563. Classes = Classes;
  564. Enums = Enums;
  565. GetProperties = getProperties;
  566. IsEnum = isEnum;
  567. }
  568. end
  569.  
  570. -- Modules
  571. local Permissions = {CanEdit = true}
  572. local RbxApi = getRbxApi()
  573.  
  574. --[[
  575. RbxApi.Classes
  576. RbxApi.Enums
  577. RbxApi.GetProperties(className)
  578. RbxApi.IsEnum(valueType)
  579. --]]
  580.  
  581. -- Styles
  582.  
  583. local function CreateColor3(r, g, b) return Color3.new(r/255,g/255,b/255) end
  584.  
  585. local Styles = {
  586. Font = Enum.Font.Arial;
  587. Margin = 5;
  588. Black = CreateColor3(0,0,0);
  589. White = CreateColor3(255,255,255);
  590. }
  591.  
  592. local Row = {
  593. Font = Styles.Font;
  594. FontSize = Enum.FontSize.Size14;
  595. TextXAlignment = Enum.TextXAlignment.Left;
  596. TextColor = Styles.Black;
  597. TextColorOver = Styles.White;
  598. TextLockedColor = CreateColor3(120,120,120);
  599. Height = 24;
  600. BorderColor = CreateColor3(216,216,216);
  601. BackgroundColor = Styles.White;
  602. BackgroundColorAlternate = CreateColor3(246,246,246);
  603. BackgroundColorMouseover = CreateColor3(211,224,244);
  604. TitleMarginLeft = 15;
  605. }
  606.  
  607. local DropDown = {
  608. Font = Styles.Font;
  609. FontSize = Enum.FontSize.Size14;
  610. TextColor = CreateColor3(0,0,0);
  611. TextColorOver = Styles.White;
  612. TextXAlignment = Enum.TextXAlignment.Left;
  613. Height = 16;
  614. BackColor = Styles.White;
  615. BackColorOver = CreateColor3(86,125,188);
  616. BorderColor = CreateColor3(216,216,216);
  617. BorderSizePixel = 2;
  618. ArrowColor = CreateColor3(160,160,160);
  619. ArrowColorOver = Styles.Black;
  620. }
  621.  
  622. local BrickColors = {
  623. BoxSize = 13;
  624. BorderSizePixel = 1;
  625. BorderColor = CreateColor3(160,160,160);
  626. FrameColor = CreateColor3(160,160,160);
  627. Size = 20;
  628. Padding = 4;
  629. ColorsPerRow = 8;
  630. OuterBorder = 1;
  631. OuterBorderColor = Styles.Black;
  632. }
  633.  
  634. wait(1)
  635.  
  636. local bindGetSelection = ExplorerFrame.GetSelection
  637. local bindSelectionChanged = ExplorerFrame.SelectionChanged
  638. local bindGetApi = PropertiesFrame.GetApi
  639. local bindGetAwait = PropertiesFrame.GetAwaiting
  640. local bindSetAwait = PropertiesFrame.SetAwaiting
  641.  
  642. local ContentUrl = ContentProvider.BaseUrl .. "asset/?id="
  643.  
  644. local SettingsRemote = Gui:WaitForChild("SettingsPanel"):WaitForChild("GetSetting")
  645.  
  646. local propertiesSearch = PropertiesFrame.Header.TextBox
  647.  
  648. local AwaitingObjectValue = false
  649. local AwaitingObjectObj
  650. local AwaitingObjectProp
  651.  
  652. function searchingProperties()
  653. if propertiesSearch.Text ~= "" and propertiesSearch.Text ~= "Search Properties" then
  654. return true
  655. end
  656. return false
  657. end
  658.  
  659. local function GetSelection()
  660. local selection = bindGetSelection:Invoke()
  661. if #selection == 0 then
  662. return nil
  663. else
  664. return selection
  665. end
  666. end
  667.  
  668. -- Number
  669.  
  670. local function Round(number, decimalPlaces)
  671. return tonumber(string.format("%." .. (decimalPlaces or 0) .. "f", number))
  672. end
  673.  
  674. -- Strings
  675.  
  676. local function Split(str, delimiter)
  677. local start = 1
  678. local t = {}
  679. while true do
  680. local pos = string.find (str, delimiter, start, true)
  681. if not pos then
  682. break
  683. end
  684. table.insert (t, string.sub (str, start, pos - 1))
  685. start = pos + string.len (delimiter)
  686. end
  687. table.insert (t, string.sub (str, start))
  688. return t
  689. end
  690.  
  691. -- Data Type Handling
  692.  
  693. local function ToString(value, type)
  694. if type == "float" then
  695. return tostring(Round(value,2))
  696. elseif type == "Content" then
  697. if string.find(value,"/asset") then
  698. local match = string.find(value, "=") + 1
  699. local id = string.sub(value, match)
  700. return id
  701. else
  702. return tostring(value)
  703. end
  704. elseif type == "Vector2" then
  705. local x = value.x
  706. local y = value.y
  707. return string.format("%g, %g", x,y)
  708. elseif type == "Vector3" then
  709. local x = value.x
  710. local y = value.y
  711. local z = value.z
  712. return string.format("%g, %g, %g", x,y,z)
  713. elseif type == "Color3" then
  714. local r = value.r
  715. local g = value.g
  716. local b = value.b
  717. return string.format("%d, %d, %d", r*255,g*255,b*255)
  718. elseif type == "UDim2" then
  719. local xScale = value.X.Scale
  720. local xOffset = value.X.Offset
  721. local yScale = value.Y.Scale
  722. local yOffset = value.Y.Offset
  723. return string.format("{%d, %d}, {%d, %d}", xScale, xOffset, yScale, yOffset)
  724. else
  725. return tostring(value)
  726. end
  727. end
  728.  
  729. local function ToValue(value,type)
  730. if type == "Vector2" then
  731. local list = Split(value,",")
  732. if #list < 2 then return nil end
  733. local x = tonumber(list[1]) or 0
  734. local y = tonumber(list[2]) or 0
  735. return Vector2.new(x,y)
  736. elseif type == "Vector3" then
  737. local list = Split(value,",")
  738. if #list < 3 then return nil end
  739. local x = tonumber(list[1]) or 0
  740. local y = tonumber(list[2]) or 0
  741. local z = tonumber(list[3]) or 0
  742. return Vector3.new(x,y,z)
  743. elseif type == "Color3" then
  744. local list = Split(value,",")
  745. if #list < 3 then return nil end
  746. local r = tonumber(list[1]) or 0
  747. local g = tonumber(list[2]) or 0
  748. local b = tonumber(list[3]) or 0
  749. return Color3.new(r/255,g/255, b/255)
  750. elseif type == "UDim2" then
  751. local list = Split(string.gsub(string.gsub(value, "{", ""),"}",""),",")
  752. if #list < 4 then return nil end
  753. local xScale = tonumber(list[1]) or 0
  754. local xOffset = tonumber(list[2]) or 0
  755. local yScale = tonumber(list[3]) or 0
  756. local yOffset = tonumber(list[4]) or 0
  757. return UDim2.new(xScale, xOffset, yScale, yOffset)
  758. elseif type == "Content" then
  759. if tonumber(value) ~= nil then
  760. value = ContentUrl .. value
  761. end
  762. return value
  763. elseif type == "float" or type == "int" or type == "double" then
  764. return tonumber(value)
  765. elseif type == "string" then
  766. return value
  767. elseif type == "NumberRange" then
  768. local list = Split(value,",")
  769. if #list == 1 then
  770. if tonumber(list[1]) == nil then return nil end
  771. local newVal = tonumber(list[1]) or 0
  772. return NumberRange.new(newVal)
  773. end
  774. if #list < 2 then return nil end
  775. local x = tonumber(list[1]) or 0
  776. local y = tonumber(list[2]) or 0
  777. return NumberRange.new(x,y)
  778. else
  779. return nil
  780. end
  781. end
  782.  
  783.  
  784. -- Tables
  785.  
  786. local function CopyTable(T)
  787. local t2 = {}
  788. for k,v in pairs(T) do
  789. t2[k] = v
  790. end
  791. return t2
  792. end
  793.  
  794. local function SortTable(T)
  795. table.sort(T,
  796. function(x,y) return x.Name < y.Name
  797. end)
  798. end
  799.  
  800. -- Spritesheet
  801. local Sprite = {
  802. Width = 13;
  803. Height = 13;
  804. }
  805.  
  806. local Spritesheet = {
  807. Image = "http://www.roblox.com/asset/?id=128896947";
  808. Height = 256;
  809. Width = 256;
  810. }
  811.  
  812. local Images = {
  813. "unchecked",
  814. "checked",
  815. "unchecked_over",
  816. "checked_over",
  817. "unchecked_disabled",
  818. "checked_disabled"
  819. }
  820.  
  821. local function SpritePosition(spriteName)
  822. local x = 0
  823. local y = 0
  824. for i,v in pairs(Images) do
  825. if (v == spriteName) then
  826. return {x, y}
  827. end
  828. x = x + Sprite.Height
  829. if (x + Sprite.Width) > Spritesheet.Width then
  830. x = 0
  831. y = y + Sprite.Height
  832. end
  833. end
  834. end
  835.  
  836. local function GetCheckboxImageName(checked, readOnly, mouseover)
  837. if checked then
  838. if readOnly then
  839. return "checked_disabled"
  840. elseif mouseover then
  841. return "checked_over"
  842. else
  843. return "checked"
  844. end
  845. else
  846. if readOnly then
  847. return "unchecked_disabled"
  848. elseif mouseover then
  849. return "unchecked_over"
  850. else
  851. return "unchecked"
  852. end
  853. end
  854. end
  855.  
  856. local MAP_ID = 418720155
  857.  
  858. -- Gui Controls --
  859.  
  860. ---- IconMap ----
  861. -- Image size: 256px x 256px
  862. -- Icon size: 16px x 16px
  863. -- Padding between each icon: 2px
  864. -- Padding around image edge: 1px
  865. -- Total icons: 14 x 14 (196)
  866. local Icon do
  867. local iconMap = 'http://www.roblox.com/asset/?id=' .. MAP_ID
  868. game:GetService('ContentProvider'):Preload(iconMap)
  869. local iconDehash do
  870. -- 14 x 14, 0-based input, 0-based output
  871. local f=math.floor
  872. function iconDehash(h)
  873. return f(h/14%14),f(h%14)
  874. end
  875. end
  876.  
  877. function Icon(IconFrame,index)
  878. local row,col = iconDehash(index)
  879. local mapSize = Vector2.new(256,256)
  880. local pad,border = 2,1
  881. local iconSize = 16
  882.  
  883. local class = 'Frame'
  884. if type(IconFrame) == 'string' then
  885. class = IconFrame
  886. IconFrame = nil
  887. end
  888.  
  889. if not IconFrame then
  890. IconFrame = Create(class,{
  891. Name = "Icon";
  892. BackgroundTransparency = 1;
  893. ClipsDescendants = true;
  894. Create('ImageLabel',{
  895. Name = "IconMap";
  896. Active = false;
  897. BackgroundTransparency = 1;
  898. Image = iconMap;
  899. Size = UDim2.new(mapSize.x/iconSize,0,mapSize.y/iconSize,0);
  900. });
  901. })
  902. end
  903.  
  904. IconFrame.IconMap.Position = UDim2.new(-col - (pad*(col+1) + border)/iconSize,0,-row - (pad*(row+1) + border)/iconSize,0)
  905. return IconFrame
  906. end
  907. end
  908.  
  909. local function CreateCell()
  910. local tableCell = Instance.new("Frame")
  911. tableCell.Size = UDim2.new(0.5, -1, 1, 0)
  912. tableCell.BackgroundColor3 = Row.BackgroundColor
  913. tableCell.BorderColor3 = Row.BorderColor
  914. return tableCell
  915. end
  916.  
  917. local function CreateLabel(readOnly)
  918. local label = Instance.new("TextLabel")
  919. label.Font = Row.Font
  920. label.FontSize = Row.FontSize
  921. label.TextXAlignment = Row.TextXAlignment
  922. label.BackgroundTransparency = 1
  923.  
  924. if readOnly then
  925. label.TextColor3 = Row.TextLockedColor
  926. else
  927. label.TextColor3 = Row.TextColor
  928. end
  929. return label
  930. end
  931.  
  932. local function CreateTextButton(readOnly, onClick)
  933. local button = Instance.new("TextButton")
  934. button.Font = Row.Font
  935. button.FontSize = Row.FontSize
  936. button.TextXAlignment = Row.TextXAlignment
  937. button.BackgroundTransparency = 1
  938. if readOnly then
  939. button.TextColor3 = Row.TextLockedColor
  940. else
  941. button.TextColor3 = Row.TextColor
  942. button.MouseButton1Click:connect(function()
  943. onClick()
  944. end)
  945. end
  946. return button
  947. end
  948.  
  949. local function CreateObject(readOnly)
  950. local button = Instance.new("TextButton")
  951. button.Font = Row.Font
  952. button.FontSize = Row.FontSize
  953. button.TextXAlignment = Row.TextXAlignment
  954. button.BackgroundTransparency = 1
  955. if readOnly then
  956. button.TextColor3 = Row.TextLockedColor
  957. else
  958. button.TextColor3 = Row.TextColor
  959. end
  960. local cancel = Create(Icon('ImageButton',177),{
  961. Name = "Cancel";
  962. Visible = false;
  963. Position = UDim2.new(1,-20,0,0);
  964. Size = UDim2.new(0,20,0,20);
  965. Parent = button;
  966. })
  967. return button
  968. end
  969.  
  970. local function CreateTextBox(readOnly)
  971. if readOnly then
  972. local box = CreateLabel(readOnly)
  973. return box
  974. else
  975. local box = Instance.new("TextBox")
  976. if not SettingsRemote:Invoke("ClearProps") then
  977. box.ClearTextOnFocus = false
  978. end
  979. box.Font = Row.Font
  980. box.FontSize = Row.FontSize
  981. box.TextXAlignment = Row.TextXAlignment
  982. box.BackgroundTransparency = 1
  983. box.TextColor3 = Row.TextColor
  984. return box
  985. end
  986. end
  987.  
  988. local function CreateDropDownItem(text, onClick)
  989. local button = Instance.new("TextButton")
  990. button.Font = DropDown.Font
  991. button.FontSize = DropDown.FontSize
  992. button.TextColor3 = DropDown.TextColor
  993. button.TextXAlignment = DropDown.TextXAlignment
  994. button.BackgroundColor3 = DropDown.BackColor
  995. button.AutoButtonColor = false
  996. button.BorderSizePixel = 0
  997. button.Active = true
  998. button.Text = text
  999.  
  1000. button.MouseEnter:connect(function()
  1001. button.TextColor3 = DropDown.TextColorOver
  1002. button.BackgroundColor3 = DropDown.BackColorOver
  1003. end)
  1004. button.MouseLeave:connect(function()
  1005. button.TextColor3 = DropDown.TextColor
  1006. button.BackgroundColor3 = DropDown.BackColor
  1007. end)
  1008. button.MouseButton1Click:connect(function()
  1009. onClick(text)
  1010. end)
  1011. return button
  1012. end
  1013.  
  1014. local function CreateDropDown(choices, currentChoice, readOnly, onClick)
  1015. local frame = Instance.new("Frame")
  1016. frame.Name = "DropDown"
  1017. frame.Size = UDim2.new(1, 0, 1, 0)
  1018. frame.BackgroundTransparency = 1
  1019. frame.Active = true
  1020.  
  1021. local menu = nil
  1022. local arrow = nil
  1023. local expanded = false
  1024. local margin = DropDown.BorderSizePixel;
  1025.  
  1026. local button = Instance.new("TextButton")
  1027. button.Font = Row.Font
  1028. button.FontSize = Row.FontSize
  1029. button.TextXAlignment = Row.TextXAlignment
  1030. button.BackgroundTransparency = 1
  1031. button.TextColor3 = Row.TextColor
  1032. if readOnly then
  1033. button.TextColor3 = Row.TextLockedColor
  1034. end
  1035. button.Text = currentChoice
  1036. button.Size = UDim2.new(1, -2 * Styles.Margin, 1, 0)
  1037. button.Position = UDim2.new(0, Styles.Margin, 0, 0)
  1038. button.Parent = frame
  1039.  
  1040. local function showArrow(color)
  1041. if arrow then arrow:Destroy() end
  1042.  
  1043. local graphicTemplate = Create('Frame',{
  1044. Name="Graphic";
  1045. BorderSizePixel = 0;
  1046. BackgroundColor3 = color;
  1047. })
  1048. local graphicSize = 16/2
  1049.  
  1050. arrow = ArrowGraphic(graphicSize,'Down',true,graphicTemplate)
  1051. arrow.Position = UDim2.new(1,-graphicSize * 2,0.5,-graphicSize/2)
  1052. arrow.Parent = frame
  1053. end
  1054.  
  1055. local function hideMenu()
  1056. expanded = false
  1057. showArrow(DropDown.ArrowColor)
  1058. if menu then menu:Destroy() end
  1059. end
  1060.  
  1061. local function showMenu()
  1062. expanded = true
  1063. menu = Instance.new("Frame")
  1064. menu.Size = UDim2.new(1, -2 * margin, 0, #choices * DropDown.Height)
  1065. menu.Position = UDim2.new(0, margin, 0, Row.Height + margin)
  1066. menu.BackgroundTransparency = 0
  1067. menu.BackgroundColor3 = DropDown.BackColor
  1068. menu.BorderColor3 = DropDown.BorderColor
  1069. menu.BorderSizePixel = DropDown.BorderSizePixel
  1070. menu.Active = true
  1071. menu.ZIndex = 5
  1072. menu.Parent = frame
  1073.  
  1074. local parentFrameHeight = menu.Parent.Parent.Parent.Parent.Size.Y.Offset
  1075. local rowHeight = menu.Parent.Parent.Parent.Position.Y.Offset
  1076. if (rowHeight + menu.Size.Y.Offset) > math.max(parentFrameHeight,PropertiesFrame.AbsoluteSize.y) then
  1077. menu.Position = UDim2.new(0, margin, 0, -1 * (#choices * DropDown.Height) - margin)
  1078. end
  1079.  
  1080. local function choice(name)
  1081. onClick(name)
  1082. hideMenu()
  1083. end
  1084.  
  1085. for i,name in pairs(choices) do
  1086. local option = CreateDropDownItem(name, function()
  1087. choice(name)
  1088. end)
  1089. option.Size = UDim2.new(1, 0, 0, 16)
  1090. option.Position = UDim2.new(0, 0, 0, (i - 1) * DropDown.Height)
  1091. option.ZIndex = menu.ZIndex
  1092. option.Parent = menu
  1093. end
  1094. end
  1095.  
  1096. showArrow(DropDown.ArrowColor)
  1097.  
  1098. if not readOnly then
  1099.  
  1100. button.MouseEnter:connect(function()
  1101. button.TextColor3 = Row.TextColor
  1102. showArrow(DropDown.ArrowColorOver)
  1103. end)
  1104. button.MouseLeave:connect(function()
  1105. button.TextColor3 = Row.TextColor
  1106. if not expanded then
  1107. showArrow(DropDown.ArrowColor)
  1108. end
  1109. end)
  1110. button.MouseButton1Click:connect(function()
  1111. if expanded then
  1112. hideMenu()
  1113. else
  1114. showMenu()
  1115. end
  1116. end)
  1117. end
  1118.  
  1119. return frame,button
  1120. end
  1121.  
  1122. local function CreateBrickColor(readOnly, onClick)
  1123. local frame = Instance.new("Frame")
  1124. frame.Size = UDim2.new(1,0,1,0)
  1125. frame.BackgroundTransparency = 1
  1126.  
  1127. local colorPalette = Instance.new("Frame")
  1128. colorPalette.BackgroundTransparency = 0
  1129. colorPalette.SizeConstraint = Enum.SizeConstraint.RelativeXX
  1130. colorPalette.Size = UDim2.new(1, -2 * BrickColors.OuterBorder, 1, -2 * BrickColors.OuterBorder)
  1131. colorPalette.BorderSizePixel = BrickColors.BorderSizePixel
  1132. colorPalette.BorderColor3 = BrickColors.BorderColor
  1133. colorPalette.Position = UDim2.new(0, BrickColors.OuterBorder, 0, BrickColors.OuterBorder + Row.Height)
  1134. colorPalette.ZIndex = 5
  1135. colorPalette.Visible = false
  1136. colorPalette.BorderSizePixel = BrickColors.OuterBorder
  1137. colorPalette.BorderColor3 = BrickColors.OuterBorderColor
  1138. colorPalette.Parent = frame
  1139.  
  1140. local function show()
  1141. colorPalette.Visible = true
  1142. end
  1143.  
  1144. local function hide()
  1145. colorPalette.Visible = false
  1146. end
  1147.  
  1148. local function toggle()
  1149. colorPalette.Visible = not colorPalette.Visible
  1150. end
  1151.  
  1152. local colorBox = Instance.new("TextButton", frame)
  1153. colorBox.Position = UDim2.new(0, Styles.Margin, 0, Styles.Margin)
  1154. colorBox.Size = UDim2.new(0, BrickColors.BoxSize, 0, BrickColors.BoxSize)
  1155. colorBox.Text = ""
  1156. colorBox.MouseButton1Click:connect(function()
  1157. if not readOnly then
  1158. toggle()
  1159. end
  1160. end)
  1161.  
  1162. if readOnly then
  1163. colorBox.AutoButtonColor = false
  1164. end
  1165.  
  1166. local spacingBefore = (Styles.Margin * 2) + BrickColors.BoxSize
  1167.  
  1168. local propertyLabel = CreateTextButton(readOnly, function()
  1169. if not readOnly then
  1170. toggle()
  1171. end
  1172. end)
  1173. propertyLabel.Size = UDim2.new(1, (-1 * spacingBefore) - Styles.Margin, 1, 0)
  1174. propertyLabel.Position = UDim2.new(0, spacingBefore, 0, 0)
  1175. propertyLabel.Parent = frame
  1176.  
  1177. local size = (1 / BrickColors.ColorsPerRow)
  1178.  
  1179. for index = 0, 127 do
  1180. local brickColor = BrickColor.palette(index)
  1181. local color3 = brickColor.Color
  1182.  
  1183. local x = size * (index % BrickColors.ColorsPerRow)
  1184. local y = size * math.floor(index / BrickColors.ColorsPerRow)
  1185.  
  1186. local brickColorBox = Instance.new("TextButton")
  1187. brickColorBox.Text = ""
  1188. brickColorBox.Size = UDim2.new(size,0,size,0)
  1189. brickColorBox.BackgroundColor3 = color3
  1190. brickColorBox.Position = UDim2.new(x, 0, y, 0)
  1191. brickColorBox.ZIndex = colorPalette.ZIndex
  1192. brickColorBox.Parent = colorPalette
  1193.  
  1194. brickColorBox.MouseButton1Click:connect(function()
  1195. hide()
  1196. onClick(brickColor)
  1197. end)
  1198. end
  1199.  
  1200. return frame,propertyLabel,colorBox
  1201. end
  1202.  
  1203. local function CreateColor3Control(readOnly, onClick)
  1204. local frame = Instance.new("Frame")
  1205. frame.Size = UDim2.new(1,0,1,0)
  1206. frame.BackgroundTransparency = 1
  1207.  
  1208. local colorBox = Instance.new("TextButton", frame)
  1209. colorBox.Position = UDim2.new(0, Styles.Margin, 0, Styles.Margin)
  1210. colorBox.Size = UDim2.new(0, BrickColors.BoxSize, 0, BrickColors.BoxSize)
  1211. colorBox.Text = ""
  1212. colorBox.AutoButtonColor = false
  1213.  
  1214. local spacingBefore = (Styles.Margin * 2) + BrickColors.BoxSize
  1215. local box = CreateTextBox(readOnly)
  1216. box.Size = UDim2.new(1, (-1 * spacingBefore) - Styles.Margin, 1, 0)
  1217. box.Position = UDim2.new(0, spacingBefore, 0, 0)
  1218. box.Parent = frame
  1219.  
  1220. return frame,box,colorBox
  1221. end
  1222.  
  1223. function CreateCheckbox(value, readOnly, onClick)
  1224. local checked = value
  1225. local mouseover = false
  1226.  
  1227. local checkboxFrame = Instance.new("ImageButton")
  1228. checkboxFrame.Size = UDim2.new(0, Sprite.Width, 0, Sprite.Height)
  1229. checkboxFrame.BackgroundTransparency = 1
  1230. checkboxFrame.ClipsDescendants = true
  1231. --checkboxFrame.Position = UDim2.new(0, Styles.Margin, 0, Styles.Margin)
  1232.  
  1233. local spritesheetImage = Instance.new("ImageLabel", checkboxFrame)
  1234. spritesheetImage.Name = "SpritesheetImageLabel"
  1235. spritesheetImage.Size = UDim2.new(0, Spritesheet.Width, 0, Spritesheet.Height)
  1236. spritesheetImage.Image = Spritesheet.Image
  1237. spritesheetImage.BackgroundTransparency = 1
  1238.  
  1239. local function updateSprite()
  1240. local spriteName = GetCheckboxImageName(checked, readOnly, mouseover)
  1241. local spritePosition = SpritePosition(spriteName)
  1242. spritesheetImage.Position = UDim2.new(0, -1 * spritePosition[1], 0, -1 * spritePosition[2])
  1243. end
  1244.  
  1245. local function setValue(val)
  1246. checked = val
  1247. updateSprite()
  1248. end
  1249.  
  1250. if not readOnly then
  1251. checkboxFrame.MouseEnter:connect(function() mouseover = true updateSprite() end)
  1252. checkboxFrame.MouseLeave:connect(function() mouseover = false updateSprite() end)
  1253. checkboxFrame.MouseButton1Click:connect(function()
  1254. onClick(checked)
  1255. end)
  1256. end
  1257.  
  1258. updateSprite()
  1259.  
  1260. return checkboxFrame, setValue
  1261. end
  1262.  
  1263.  
  1264.  
  1265. -- Code for handling controls of various data types --
  1266.  
  1267. local Controls = {}
  1268.  
  1269. Controls["default"] = function(object, propertyData, readOnly)
  1270. local propertyName = propertyData["Name"]
  1271. local propertyType = propertyData["ValueType"]
  1272.  
  1273. local box = CreateTextBox(readOnly)
  1274. box.Size = UDim2.new(1, -2 * Styles.Margin, 1, 0)
  1275. box.Position = UDim2.new(0, Styles.Margin, 0, 0)
  1276.  
  1277. local function update()
  1278. local value = object[propertyName]
  1279. box.Text = ToString(value, propertyType)
  1280. end
  1281.  
  1282. if not readOnly then
  1283. box.FocusLost:connect(function(enterPressed)
  1284. Set(object, propertyData, ToValue(box.Text,propertyType))
  1285. update()
  1286. end)
  1287. end
  1288.  
  1289. update()
  1290.  
  1291. object.Changed:connect(function(property)
  1292. if (property == propertyName) then
  1293. update()
  1294. end
  1295. end)
  1296.  
  1297. return box
  1298. end
  1299.  
  1300. Controls["bool"] = function(object, propertyData, readOnly)
  1301. local propertyName = propertyData["Name"]
  1302. local checked = object[propertyName]
  1303.  
  1304. local checkbox, setValue = CreateCheckbox(checked, readOnly, function(value)
  1305. Set(object, propertyData, not checked)
  1306. end)
  1307. checkbox.Position = UDim2.new(0, Styles.Margin, 0, Styles.Margin)
  1308.  
  1309. setValue(checked)
  1310.  
  1311. local function update()
  1312. checked = object[propertyName]
  1313. setValue(checked)
  1314. end
  1315.  
  1316. object.Changed:connect(function(property)
  1317. if (property == propertyName) then
  1318. update()
  1319. end
  1320. end)
  1321.  
  1322. if object:IsA("BoolValue") then
  1323. object.Changed:connect(function(val)
  1324. update()
  1325. end)
  1326. end
  1327.  
  1328. update()
  1329.  
  1330. return checkbox
  1331. end
  1332.  
  1333. Controls["BrickColor"] = function(object, propertyData, readOnly)
  1334. local propertyName = propertyData["Name"]
  1335.  
  1336. local frame,label,brickColorBox = CreateBrickColor(readOnly, function(brickColor)
  1337. Set(object, propertyData, brickColor)
  1338. end)
  1339.  
  1340. local function update()
  1341. local value = object[propertyName]
  1342. brickColorBox.BackgroundColor3 = value.Color
  1343. label.Text = tostring(value)
  1344. end
  1345.  
  1346. update()
  1347.  
  1348. object.Changed:connect(function(property)
  1349. if (property == propertyName) then
  1350. update()
  1351. end
  1352. end)
  1353.  
  1354. return frame
  1355. end
  1356.  
  1357. Controls["Color3"] = function(object, propertyData, readOnly)
  1358. local propertyName = propertyData["Name"]
  1359.  
  1360. local frame,textBox,colorBox = CreateColor3Control(readOnly)
  1361.  
  1362. textBox.FocusLost:connect(function(enterPressed)
  1363. Set(object, propertyData, ToValue(textBox.Text,"Color3"))
  1364. local value = object[propertyName]
  1365. colorBox.BackgroundColor3 = value
  1366. textBox.Text = ToString(value, "Color3")
  1367. end)
  1368.  
  1369. local function update()
  1370. local value = object[propertyName]
  1371. colorBox.BackgroundColor3 = value
  1372. textBox.Text = ToString(value, "Color3")
  1373. end
  1374.  
  1375. update()
  1376.  
  1377. object.Changed:connect(function(property)
  1378. if (property == propertyName) then
  1379. update()
  1380. end
  1381. end)
  1382.  
  1383. return frame
  1384. end
  1385.  
  1386. Controls["Enum"] = function(object, propertyData, readOnly)
  1387. local propertyName = propertyData["Name"]
  1388. local propertyType = propertyData["ValueType"]
  1389.  
  1390. local enumName = object[propertyName].Name
  1391.  
  1392. local enumNames = {}
  1393. for _,enum in pairs(Enum[tostring(propertyType)]:GetEnumItems()) do
  1394. table.insert(enumNames, enum.Name)
  1395. end
  1396.  
  1397. local dropdown, propertyLabel = CreateDropDown(enumNames, enumName, readOnly, function(value)
  1398. Set(object, propertyData, value)
  1399. end)
  1400. --dropdown.Parent = frame
  1401.  
  1402. local function update()
  1403. local value = object[propertyName].Name
  1404. propertyLabel.Text = tostring(value)
  1405. end
  1406.  
  1407. update()
  1408.  
  1409. object.Changed:connect(function(property)
  1410. if (property == propertyName) then
  1411. update()
  1412. end
  1413. end)
  1414.  
  1415. return dropdown
  1416. end
  1417.  
  1418. Controls["Object"] = function(object, propertyData, readOnly)
  1419. local propertyName = propertyData["Name"]
  1420. local propertyType = propertyData["ValueType"]
  1421.  
  1422. local box = CreateObject(readOnly,function()end)
  1423. box.Size = UDim2.new(1, -2 * Styles.Margin, 1, 0)
  1424. box.Position = UDim2.new(0, Styles.Margin, 0, 0)
  1425.  
  1426. local function update()
  1427. if AwaitingObjectObj == object then
  1428. if AwaitingObjectValue == true then
  1429. box.Text = "Select an Object"
  1430. return
  1431. end
  1432. end
  1433. local value = object[propertyName]
  1434. box.Text = ToString(value, propertyType)
  1435. end
  1436.  
  1437. if not readOnly then
  1438. box.MouseButton1Click:connect(function()
  1439. if AwaitingObjectValue then
  1440. AwaitingObjectValue = false
  1441. update()
  1442. return
  1443. end
  1444. AwaitingObjectValue = true
  1445. AwaitingObjectObj = object
  1446. AwaitingObjectProp = propertyData
  1447. box.Text = "Select an Object"
  1448. end)
  1449.  
  1450. box.Cancel.Visible = true
  1451. box.Cancel.MouseButton1Click:connect(function()
  1452. object[propertyName] = nil
  1453. end)
  1454. end
  1455.  
  1456. update()
  1457.  
  1458. object.Changed:connect(function(property)
  1459. if (property == propertyName) then
  1460. update()
  1461. end
  1462. end)
  1463.  
  1464. if object:IsA("ObjectValue") then
  1465. object.Changed:connect(function(val)
  1466. update()
  1467. end)
  1468. end
  1469.  
  1470. return box
  1471. end
  1472.  
  1473. function GetControl(object, propertyData, readOnly)
  1474. local propertyType = propertyData["ValueType"]
  1475. local control = nil
  1476.  
  1477. if Controls[propertyType] then
  1478. control = Controls[propertyType](object, propertyData, readOnly)
  1479. elseif RbxApi.IsEnum(propertyType) then
  1480. control = Controls["Enum"](object, propertyData, readOnly)
  1481. elseif RbxApi.Classes[propertyType] then
  1482. control = Controls["Object"](object, propertyData, readOnly)
  1483. else
  1484. control = Controls["default"](object, propertyData, readOnly)
  1485. end
  1486. return control
  1487. end
  1488. -- Permissions
  1489.  
  1490. function CanEditObject(object)
  1491. local player = Players.LocalPlayer
  1492. local character = player.Character
  1493. return Permissions.CanEdit
  1494. end
  1495.  
  1496. function CanEditProperty(object,propertyData)
  1497. local tags = propertyData["tags"]
  1498. for _,name in pairs(tags) do
  1499. if name == "readonly" then
  1500. return false
  1501. end
  1502. end
  1503. return CanEditObject(object)
  1504. end
  1505.  
  1506. --RbxApi
  1507. local function PropertyIsHidden(propertyData)
  1508. local tags = propertyData["tags"]
  1509. for _,name in pairs(tags) do
  1510. if name == "deprecated"
  1511. or name == "hidden"
  1512. or name == "writeonly" then
  1513. return true
  1514. end
  1515. end
  1516. return false
  1517. end
  1518.  
  1519. function Set(object, propertyData, value)
  1520. local propertyName = propertyData["Name"]
  1521. local propertyType = propertyData["ValueType"]
  1522.  
  1523. if value == nil then return end
  1524.  
  1525. for i,v in pairs(GetSelection()) do
  1526. if CanEditProperty(v,propertyData) then
  1527. pcall(function()
  1528. --print("Setting " .. propertyName .. " to " .. tostring(value))
  1529. v[propertyName] = value
  1530. end)
  1531. end
  1532. end
  1533. end
  1534.  
  1535. function CreateRow(object, propertyData, isAlternateRow)
  1536. local propertyName = propertyData["Name"]
  1537. local propertyType = propertyData["ValueType"]
  1538. local propertyValue = object[propertyName]
  1539. --rowValue, rowValueType, isAlternate
  1540. local backColor = Row.BackgroundColor;
  1541. if (isAlternateRow) then
  1542. backColor = Row.BackgroundColorAlternate
  1543. end
  1544.  
  1545. local readOnly = not CanEditProperty(object, propertyData)
  1546. --if propertyType == "Instance" or propertyName == "Parent" then readOnly = true end
  1547.  
  1548. local rowFrame = Instance.new("Frame")
  1549. rowFrame.Size = UDim2.new(1,0,0,Row.Height)
  1550. rowFrame.BackgroundTransparency = 1
  1551. rowFrame.Name = 'Row'
  1552.  
  1553. local propertyLabelFrame = CreateCell()
  1554. propertyLabelFrame.Parent = rowFrame
  1555. propertyLabelFrame.ClipsDescendants = true
  1556.  
  1557. local propertyLabel = CreateLabel(readOnly)
  1558. propertyLabel.Text = propertyName
  1559. propertyLabel.Size = UDim2.new(1, -1 * Row.TitleMarginLeft, 1, 0)
  1560. propertyLabel.Position = UDim2.new(0, Row.TitleMarginLeft, 0, 0)
  1561. propertyLabel.Parent = propertyLabelFrame
  1562.  
  1563. local propertyValueFrame = CreateCell()
  1564. propertyValueFrame.Size = UDim2.new(0.5, -1, 1, 0)
  1565. propertyValueFrame.Position = UDim2.new(0.5, 0, 0, 0)
  1566. propertyValueFrame.Parent = rowFrame
  1567.  
  1568. local control = GetControl(object, propertyData, readOnly)
  1569. control.Parent = propertyValueFrame
  1570.  
  1571. rowFrame.MouseEnter:connect(function()
  1572. propertyLabelFrame.BackgroundColor3 = Row.BackgroundColorMouseover
  1573. propertyValueFrame.BackgroundColor3 = Row.BackgroundColorMouseover
  1574. end)
  1575. rowFrame.MouseLeave:connect(function()
  1576. propertyLabelFrame.BackgroundColor3 = backColor
  1577. propertyValueFrame.BackgroundColor3 = backColor
  1578. end)
  1579.  
  1580. propertyLabelFrame.BackgroundColor3 = backColor
  1581. propertyValueFrame.BackgroundColor3 = backColor
  1582.  
  1583. return rowFrame
  1584. end
  1585.  
  1586. function ClearPropertiesList()
  1587. for _,instance in pairs(ContentFrame:GetChildren()) do
  1588. instance:Destroy()
  1589. end
  1590. end
  1591.  
  1592. local selection = Gui:FindFirstChild("Selection", 1)
  1593. print(selection)
  1594.  
  1595. function displayProperties(props)
  1596. for i,v in pairs(props) do
  1597. pcall(function()
  1598. local a = CreateRow(v.object, v.propertyData, ((numRows % 2) == 0))
  1599. a.Position = UDim2.new(0,0,0,numRows*Row.Height)
  1600. a.Parent = ContentFrame
  1601. numRows = numRows + 1
  1602. end)
  1603. end
  1604. end
  1605.  
  1606. function checkForDupe(prop,props)
  1607. for i,v in pairs(props) do
  1608. if v.propertyData.Name == prop.Name and v.propertyData.ValueType == prop.ValueType then
  1609. return true
  1610. end
  1611. end
  1612. return false
  1613. end
  1614.  
  1615. function sortProps(t)
  1616. table.sort(t,
  1617. function(x,y) return x.propertyData.Name < y.propertyData.Name
  1618. end)
  1619. end
  1620.  
  1621. function showProperties(obj)
  1622. ClearPropertiesList()
  1623. if obj == nil then return end
  1624. local propHolder = {}
  1625. local foundProps = {}
  1626. numRows = 0
  1627. for _,nextObj in pairs(obj) do
  1628. if not foundProps[nextObj.className] then
  1629. foundProps[nextObj.className] = true
  1630. for i,v in pairs(RbxApi.GetProperties(nextObj.className)) do
  1631. local suc, err = pcall(function()
  1632. if not (PropertyIsHidden(v)) and not checkForDupe(v,propHolder) then
  1633. if string.find(string.lower(v.Name),string.lower(propertiesSearch.Text)) or not searchingProperties() then
  1634. table.insert(propHolder,{propertyData = v, object = nextObj})
  1635. end
  1636. end
  1637. end)
  1638. --[[if not suc then
  1639. warn("Problem getting the value of property " .. v.Name .. " | " .. err)
  1640. end --]]
  1641. end
  1642. end
  1643. end
  1644. sortProps(propHolder)
  1645. displayProperties(propHolder)
  1646. ContentFrame.Size = UDim2.new(1, 0, 0, numRows * Row.Height)
  1647. scrollBar.ScrollIndex = 0
  1648. scrollBar.TotalSpace = numRows * Row.Height
  1649. scrollBar.Update()
  1650. end
  1651.  
  1652. ----------------------------------------------------------------
  1653. -----------------------SCROLLBAR STUFF--------------------------
  1654. ----------------------------------------------------------------
  1655. ----------------------------------------------------------------
  1656. local ScrollBarWidth = 16
  1657.  
  1658. local ScrollStyles = {
  1659. Background = Color3.new(233/255, 233/255, 233/255);
  1660. Border = Color3.new(149/255, 149/255, 149/255);
  1661. Selected = Color3.new( 63/255, 119/255, 189/255);
  1662. BorderSelected = Color3.new( 55/255, 106/255, 167/255);
  1663. Text = Color3.new( 0/255, 0/255, 0/255);
  1664. TextDisabled = Color3.new(128/255, 128/255, 128/255);
  1665. TextSelected = Color3.new(255/255, 255/255, 255/255);
  1666. Button = Color3.new(221/255, 221/255, 221/255);
  1667. ButtonBorder = Color3.new(149/255, 149/255, 149/255);
  1668. ButtonSelected = Color3.new(255/255, 0/255, 0/255);
  1669. Field = Color3.new(255/255, 255/255, 255/255);
  1670. FieldBorder = Color3.new(191/255, 191/255, 191/255);
  1671. TitleBackground = Color3.new(178/255, 178/255, 178/255);
  1672. }
  1673. do
  1674. local ZIndexLock = {}
  1675. function SetZIndex(object,z)
  1676. if not ZIndexLock[object] then
  1677. ZIndexLock[object] = true
  1678. if object:IsA'GuiObject' then
  1679. object.ZIndex = z
  1680. end
  1681. local children = object:GetChildren()
  1682. for i = 1,#children do
  1683. SetZIndex(children[i],z)
  1684. end
  1685. ZIndexLock[object] = nil
  1686. end
  1687. end
  1688. end
  1689. function SetZIndexOnChanged(object)
  1690. return object.Changed:connect(function(p)
  1691. if p == "ZIndex" then
  1692. SetZIndex(object,object.ZIndex)
  1693. end
  1694. end)
  1695. end
  1696. function Create(ty,data)
  1697. local obj
  1698. if type(ty) == 'string' then
  1699. obj = Instance.new(ty)
  1700. else
  1701. obj = ty
  1702. end
  1703. for k, v in pairs(data) do
  1704. if type(k) == 'number' then
  1705. v.Parent = obj
  1706. else
  1707. obj[k] = v
  1708. end
  1709. end
  1710. return obj
  1711. end
  1712. -- returns the ascendant ScreenGui of an object
  1713. function GetScreen(screen)
  1714. if screen == nil then return nil end
  1715. while not screen:IsA("ScreenGui") do
  1716. screen = screen.Parent
  1717. if screen == nil then return nil end
  1718. end
  1719. return screen
  1720. end
  1721. -- AutoButtonColor doesn't always reset properly
  1722. function ResetButtonColor(button)
  1723. local active = button.Active
  1724. button.Active = not active
  1725. button.Active = active
  1726. end
  1727.  
  1728. function ArrowGraphic(size,dir,scaled,template)
  1729. local Frame = Create('Frame',{
  1730. Name = "Arrow Graphic";
  1731. BorderSizePixel = 0;
  1732. Size = UDim2.new(0,size,0,size);
  1733. Transparency = 1;
  1734. })
  1735. if not template then
  1736. template = Instance.new("Frame")
  1737. template.BorderSizePixel = 0
  1738. end
  1739.  
  1740. local transform
  1741. if dir == nil or dir == 'Up' then
  1742. function transform(p,s) return p,s end
  1743. elseif dir == 'Down' then
  1744. function transform(p,s) return UDim2.new(0,p.X.Offset,0,size-p.Y.Offset-1),s end
  1745. elseif dir == 'Left' then
  1746. function transform(p,s) return UDim2.new(0,p.Y.Offset,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  1747. elseif dir == 'Right' then
  1748. function transform(p,s) return UDim2.new(0,size-p.Y.Offset-1,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  1749. end
  1750.  
  1751. local scale
  1752. if scaled then
  1753. function scale(p,s) return UDim2.new(p.X.Offset/size,0,p.Y.Offset/size,0),UDim2.new(s.X.Offset/size,0,s.Y.Offset/size,0) end
  1754. else
  1755. function scale(p,s) return p,s end
  1756. end
  1757.  
  1758. local o = math.floor(size/4)
  1759. if size%2 == 0 then
  1760. local n = size/2-1
  1761. for i = 0,n do
  1762. local t = template:Clone()
  1763. local p,s = scale(transform(
  1764. UDim2.new(0,n-i,0,o+i),
  1765. UDim2.new(0,(i+1)*2,0,1)
  1766. ))
  1767. t.Position = p
  1768. t.Size = s
  1769. t.Parent = Frame
  1770. end
  1771. else
  1772. local n = (size-1)/2
  1773. for i = 0,n do
  1774. local t = template:Clone()
  1775. local p,s = scale(transform(
  1776. UDim2.new(0,n-i,0,o+i),
  1777. UDim2.new(0,i*2+1,0,1)
  1778. ))
  1779. t.Position = p
  1780. t.Size = s
  1781. t.Parent = Frame
  1782. end
  1783. end
  1784. if size%4 > 1 then
  1785. local t = template:Clone()
  1786. local p,s = scale(transform(
  1787. UDim2.new(0,0,0,size-o-1),
  1788. UDim2.new(0,size,0,1)
  1789. ))
  1790. t.Position = p
  1791. t.Size = s
  1792. t.Parent = Frame
  1793. end
  1794. return Frame
  1795. end
  1796.  
  1797. function GripGraphic(size,dir,spacing,scaled,template)
  1798. local Frame = Create('Frame',{
  1799. Name = "Grip Graphic";
  1800. BorderSizePixel = 0;
  1801. Size = UDim2.new(0,size.x,0,size.y);
  1802. Transparency = 1;
  1803. })
  1804. if not template then
  1805. template = Instance.new("Frame")
  1806. template.BorderSizePixel = 0
  1807. end
  1808.  
  1809. spacing = spacing or 2
  1810.  
  1811. local scale
  1812. if scaled then
  1813. function scale(p) return UDim2.new(p.X.Offset/size.x,0,p.Y.Offset/size.y,0) end
  1814. else
  1815. function scale(p) return p end
  1816. end
  1817.  
  1818. if dir == 'Vertical' then
  1819. for i=0,size.x-1,spacing do
  1820. local t = template:Clone()
  1821. t.Size = scale(UDim2.new(0,1,0,size.y))
  1822. t.Position = scale(UDim2.new(0,i,0,0))
  1823. t.Parent = Frame
  1824. end
  1825. elseif dir == nil or dir == 'Horizontal' then
  1826. for i=0,size.y-1,spacing do
  1827. local t = template:Clone()
  1828. t.Size = scale(UDim2.new(0,size.x,0,1))
  1829. t.Position = scale(UDim2.new(0,0,0,i))
  1830. t.Parent = Frame
  1831. end
  1832. end
  1833.  
  1834. return Frame
  1835. end
  1836.  
  1837. do
  1838. local mt = {
  1839. __index = {
  1840. GetScrollPercent = function(self)
  1841. return self.ScrollIndex/(self.TotalSpace-self.VisibleSpace)
  1842. end;
  1843. CanScrollDown = function(self)
  1844. return self.ScrollIndex + self.VisibleSpace < self.TotalSpace
  1845. end;
  1846. CanScrollUp = function(self)
  1847. return self.ScrollIndex > 0
  1848. end;
  1849. ScrollDown = function(self)
  1850. self.ScrollIndex = self.ScrollIndex + self.PageIncrement
  1851. self:Update()
  1852. end;
  1853. ScrollUp = function(self)
  1854. self.ScrollIndex = self.ScrollIndex - self.PageIncrement
  1855. self:Update()
  1856. end;
  1857. ScrollTo = function(self,index)
  1858. self.ScrollIndex = index
  1859. self:Update()
  1860. end;
  1861. SetScrollPercent = function(self,percent)
  1862. self.ScrollIndex = math.floor((self.TotalSpace - self.VisibleSpace)*percent + 0.5)
  1863. self:Update()
  1864. end;
  1865. };
  1866. }
  1867. mt.__index.CanScrollRight = mt.__index.CanScrollDown
  1868. mt.__index.CanScrollLeft = mt.__index.CanScrollUp
  1869. mt.__index.ScrollLeft = mt.__index.ScrollUp
  1870. mt.__index.ScrollRight = mt.__index.ScrollDown
  1871.  
  1872. function ScrollBar(horizontal)
  1873. -- create row scroll bar
  1874. local ScrollFrame = Create('Frame',{
  1875. Name = "ScrollFrame";
  1876. Position = horizontal and UDim2.new(0,0,1,-ScrollBarWidth) or UDim2.new(1,-ScrollBarWidth,0,0);
  1877. Size = horizontal and UDim2.new(1,0,0,ScrollBarWidth) or UDim2.new(0,ScrollBarWidth,1,0);
  1878. BackgroundTransparency = 1;
  1879. Create('ImageButton',{
  1880. Name = "ScrollDown";
  1881. Position = horizontal and UDim2.new(1,-ScrollBarWidth,0,0) or UDim2.new(0,0,1,-ScrollBarWidth);
  1882. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  1883. BackgroundColor3 = ScrollStyles.Button;
  1884. BorderColor3 = ScrollStyles.Border;
  1885. --BorderSizePixel = 0;
  1886. });
  1887. Create('ImageButton',{
  1888. Name = "ScrollUp";
  1889. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  1890. BackgroundColor3 = ScrollStyles.Button;
  1891. BorderColor3 = ScrollStyles.Border;
  1892. --BorderSizePixel = 0;
  1893. });
  1894. Create('ImageButton',{
  1895. Name = "ScrollBar";
  1896. Size = horizontal and UDim2.new(1,-ScrollBarWidth*2,1,0) or UDim2.new(1,0,1,-ScrollBarWidth*2);
  1897. Position = horizontal and UDim2.new(0,ScrollBarWidth,0,0) or UDim2.new(0,0,0,ScrollBarWidth);
  1898. AutoButtonColor = false;
  1899. BackgroundColor3 = Color3.new(0.94902, 0.94902, 0.94902);
  1900. BorderColor3 = ScrollStyles.Border;
  1901. --BorderSizePixel = 0;
  1902. Create('ImageButton',{
  1903. Name = "ScrollThumb";
  1904. AutoButtonColor = false;
  1905. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  1906. BackgroundColor3 = ScrollStyles.Button;
  1907. BorderColor3 = ScrollStyles.Border;
  1908. --BorderSizePixel = 0;
  1909. });
  1910. });
  1911. })
  1912.  
  1913. local graphicTemplate = Create('Frame',{
  1914. Name="Graphic";
  1915. BorderSizePixel = 0;
  1916. BackgroundColor3 = ScrollStyles.Border;
  1917. })
  1918. local graphicSize = ScrollBarWidth/2
  1919.  
  1920. local ScrollDownFrame = ScrollFrame.ScrollDown
  1921. local ScrollDownGraphic = ArrowGraphic(graphicSize,horizontal and 'Right' or 'Down',true,graphicTemplate)
  1922. ScrollDownGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  1923. ScrollDownGraphic.Parent = ScrollDownFrame
  1924. local ScrollUpFrame = ScrollFrame.ScrollUp
  1925. local ScrollUpGraphic = ArrowGraphic(graphicSize,horizontal and 'Left' or 'Up',true,graphicTemplate)
  1926. ScrollUpGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  1927. ScrollUpGraphic.Parent = ScrollUpFrame
  1928. local ScrollBarFrame = ScrollFrame.ScrollBar
  1929. local ScrollThumbFrame = ScrollBarFrame.ScrollThumb
  1930. do
  1931. local size = ScrollBarWidth*3/8
  1932. local Decal = GripGraphic(Vector2.new(size,size),horizontal and 'Vertical' or 'Horizontal',2,graphicTemplate)
  1933. Decal.Position = UDim2.new(0.5,-size/2,0.5,-size/2)
  1934. Decal.Parent = ScrollThumbFrame
  1935. end
  1936.  
  1937. local MouseDrag = Create('ImageButton',{
  1938. Name = "MouseDrag";
  1939. Position = UDim2.new(-0.25,0,-0.25,0);
  1940. Size = UDim2.new(1.5,0,1.5,0);
  1941. Transparency = 1;
  1942. AutoButtonColor = false;
  1943. Active = true;
  1944. ZIndex = 10;
  1945. })
  1946.  
  1947. local Class = setmetatable({
  1948. GUI = ScrollFrame;
  1949. ScrollIndex = 0;
  1950. VisibleSpace = 0;
  1951. TotalSpace = 0;
  1952. PageIncrement = 1;
  1953. },mt)
  1954.  
  1955. local UpdateScrollThumb
  1956. if horizontal then
  1957. function UpdateScrollThumb()
  1958. ScrollThumbFrame.Size = UDim2.new(Class.VisibleSpace/Class.TotalSpace,0,0,ScrollBarWidth)
  1959. if ScrollThumbFrame.AbsoluteSize.x < ScrollBarWidth then
  1960. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,0,ScrollBarWidth)
  1961. end
  1962. local barSize = ScrollBarFrame.AbsoluteSize.x
  1963. ScrollThumbFrame.Position = UDim2.new(Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.x)/barSize,0,0,0)
  1964. end
  1965. else
  1966. function UpdateScrollThumb()
  1967. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,Class.VisibleSpace/Class.TotalSpace,0)
  1968. if ScrollThumbFrame.AbsoluteSize.y < ScrollBarWidth then
  1969. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,0,ScrollBarWidth)
  1970. end
  1971. local barSize = ScrollBarFrame.AbsoluteSize.y
  1972. ScrollThumbFrame.Position = UDim2.new(0,0,Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.y)/barSize,0)
  1973. end
  1974. end
  1975.  
  1976. local lastDown
  1977. local lastUp
  1978. local scrollStyle = {BackgroundColor3=ScrollStyles.Border,BackgroundTransparency=0}
  1979. local scrollStyle_ds = {BackgroundColor3=ScrollStyles.Border,BackgroundTransparency=0.7}
  1980.  
  1981. local function Update()
  1982. local t = Class.TotalSpace
  1983. local v = Class.VisibleSpace
  1984. local s = Class.ScrollIndex
  1985. if v <= t then
  1986. if s > 0 then
  1987. if s + v > t then
  1988. Class.ScrollIndex = t - v
  1989. end
  1990. else
  1991. Class.ScrollIndex = 0
  1992. end
  1993. else
  1994. Class.ScrollIndex = 0
  1995. end
  1996.  
  1997. if Class.UpdateCallback then
  1998. if Class.UpdateCallback(Class) == false then
  1999. return
  2000. end
  2001. end
  2002.  
  2003. local down = Class:CanScrollDown()
  2004. local up = Class:CanScrollUp()
  2005. if down ~= lastDown then
  2006. lastDown = down
  2007. ScrollDownFrame.Active = down
  2008. ScrollDownFrame.AutoButtonColor = down
  2009. local children = ScrollDownGraphic:GetChildren()
  2010. local style = down and scrollStyle or scrollStyle_ds
  2011. for i = 1,#children do
  2012. Create(children[i],style)
  2013. end
  2014. end
  2015. if up ~= lastUp then
  2016. lastUp = up
  2017. ScrollUpFrame.Active = up
  2018. ScrollUpFrame.AutoButtonColor = up
  2019. local children = ScrollUpGraphic:GetChildren()
  2020. local style = up and scrollStyle or scrollStyle_ds
  2021. for i = 1,#children do
  2022. Create(children[i],style)
  2023. end
  2024. end
  2025. ScrollThumbFrame.Visible = down or up
  2026. UpdateScrollThumb()
  2027. end
  2028. Class.Update = Update
  2029.  
  2030. SetZIndexOnChanged(ScrollFrame)
  2031.  
  2032. local scrollEventID = 0
  2033. ScrollDownFrame.MouseButton1Down:connect(function()
  2034. scrollEventID = tick()
  2035. local current = scrollEventID
  2036. local up_con
  2037. up_con = MouseDrag.MouseButton1Up:connect(function()
  2038. scrollEventID = tick()
  2039. MouseDrag.Parent = nil
  2040. ResetButtonColor(ScrollDownFrame)
  2041. up_con:disconnect(); drag = nil
  2042. end)
  2043. MouseDrag.Parent = GetScreen(ScrollFrame)
  2044. Class:ScrollDown()
  2045. wait(0.2) -- delay before auto scroll
  2046. while scrollEventID == current do
  2047. Class:ScrollDown()
  2048. if not Class:CanScrollDown() then break end
  2049. wait()
  2050. end
  2051. end)
  2052.  
  2053. ScrollDownFrame.MouseButton1Up:connect(function()
  2054. scrollEventID = tick()
  2055. end)
  2056.  
  2057. ScrollUpFrame.MouseButton1Down:connect(function()
  2058. scrollEventID = tick()
  2059. local current = scrollEventID
  2060. local up_con
  2061. up_con = MouseDrag.MouseButton1Up:connect(function()
  2062. scrollEventID = tick()
  2063. MouseDrag.Parent = nil
  2064. ResetButtonColor(ScrollUpFrame)
  2065. up_con:disconnect(); drag = nil
  2066. end)
  2067. MouseDrag.Parent = GetScreen(ScrollFrame)
  2068. Class:ScrollUp()
  2069. wait(0.2)
  2070. while scrollEventID == current do
  2071. Class:ScrollUp()
  2072. if not Class:CanScrollUp() then break end
  2073. wait()
  2074. end
  2075. end)
  2076.  
  2077. ScrollUpFrame.MouseButton1Up:connect(function()
  2078. scrollEventID = tick()
  2079. end)
  2080.  
  2081. if horizontal then
  2082. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  2083. scrollEventID = tick()
  2084. local current = scrollEventID
  2085. local up_con
  2086. up_con = MouseDrag.MouseButton1Up:connect(function()
  2087. scrollEventID = tick()
  2088. MouseDrag.Parent = nil
  2089. ResetButtonColor(ScrollUpFrame)
  2090. up_con:disconnect(); drag = nil
  2091. end)
  2092. MouseDrag.Parent = GetScreen(ScrollFrame)
  2093. if x > ScrollThumbFrame.AbsolutePosition.x then
  2094. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  2095. wait(0.2)
  2096. while scrollEventID == current do
  2097. if x < ScrollThumbFrame.AbsolutePosition.x + ScrollThumbFrame.AbsoluteSize.x then break end
  2098. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  2099. wait()
  2100. end
  2101. else
  2102. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  2103. wait(0.2)
  2104. while scrollEventID == current do
  2105. if x > ScrollThumbFrame.AbsolutePosition.x then break end
  2106. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  2107. wait()
  2108. end
  2109. end
  2110. end)
  2111. else
  2112. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  2113. scrollEventID = tick()
  2114. local current = scrollEventID
  2115. local up_con
  2116. up_con = MouseDrag.MouseButton1Up:connect(function()
  2117. scrollEventID = tick()
  2118. MouseDrag.Parent = nil
  2119. ResetButtonColor(ScrollUpFrame)
  2120. up_con:disconnect(); drag = nil
  2121. end)
  2122. MouseDrag.Parent = GetScreen(ScrollFrame)
  2123. if y > ScrollThumbFrame.AbsolutePosition.y then
  2124. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  2125. wait(0.2)
  2126. while scrollEventID == current do
  2127. if y < ScrollThumbFrame.AbsolutePosition.y + ScrollThumbFrame.AbsoluteSize.y then break end
  2128. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  2129. wait()
  2130. end
  2131. else
  2132. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  2133. wait(0.2)
  2134. while scrollEventID == current do
  2135. if y > ScrollThumbFrame.AbsolutePosition.y then break end
  2136. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  2137. wait()
  2138. end
  2139. end
  2140. end)
  2141. end
  2142.  
  2143. if horizontal then
  2144. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  2145. scrollEventID = tick()
  2146. local mouse_offset = x - ScrollThumbFrame.AbsolutePosition.x
  2147. local drag_con
  2148. local up_con
  2149. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  2150. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.x
  2151. local bar_drag = ScrollBarFrame.AbsoluteSize.x - ScrollThumbFrame.AbsoluteSize.x
  2152. local bar_abs_one = bar_abs_pos + bar_drag
  2153. x = x - mouse_offset
  2154. x = x < bar_abs_pos and bar_abs_pos or x > bar_abs_one and bar_abs_one or x
  2155. x = x - bar_abs_pos
  2156. Class:SetScrollPercent(x/(bar_drag))
  2157. end)
  2158. up_con = MouseDrag.MouseButton1Up:connect(function()
  2159. scrollEventID = tick()
  2160. MouseDrag.Parent = nil
  2161. ResetButtonColor(ScrollThumbFrame)
  2162. drag_con:disconnect(); drag_con = nil
  2163. up_con:disconnect(); drag = nil
  2164. end)
  2165. MouseDrag.Parent = GetScreen(ScrollFrame)
  2166. end)
  2167. else
  2168. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  2169. scrollEventID = tick()
  2170. local mouse_offset = y - ScrollThumbFrame.AbsolutePosition.y
  2171. local drag_con
  2172. local up_con
  2173. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  2174. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.y
  2175. local bar_drag = ScrollBarFrame.AbsoluteSize.y - ScrollThumbFrame.AbsoluteSize.y
  2176. local bar_abs_one = bar_abs_pos + bar_drag
  2177. y = y - mouse_offset
  2178. y = y < bar_abs_pos and bar_abs_pos or y > bar_abs_one and bar_abs_one or y
  2179. y = y - bar_abs_pos
  2180. Class:SetScrollPercent(y/(bar_drag))
  2181. end)
  2182. up_con = MouseDrag.MouseButton1Up:connect(function()
  2183. scrollEventID = tick()
  2184. MouseDrag.Parent = nil
  2185. ResetButtonColor(ScrollThumbFrame)
  2186. drag_con:disconnect(); drag_con = nil
  2187. up_con:disconnect(); drag = nil
  2188. end)
  2189. MouseDrag.Parent = GetScreen(ScrollFrame)
  2190. end)
  2191. end
  2192.  
  2193. function Class:Destroy()
  2194. ScrollFrame:Destroy()
  2195. MouseDrag:Destroy()
  2196. for k in pairs(Class) do
  2197. Class[k] = nil
  2198. end
  2199. setmetatable(Class,nil)
  2200. end
  2201.  
  2202. Update()
  2203.  
  2204. return Class
  2205. end
  2206. end
  2207.  
  2208. ----------------------------------------------------------------
  2209. ----------------------------------------------------------------
  2210. ----------------------------------------------------------------
  2211. ----------------------------------------------------------------
  2212.  
  2213. local MainFrame = Instance.new("Frame")
  2214. MainFrame.Name = "MainFrame"
  2215. MainFrame.Size = UDim2.new(1, -1 * ScrollBarWidth, 1, 0)
  2216. MainFrame.Position = UDim2.new(0, 0, 0, 0)
  2217. MainFrame.BackgroundTransparency = 1
  2218. MainFrame.ClipsDescendants = true
  2219. MainFrame.Parent = PropertiesFrame
  2220.  
  2221. ContentFrame = Instance.new("Frame")
  2222. ContentFrame.Name = "ContentFrame"
  2223. ContentFrame.Size = UDim2.new(1, 0, 0, 0)
  2224. ContentFrame.BackgroundTransparency = 1
  2225. ContentFrame.Parent = MainFrame
  2226.  
  2227. scrollBar = ScrollBar(false)
  2228. scrollBar.PageIncrement = 1
  2229. Create(scrollBar.GUI,{
  2230. Position = UDim2.new(1,-ScrollBarWidth,0,0);
  2231. Size = UDim2.new(0,ScrollBarWidth,1,0);
  2232. Parent = PropertiesFrame;
  2233. })
  2234.  
  2235. scrollBarH = ScrollBar(true)
  2236. scrollBarH.PageIncrement = ScrollBarWidth
  2237. Create(scrollBarH.GUI,{
  2238. Position = UDim2.new(0,0,1,-ScrollBarWidth);
  2239. Size = UDim2.new(1,-ScrollBarWidth,0,ScrollBarWidth);
  2240. Visible = false;
  2241. Parent = PropertiesFrame;
  2242. })
  2243.  
  2244. do
  2245. local listEntries = {}
  2246. local nameConnLookup = {}
  2247.  
  2248. function scrollBar.UpdateCallback(self)
  2249. scrollBar.TotalSpace = ContentFrame.AbsoluteSize.Y
  2250. scrollBar.VisibleSpace = MainFrame.AbsoluteSize.Y
  2251. ContentFrame.Position = UDim2.new(ContentFrame.Position.X.Scale,ContentFrame.Position.X.Offset,0,-1*scrollBar.ScrollIndex)
  2252. end
  2253.  
  2254. function scrollBarH.UpdateCallback(self)
  2255.  
  2256. end
  2257.  
  2258. MainFrame.Changed:connect(function(p)
  2259. if p == 'AbsoluteSize' then
  2260. scrollBarH.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.x)
  2261. scrollBarH:Update()
  2262. scrollBar.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.y)
  2263. scrollBar:Update()
  2264. end
  2265. end)
  2266.  
  2267. local wheelAmount = Row.Height
  2268. PropertiesFrame.MouseWheelForward:connect(function()
  2269. if scrollBar.VisibleSpace - 1 > wheelAmount then
  2270. scrollBar:ScrollTo(scrollBar.ScrollIndex - wheelAmount)
  2271. else
  2272. scrollBar:ScrollTo(scrollBar.ScrollIndex - scrollBar.VisibleSpace)
  2273. end
  2274. end)
  2275. PropertiesFrame.MouseWheelBackward:connect(function()
  2276. if scrollBar.VisibleSpace - 1 > wheelAmount then
  2277. scrollBar:ScrollTo(scrollBar.ScrollIndex + wheelAmount)
  2278. else
  2279. scrollBar:ScrollTo(scrollBar.ScrollIndex + scrollBar.VisibleSpace)
  2280. end
  2281. end)
  2282. end
  2283.  
  2284. scrollBar.VisibleSpace = math.ceil(MainFrame.AbsoluteSize.y)
  2285. scrollBar:Update()
  2286.  
  2287. showProperties(GetSelection())
  2288.  
  2289. bindSelectionChanged.Event:connect(function()
  2290. showProperties(GetSelection())
  2291. end)
  2292.  
  2293. bindSetAwait.Event:connect(function(obj)
  2294. if AwaitingObjectValue then
  2295. AwaitingObjectValue = false
  2296. local mySel = obj
  2297. if mySel then
  2298. pcall(function()
  2299. Set(AwaitingObjectObj, AwaitingObjectProp, mySel)
  2300. end)
  2301. end
  2302. end
  2303. end)
  2304.  
  2305. propertiesSearch.Changed:connect(function(prop)
  2306. if prop == "Text" then
  2307. showProperties(GetSelection())
  2308. end
  2309. end)
  2310.  
  2311. bindGetApi.OnInvoke = function()
  2312. return RbxApi
  2313. end
  2314.  
  2315. bindGetAwait.OnInvoke = function()
  2316. return AwaitingObjectValue
  2317. end
  2318. end))
  2319. ModuleScript3.Name = "RawApiJson"
  2320. ModuleScript3.Parent = LocalScript2
  2321. Frame4.Name = "Header"
  2322. Frame4.Parent = Frame1
  2323. Frame4.Position = UDim2.new(0, 0, 0, -36)
  2324. Frame4.Size = UDim2.new(1, 0, 0, 36)
  2325. Frame4.BackgroundColor = BrickColor.new("Lily white")
  2326. Frame4.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  2327. Frame4.BorderColor = BrickColor.new("Sand violet metallic")
  2328. Frame4.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  2329. Frame4.BorderSizePixel = 0
  2330. TextLabel5.Parent = Frame4
  2331. TextLabel5.Position = UDim2.new(0, 4, 0, 0)
  2332. TextLabel5.Transparency = 1
  2333. TextLabel5.Size = UDim2.new(1, -4, 0.5, 0)
  2334. TextLabel5.BackgroundTransparency = 1
  2335. TextLabel5.Font = Enum.Font.SourceSans
  2336. TextLabel5.FontSize = Enum.FontSize.Size14
  2337. TextLabel5.Text = "Properties"
  2338. TextLabel5.TextColor = BrickColor.new("Really black")
  2339. TextLabel5.TextColor3 = Color3.new(0, 0, 0)
  2340. TextLabel5.TextSize = 14
  2341. TextLabel5.TextXAlignment = Enum.TextXAlignment.Left
  2342. TextBox6.Parent = Frame4
  2343. TextBox6.Position = UDim2.new(0, 4, 0.5, 0)
  2344. TextBox6.Transparency = 0.80000001192093
  2345. TextBox6.Size = UDim2.new(1, -8, 0.5, -3)
  2346. TextBox6.BackgroundTransparency = 0.80000001192093
  2347. TextBox6.Font = Enum.Font.SourceSans
  2348. TextBox6.FontSize = Enum.FontSize.Size14
  2349. TextBox6.Text = "Search Properties"
  2350. TextBox6.TextColor = BrickColor.new("Really black")
  2351. TextBox6.TextColor3 = Color3.new(0, 0, 0)
  2352. TextBox6.TextSize = 14
  2353. TextBox6.TextXAlignment = Enum.TextXAlignment.Left
  2354. BindableFunction7.Name = "GetApi"
  2355. BindableFunction7.Parent = Frame1
  2356. BindableFunction8.Name = "GetAwaiting"
  2357. BindableFunction8.Parent = Frame1
  2358. BindableEvent9.Name = "SetAwaiting"
  2359. BindableEvent9.Parent = Frame1
  2360. Frame10.Name = "ExplorerPanel"
  2361. Frame10.Parent = ScreenGui0
  2362. Frame10.Position = UDim2.new(1, 0, 0, 0)
  2363. Frame10.Transparency = 0.10000000149012
  2364. Frame10.Size = UDim2.new(0, 300, 0.5, 0)
  2365. Frame10.BackgroundColor = BrickColor.new("Institutional white")
  2366. Frame10.BackgroundColor3 = Color3.new(1, 1, 1)
  2367. Frame10.BackgroundTransparency = 0.10000000149012
  2368. Frame10.BorderColor = BrickColor.new("Sand violet metallic")
  2369. Frame10.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  2370. Frame10.BorderSizePixel = 0
  2371. BindableEvent11.Name = "SelectionChanged"
  2372. BindableEvent11.Parent = Frame10
  2373. BindableFunction12.Name = "SetOption"
  2374. BindableFunction12.Parent = Frame10
  2375. BindableFunction13.Name = "SetSelection"
  2376. BindableFunction13.Parent = Frame10
  2377. BindableFunction14.Name = "GetOption"
  2378. BindableFunction14.Parent = Frame10
  2379. BindableFunction15.Name = "GetSelection"
  2380. BindableFunction15.Parent = Frame10
  2381. LocalScript16.Parent = Frame10
  2382. table.insert(cors,sandbox(LocalScript16,function()
  2383. -- initial states
  2384. local Option = {
  2385. -- can modify object parents in the hierarchy
  2386. Modifiable = false;
  2387. -- can select objects
  2388. Selectable = true;
  2389. }
  2390.  
  2391. -- MERELY
  2392.  
  2393. Option.Modifiable = true
  2394.  
  2395. -- END MERELY
  2396.  
  2397. -- general size of GUI objects, in pixels
  2398. local GUI_SIZE = 16
  2399. -- padding between items within each entry
  2400. local ENTRY_PADDING = 1
  2401. -- padding between each entry
  2402. local ENTRY_MARGIN = 1
  2403.  
  2404. local explorerPanel = script.Parent
  2405. local Input = game:GetService("UserInputService")
  2406. local HoldingCtrl = false
  2407. local HoldingShift = false
  2408.  
  2409. local DexOutput = Instance.new("Folder")
  2410. DexOutput.Name = "Output"
  2411. local DexOutputMain = Instance.new("ScreenGui", DexOutput)
  2412. DexOutputMain.Name = "Dex Output"
  2413.  
  2414. print = function(...)
  2415. local Obj = Instance.new("Dialog")
  2416. Obj.Parent = DexOutputMain
  2417. Obj.Name = ""
  2418. for i,v in pairs({...}) do
  2419. Obj.Name = Obj.Name .. tostring(v) .. " "
  2420. end
  2421. end
  2422.  
  2423. explorerPanel:WaitForChild("GetPrint").OnInvoke = function()
  2424. return print
  2425. end
  2426.  
  2427.  
  2428. --[[
  2429.  
  2430. # Explorer Panel
  2431.  
  2432. A GUI panel that displays the game hierarchy.
  2433.  
  2434.  
  2435. ## Selection Bindables
  2436.  
  2437. - `Function GetSelection ( )`
  2438.  
  2439. Returns an array of objects representing the objects currently
  2440. selected in the panel.
  2441.  
  2442. - `Function SetSelection ( Objects selection )`
  2443.  
  2444. Sets the objects that are selected in the panel. `selection` is an array
  2445. of objects.
  2446.  
  2447. - `Event SelectionChanged ( )`
  2448.  
  2449. Fired after the selection changes.
  2450.  
  2451.  
  2452. ## Option Bindables
  2453.  
  2454. - `Function GetOption ( string optionName )`
  2455.  
  2456. If `optionName` is given, returns the value of that option. Otherwise,
  2457. returns a table of options and their current values.
  2458.  
  2459. - `Function SetOption ( string optionName, bool value )`
  2460.  
  2461. Sets `optionName` to `value`.
  2462.  
  2463. Options:
  2464.  
  2465. - Modifiable
  2466.  
  2467. Whether objects can be modified by the panel.
  2468.  
  2469. Note that modifying objects depends on being able to select them. If
  2470. Selectable is false, then Actions will not be available. Reparenting
  2471. is still possible, but only for the dragged object.
  2472.  
  2473. - Selectable
  2474.  
  2475. Whether objects can be selected.
  2476.  
  2477. If Modifiable is false, then left-clicking will perform a drag
  2478. selection.
  2479.  
  2480. ## Updates
  2481.  
  2482. - 2013-09-18
  2483. - Fixed explorer icons to match studio explorer.
  2484.  
  2485. - 2013-09-14
  2486. - Added GetOption and SetOption bindables.
  2487. - Option: Modifiable; sets whether objects can be modified by the panel.
  2488. - Option: Selectable; sets whether objects can be selected.
  2489. - Slight modification to left-click selection behavior.
  2490. - Improved layout and scaling.
  2491.  
  2492. - 2013-09-13
  2493. - Added drag to reparent objects.
  2494. - Left-click to select/deselect object.
  2495. - Left-click and drag unselected object to reparent single object.
  2496. - Left-click and drag selected object to move reparent entire selection.
  2497. - Right-click while dragging to cancel.
  2498.  
  2499. - 2013-09-11
  2500. - Added explorer panel header with actions.
  2501. - Added Cut action.
  2502. - Added Copy action.
  2503. - Added Paste action.
  2504. - Added Delete action.
  2505. - Added drag selection.
  2506. - Left-click: Add to selection on drag.
  2507. - Right-click: Add to or remove from selection on drag.
  2508. - Ensured SelectionChanged fires only when the selection actually changes.
  2509. - Added documentation and change log.
  2510. - Fixed thread issue.
  2511.  
  2512. - 2013-09-09
  2513. - Added basic multi-selection.
  2514. - Left-click to set selection.
  2515. - Right-click to add to or remove from selection.
  2516. - Removed "Selection" ObjectValue.
  2517. - Added GetSelection BindableFunction.
  2518. - Added SetSelection BindableFunction.
  2519. - Added SelectionChanged BindableEvent.
  2520. - Changed font to SourceSans.
  2521.  
  2522. - 2013-08-31
  2523. - Improved GUI sizing based off of `GUI_SIZE` constant.
  2524. - Automatic font size detection.
  2525.  
  2526. - 2013-08-27
  2527. - Initial explorer panel.
  2528.  
  2529.  
  2530. ## Todo
  2531.  
  2532. - Sorting
  2533. - by ExplorerOrder
  2534. - by children
  2535. - by name
  2536. - Drag objects to reparent
  2537.  
  2538. ]]
  2539.  
  2540. local ENTRY_SIZE = GUI_SIZE + ENTRY_PADDING*2
  2541. local ENTRY_BOUND = ENTRY_SIZE + ENTRY_MARGIN
  2542. local HEADER_SIZE = ENTRY_SIZE*2
  2543.  
  2544. local FONT = 'SourceSans'
  2545. local FONT_SIZE do
  2546. local size = {8,9,10,11,12,14,18,24,36,48}
  2547. local s
  2548. local n = math.huge
  2549. for i = 1,#size do
  2550. if size[i] <= GUI_SIZE then
  2551. FONT_SIZE = i - 1
  2552. end
  2553. end
  2554. end
  2555.  
  2556. local GuiColor = {
  2557. Background = Color3.new(233/255, 233/255, 233/255);
  2558. Border = Color3.new(149/255, 149/255, 149/255);
  2559. Selected = Color3.new( 96/255, 140/255, 211/255);
  2560. BorderSelected = Color3.new( 86/255, 125/255, 188/255);
  2561. Text = Color3.new( 0/255, 0/255, 0/255);
  2562. TextDisabled = Color3.new(128/255, 128/255, 128/255);
  2563. TextSelected = Color3.new(255/255, 255/255, 255/255);
  2564. Button = Color3.new(221/255, 221/255, 221/255);
  2565. ButtonBorder = Color3.new(149/255, 149/255, 149/255);
  2566. ButtonSelected = Color3.new(255/255, 0/255, 0/255);
  2567. Field = Color3.new(255/255, 255/255, 255/255);
  2568. FieldBorder = Color3.new(191/255, 191/255, 191/255);
  2569. TitleBackground = Color3.new(178/255, 178/255, 178/255);
  2570. }
  2571.  
  2572. ----------------------------------------------------------------
  2573. ----------------------------------------------------------------
  2574. ----------------------------------------------------------------
  2575. ----------------------------------------------------------------
  2576. ---- Icon map constants
  2577.  
  2578. local MAP_ID = 483448923
  2579.  
  2580. -- Indices based on implementation of Icon function.
  2581. local ACTION_CUT = 160
  2582. local ACTION_COPY = 161
  2583. local ACTION_PASTE = 162
  2584. local ACTION_DELETE = 163
  2585. local ACTION_SORT = 164
  2586. local ACTION_CUT_OVER = 174
  2587. local ACTION_COPY_OVER = 175
  2588. local ACTION_PASTE_OVER = 176
  2589. local ACTION_DELETE_OVER = 177
  2590. local ACTION_SORT_OVER = 178
  2591. local ACTION_EDITQUICKACCESS = 190
  2592. local ACTION_FREEZE = 188
  2593. local ACTION_STARRED = 189
  2594. local ACTION_ADDSTAR = 184
  2595. local ACTION_ADDSTAR_OVER = 187
  2596.  
  2597. local NODE_COLLAPSED = 165
  2598. local NODE_EXPANDED = 166
  2599. local NODE_COLLAPSED_OVER = 179
  2600. local NODE_EXPANDED_OVER = 180
  2601.  
  2602. local ExplorerIndex = {
  2603. ["Accessory"] = 32;
  2604. ["Accoutrement"] = 32;
  2605. ["AdService"] = 73;
  2606. ["Animation"] = 60;
  2607. ["AnimationController"] = 60;
  2608. ["AnimationTrack"] = 60;
  2609. ["Animator"] = 60;
  2610. ["ArcHandles"] = 56;
  2611. ["AssetService"] = 72;
  2612. ["Attachment"] = 34;
  2613. ["Backpack"] = 20;
  2614. ["BadgeService"] = 75;
  2615. ["BallSocketConstraint"] = 89;
  2616. ["BillboardGui"] = 64;
  2617. ["BinaryStringValue"] = 4;
  2618. ["BindableEvent"] = 67;
  2619. ["BindableFunction"] = 66;
  2620. ["BlockMesh"] = 8;
  2621. ["BloomEffect"] = 90;
  2622. ["BlurEffect"] = 90;
  2623. ["BodyAngularVelocity"] = 14;
  2624. ["BodyForce"] = 14;
  2625. ["BodyGyro"] = 14;
  2626. ["BodyPosition"] = 14;
  2627. ["BodyThrust"] = 14;
  2628. ["BodyVelocity"] = 14;
  2629. ["BoolValue"] = 4;
  2630. ["BoxHandleAdornment"] = 54;
  2631. ["BrickColorValue"] = 4;
  2632. ["Camera"] = 5;
  2633. ["CFrameValue"] = 4;
  2634. ["CharacterMesh"] = 60;
  2635. ["Chat"] = 33;
  2636. ["ClickDetector"] = 41;
  2637. ["CollectionService"] = 30;
  2638. ["Color3Value"] = 4;
  2639. ["ColorCorrectionEffect"] = 90;
  2640. ["ConeHandleAdornment"] = 54;
  2641. ["Configuration"] = 58;
  2642. ["ContentProvider"] = 72;
  2643. ["ContextActionService"] = 41;
  2644. ["CoreGui"] = 46;
  2645. ["CoreScript"] = 18;
  2646. ["CornerWedgePart"] = 1;
  2647. ["CustomEvent"] = 4;
  2648. ["CustomEventReceiver"] = 4;
  2649. ["CylinderHandleAdornment"] = 54;
  2650. ["CylinderMesh"] = 8;
  2651. ["CylindricalConstraint"] = 89;
  2652. ["Debris"] = 30;
  2653. ["Decal"] = 7;
  2654. ["Dialog"] = 62;
  2655. ["DialogChoice"] = 63;
  2656. ["DoubleConstrainedValue"] = 4;
  2657. ["Explosion"] = 36;
  2658. ["FileMesh"] = 8;
  2659. ["Fire"] = 61;
  2660. ["Flag"] = 38;
  2661. ["FlagStand"] = 39;
  2662. ["FloorWire"] = 4;
  2663. ["Folder"] = 70;
  2664. ["ForceField"] = 37;
  2665. ["Frame"] = 48;
  2666. ["GamePassService"] = 19;
  2667. ["Glue"] = 34;
  2668. ["GuiButton"] = 52;
  2669. ["GuiMain"] = 47;
  2670. ["GuiService"] = 47;
  2671. ["Handles"] = 53;
  2672. ["HapticService"] = 84;
  2673. ["Hat"] = 45;
  2674. ["HingeConstraint"] = 89;
  2675. ["Hint"] = 33;
  2676. ["HopperBin"] = 22;
  2677. ["HttpService"] = 76;
  2678. ["Humanoid"] = 9;
  2679. ["ImageButton"] = 52;
  2680. ["ImageLabel"] = 49;
  2681. ["InsertService"] = 72;
  2682. ["IntConstrainedValue"] = 4;
  2683. ["IntValue"] = 4;
  2684. ["JointInstance"] = 34;
  2685. ["JointsService"] = 34;
  2686. ["Keyframe"] = 60;
  2687. ["KeyframeSequence"] = 60;
  2688. ["KeyframeSequenceProvider"] = 60;
  2689. ["Lighting"] = 13;
  2690. ["LineHandleAdornment"] = 54;
  2691. ["LocalScript"] = 18;
  2692. ["LogService"] = 87;
  2693. ["MarketplaceService"] = 46;
  2694. ["Message"] = 33;
  2695. ["Model"] = 2;
  2696. ["ModuleScript"] = 71;
  2697. ["Motor"] = 34;
  2698. ["Motor6D"] = 34;
  2699. ["MoveToConstraint"] = 89;
  2700. ["NegateOperation"] = 78;
  2701. ["NetworkClient"] = 16;
  2702. ["NetworkReplicator"] = 29;
  2703. ["NetworkServer"] = 15;
  2704. ["NumberValue"] = 4;
  2705. ["ObjectValue"] = 4;
  2706. ["Pants"] = 44;
  2707. ["ParallelRampPart"] = 1;
  2708. ["Part"] = 1;
  2709. ["ParticleEmitter"] = 69;
  2710. ["PartPairLasso"] = 57;
  2711. ["PathfindingService"] = 37;
  2712. ["Platform"] = 35;
  2713. ["Player"] = 12;
  2714. ["PlayerGui"] = 46;
  2715. ["Players"] = 21;
  2716. ["PlayerScripts"] = 82;
  2717. ["PointLight"] = 13;
  2718. ["PointsService"] = 83;
  2719. ["Pose"] = 60;
  2720. ["PrismaticConstraint"] = 89;
  2721. ["PrismPart"] = 1;
  2722. ["PyramidPart"] = 1;
  2723. ["RayValue"] = 4;
  2724. ["ReflectionMetadata"] = 86;
  2725. ["ReflectionMetadataCallbacks"] = 86;
  2726. ["ReflectionMetadataClass"] = 86;
  2727. ["ReflectionMetadataClasses"] = 86;
  2728. ["ReflectionMetadataEnum"] = 86;
  2729. ["ReflectionMetadataEnumItem"] = 86;
  2730. ["ReflectionMetadataEnums"] = 86;
  2731. ["ReflectionMetadataEvents"] = 86;
  2732. ["ReflectionMetadataFunctions"] = 86;
  2733. ["ReflectionMetadataMember"] = 86;
  2734. ["ReflectionMetadataProperties"] = 86;
  2735. ["ReflectionMetadataYieldFunctions"] = 86;
  2736. ["RemoteEvent"] = 80;
  2737. ["RemoteFunction"] = 79;
  2738. ["ReplicatedFirst"] = 72;
  2739. ["ReplicatedStorage"] = 72;
  2740. ["RightAngleRampPart"] = 1;
  2741. ["RocketPropulsion"] = 14;
  2742. ["RodConstraint"] = 89;
  2743. ["RopeConstraint"] = 89;
  2744. ["Rotate"] = 34;
  2745. ["RotateP"] = 34;
  2746. ["RotateV"] = 34;
  2747. ["RunService"] = 66;
  2748. ["ScreenGui"] = 47;
  2749. ["Script"] = 6;
  2750. ["ScrollingFrame"] = 48;
  2751. ["Seat"] = 35;
  2752. ["Selection"] = 55;
  2753. ["SelectionBox"] = 54;
  2754. ["SelectionPartLasso"] = 57;
  2755. ["SelectionPointLasso"] = 57;
  2756. ["SelectionSphere"] = 54;
  2757. ["ServerScriptService"] = 0;
  2758. ["ServerStorage"] = 74;
  2759. ["Shirt"] = 43;
  2760. ["ShirtGraphic"] = 40;
  2761. ["SkateboardPlatform"] = 35;
  2762. ["Sky"] = 28;
  2763. ["SlidingBallConstraint"] = 89;
  2764. ["Smoke"] = 59;
  2765. ["Snap"] = 34;
  2766. ["Sound"] = 11;
  2767. ["SoundService"] = 31;
  2768. ["Sparkles"] = 42;
  2769. ["SpawnLocation"] = 25;
  2770. ["SpecialMesh"] = 8;
  2771. ["SphereHandleAdornment"] = 54;
  2772. ["SpotLight"] = 13;
  2773. ["SpringConstraint"] = 89;
  2774. ["StarterCharacterScripts"] = 82;
  2775. ["StarterGear"] = 20;
  2776. ["StarterGui"] = 46;
  2777. ["StarterPack"] = 20;
  2778. ["StarterPlayer"] = 88;
  2779. ["StarterPlayerScripts"] = 82;
  2780. ["Status"] = 2;
  2781. ["StringValue"] = 4;
  2782. ["SunRaysEffect"] = 90;
  2783. ["SurfaceGui"] = 64;
  2784. ["SurfaceLight"] = 13;
  2785. ["SurfaceSelection"] = 55;
  2786. ["Team"] = 24;
  2787. ["Teams"] = 23;
  2788. ["TeleportService"] = 81;
  2789. ["Terrain"] = 65;
  2790. ["TerrainRegion"] = 65;
  2791. ["TestService"] = 68;
  2792. ["TextBox"] = 51;
  2793. ["TextButton"] = 51;
  2794. ["TextLabel"] = 50;
  2795. ["Texture"] = 10;
  2796. ["TextureTrail"] = 4;
  2797. ["Tool"] = 17;
  2798. ["TouchTransmitter"] = 37;
  2799. ["TrussPart"] = 1;
  2800. ["UnionOperation"] = 77;
  2801. ["UserInputService"] = 84;
  2802. ["Vector3Value"] = 4;
  2803. ["VehicleSeat"] = 35;
  2804. ["VelocityMotor"] = 34;
  2805. ["WedgePart"] = 1;
  2806. ["Weld"] = 34;
  2807. ["Workspace"] = 19;
  2808. }
  2809.  
  2810. ----------------------------------------------------------------
  2811. ----------------------------------------------------------------
  2812. ----------------------------------------------------------------
  2813. ----------------------------------------------------------------
  2814. ----------------------------------------------------------------
  2815.  
  2816. function Create(ty,data)
  2817. local obj
  2818. if type(ty) == 'string' then
  2819. obj = Instance.new(ty)
  2820. else
  2821. obj = ty
  2822. end
  2823. for k, v in pairs(data) do
  2824. if type(k) == 'number' then
  2825. v.Parent = obj
  2826. else
  2827. obj[k] = v
  2828. end
  2829. end
  2830. return obj
  2831. end
  2832.  
  2833. local barActive = false
  2834. local activeOptions = {}
  2835.  
  2836. function createDDown(dBut, callback,...)
  2837. if barActive then
  2838. for i,v in pairs(activeOptions) do
  2839. v:Destroy()
  2840. end
  2841. activeOptions = {}
  2842. barActive = false
  2843. return
  2844. else
  2845. barActive = true
  2846. end
  2847. local slots = {...}
  2848. local base = dBut
  2849. for i,v in pairs(slots) do
  2850. local newOption = base:Clone()
  2851. newOption.ZIndex = 5
  2852. newOption.Name = "Option "..tostring(i)
  2853. newOption.Parent = base.Parent.Parent.Parent
  2854. newOption.BackgroundTransparency = 0
  2855. newOption.ZIndex = 2
  2856. table.insert(activeOptions,newOption)
  2857. newOption.Position = UDim2.new(-0.4, dBut.Position.X.Offset, dBut.Position.Y.Scale, dBut.Position.Y.Offset + (#activeOptions * dBut.Size.Y.Offset))
  2858. newOption.Text = slots[i]
  2859. newOption.MouseButton1Down:connect(function()
  2860. dBut.Text = slots[i]
  2861. callback(slots[i])
  2862. for i,v in pairs(activeOptions) do
  2863. v:Destroy()
  2864. end
  2865. activeOptions = {}
  2866. barActive = false
  2867. end)
  2868. end
  2869. end
  2870.  
  2871. -- Connects a function to an event such that it fires asynchronously
  2872. function Connect(event,func)
  2873. return event:connect(function(...)
  2874. local a = {...}
  2875. spawn(function() func(unpack(a)) end)
  2876. end)
  2877. end
  2878.  
  2879. -- returns the ascendant ScreenGui of an object
  2880. function GetScreen(screen)
  2881. if screen == nil then return nil end
  2882. while not screen:IsA("ScreenGui") do
  2883. screen = screen.Parent
  2884. if screen == nil then return nil end
  2885. end
  2886. return screen
  2887. end
  2888.  
  2889. do
  2890. local ZIndexLock = {}
  2891. -- Sets the ZIndex of an object and its descendants. Objects are locked so
  2892. -- that SetZIndexOnChanged doesn't spawn multiple threads that set the
  2893. -- ZIndex of the same object.
  2894. function SetZIndex(object,z)
  2895. if not ZIndexLock[object] then
  2896. ZIndexLock[object] = true
  2897. if object:IsA'GuiObject' then
  2898. object.ZIndex = z
  2899. end
  2900. local children = object:GetChildren()
  2901. for i = 1,#children do
  2902. SetZIndex(children[i],z)
  2903. end
  2904. ZIndexLock[object] = nil
  2905. end
  2906. end
  2907.  
  2908. function SetZIndexOnChanged(object)
  2909. return object.Changed:connect(function(p)
  2910. if p == "ZIndex" then
  2911. SetZIndex(object,object.ZIndex)
  2912. end
  2913. end)
  2914. end
  2915. end
  2916.  
  2917. ---- IconMap ----
  2918. -- Image size: 256px x 256px
  2919. -- Icon size: 16px x 16px
  2920. -- Padding between each icon: 2px
  2921. -- Padding around image edge: 1px
  2922. -- Total icons: 14 x 14 (196)
  2923. local Icon do
  2924. local iconMap = 'http://www.roblox.com/asset/?id=' .. MAP_ID
  2925. game:GetService('ContentProvider'):Preload(iconMap)
  2926. local iconDehash do
  2927. -- 14 x 14, 0-based input, 0-based output
  2928. local f=math.floor
  2929. function iconDehash(h)
  2930. return f(h/14%14),f(h%14)
  2931. end
  2932. end
  2933.  
  2934. function Icon(IconFrame,index)
  2935. local row,col = iconDehash(index)
  2936. local mapSize = Vector2.new(256,256)
  2937. local pad,border = 2,1
  2938. local iconSize = 16
  2939.  
  2940. local class = 'Frame'
  2941. if type(IconFrame) == 'string' then
  2942. class = IconFrame
  2943. IconFrame = nil
  2944. end
  2945.  
  2946. if not IconFrame then
  2947. IconFrame = Create(class,{
  2948. Name = "Icon";
  2949. BackgroundTransparency = 1;
  2950. ClipsDescendants = true;
  2951. Create('ImageLabel',{
  2952. Name = "IconMap";
  2953. Active = false;
  2954. BackgroundTransparency = 1;
  2955. Image = iconMap;
  2956. Size = UDim2.new(mapSize.x/iconSize,0,mapSize.y/iconSize,0);
  2957. });
  2958. })
  2959. end
  2960.  
  2961. IconFrame.IconMap.Position = UDim2.new(-col - (pad*(col+1) + border)/iconSize,0,-row - (pad*(row+1) + border)/iconSize,0)
  2962. return IconFrame
  2963. end
  2964. end
  2965.  
  2966. ----------------------------------------------------------------
  2967. ----------------------------------------------------------------
  2968. ----------------------------------------------------------------
  2969. ----------------------------------------------------------------
  2970. ---- ScrollBar
  2971. do
  2972. -- AutoButtonColor doesn't always reset properly
  2973. local function ResetButtonColor(button)
  2974. local active = button.Active
  2975. button.Active = not active
  2976. button.Active = active
  2977. end
  2978.  
  2979. local function ArrowGraphic(size,dir,scaled,template)
  2980. local Frame = Create('Frame',{
  2981. Name = "Arrow Graphic";
  2982. BorderSizePixel = 0;
  2983. Size = UDim2.new(0,size,0,size);
  2984. Transparency = 1;
  2985. })
  2986. if not template then
  2987. template = Instance.new("Frame")
  2988. template.BorderSizePixel = 0
  2989. end
  2990.  
  2991. local transform
  2992. if dir == nil or dir == 'Up' then
  2993. function transform(p,s) return p,s end
  2994. elseif dir == 'Down' then
  2995. function transform(p,s) return UDim2.new(0,p.X.Offset,0,size-p.Y.Offset-1),s end
  2996. elseif dir == 'Left' then
  2997. function transform(p,s) return UDim2.new(0,p.Y.Offset,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  2998. elseif dir == 'Right' then
  2999. function transform(p,s) return UDim2.new(0,size-p.Y.Offset-1,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  3000. end
  3001.  
  3002. local scale
  3003. if scaled then
  3004. function scale(p,s) return UDim2.new(p.X.Offset/size,0,p.Y.Offset/size,0),UDim2.new(s.X.Offset/size,0,s.Y.Offset/size,0) end
  3005. else
  3006. function scale(p,s) return p,s end
  3007. end
  3008.  
  3009. local o = math.floor(size/4)
  3010. if size%2 == 0 then
  3011. local n = size/2-1
  3012. for i = 0,n do
  3013. local t = template:Clone()
  3014. local p,s = scale(transform(
  3015. UDim2.new(0,n-i,0,o+i),
  3016. UDim2.new(0,(i+1)*2,0,1)
  3017. ))
  3018. t.Position = p
  3019. t.Size = s
  3020. t.Parent = Frame
  3021. end
  3022. else
  3023. local n = (size-1)/2
  3024. for i = 0,n do
  3025. local t = template:Clone()
  3026. local p,s = scale(transform(
  3027. UDim2.new(0,n-i,0,o+i),
  3028. UDim2.new(0,i*2+1,0,1)
  3029. ))
  3030. t.Position = p
  3031. t.Size = s
  3032. t.Parent = Frame
  3033. end
  3034. end
  3035. if size%4 > 1 then
  3036. local t = template:Clone()
  3037. local p,s = scale(transform(
  3038. UDim2.new(0,0,0,size-o-1),
  3039. UDim2.new(0,size,0,1)
  3040. ))
  3041. t.Position = p
  3042. t.Size = s
  3043. t.Parent = Frame
  3044. end
  3045. return Frame
  3046. end
  3047.  
  3048.  
  3049. local function GripGraphic(size,dir,spacing,scaled,template)
  3050. local Frame = Create('Frame',{
  3051. Name = "Grip Graphic";
  3052. BorderSizePixel = 0;
  3053. Size = UDim2.new(0,size.x,0,size.y);
  3054. Transparency = 1;
  3055. })
  3056. if not template then
  3057. template = Instance.new("Frame")
  3058. template.BorderSizePixel = 0
  3059. end
  3060.  
  3061. spacing = spacing or 2
  3062.  
  3063. local scale
  3064. if scaled then
  3065. function scale(p) return UDim2.new(p.X.Offset/size.x,0,p.Y.Offset/size.y,0) end
  3066. else
  3067. function scale(p) return p end
  3068. end
  3069.  
  3070. if dir == 'Vertical' then
  3071. for i=0,size.x-1,spacing do
  3072. local t = template:Clone()
  3073. t.Size = scale(UDim2.new(0,1,0,size.y))
  3074. t.Position = scale(UDim2.new(0,i,0,0))
  3075. t.Parent = Frame
  3076. end
  3077. elseif dir == nil or dir == 'Horizontal' then
  3078. for i=0,size.y-1,spacing do
  3079. local t = template:Clone()
  3080. t.Size = scale(UDim2.new(0,size.x,0,1))
  3081. t.Position = scale(UDim2.new(0,0,0,i))
  3082. t.Parent = Frame
  3083. end
  3084. end
  3085.  
  3086. return Frame
  3087. end
  3088.  
  3089. local mt = {
  3090. __index = {
  3091. GetScrollPercent = function(self)
  3092. return self.ScrollIndex/(self.TotalSpace-self.VisibleSpace)
  3093. end;
  3094. CanScrollDown = function(self)
  3095. return self.ScrollIndex + self.VisibleSpace < self.TotalSpace
  3096. end;
  3097. CanScrollUp = function(self)
  3098. return self.ScrollIndex > 0
  3099. end;
  3100. ScrollDown = function(self)
  3101. self.ScrollIndex = self.ScrollIndex + self.PageIncrement
  3102. self:Update()
  3103. end;
  3104. ScrollUp = function(self)
  3105. self.ScrollIndex = self.ScrollIndex - self.PageIncrement
  3106. self:Update()
  3107. end;
  3108. ScrollTo = function(self,index)
  3109. self.ScrollIndex = index
  3110. self:Update()
  3111. end;
  3112. SetScrollPercent = function(self,percent)
  3113. self.ScrollIndex = math.floor((self.TotalSpace - self.VisibleSpace)*percent + 0.5)
  3114. self:Update()
  3115. end;
  3116. };
  3117. }
  3118. mt.__index.CanScrollRight = mt.__index.CanScrollDown
  3119. mt.__index.CanScrollLeft = mt.__index.CanScrollUp
  3120. mt.__index.ScrollLeft = mt.__index.ScrollUp
  3121. mt.__index.ScrollRight = mt.__index.ScrollDown
  3122.  
  3123. function ScrollBar(horizontal)
  3124. -- create row scroll bar
  3125. local ScrollFrame = Create('Frame',{
  3126. Name = "ScrollFrame";
  3127. Position = horizontal and UDim2.new(0,0,1,-GUI_SIZE) or UDim2.new(1,-GUI_SIZE,0,0);
  3128. Size = horizontal and UDim2.new(1,0,0,GUI_SIZE) or UDim2.new(0,GUI_SIZE,1,0);
  3129. BackgroundTransparency = 1;
  3130. Create('ImageButton',{
  3131. Name = "ScrollDown";
  3132. Position = horizontal and UDim2.new(1,-GUI_SIZE,0,0) or UDim2.new(0,0,1,-GUI_SIZE);
  3133. Size = UDim2.new(0, GUI_SIZE, 0, GUI_SIZE);
  3134. BackgroundColor3 = GuiColor.Button;
  3135. BorderColor3 = GuiColor.Border;
  3136. --BorderSizePixel = 0;
  3137. });
  3138. Create('ImageButton',{
  3139. Name = "ScrollUp";
  3140. Size = UDim2.new(0, GUI_SIZE, 0, GUI_SIZE);
  3141. BackgroundColor3 = GuiColor.Button;
  3142. BorderColor3 = GuiColor.Border;
  3143. --BorderSizePixel = 0;
  3144. });
  3145. Create('ImageButton',{
  3146. Name = "ScrollBar";
  3147. Size = horizontal and UDim2.new(1,-GUI_SIZE*2,1,0) or UDim2.new(1,0,1,-GUI_SIZE*2);
  3148. Position = horizontal and UDim2.new(0,GUI_SIZE,0,0) or UDim2.new(0,0,0,GUI_SIZE);
  3149. AutoButtonColor = false;
  3150. BackgroundColor3 = Color3.new(0.94902, 0.94902, 0.94902);
  3151. BorderColor3 = GuiColor.Border;
  3152. --BorderSizePixel = 0;
  3153. Create('ImageButton',{
  3154. Name = "ScrollThumb";
  3155. AutoButtonColor = false;
  3156. Size = UDim2.new(0, GUI_SIZE, 0, GUI_SIZE);
  3157. BackgroundColor3 = GuiColor.Button;
  3158. BorderColor3 = GuiColor.Border;
  3159. --BorderSizePixel = 0;
  3160. });
  3161. });
  3162. })
  3163.  
  3164. local graphicTemplate = Create('Frame',{
  3165. Name="Graphic";
  3166. BorderSizePixel = 0;
  3167. BackgroundColor3 = GuiColor.Border;
  3168. })
  3169. local graphicSize = GUI_SIZE/2
  3170.  
  3171. local ScrollDownFrame = ScrollFrame.ScrollDown
  3172. local ScrollDownGraphic = ArrowGraphic(graphicSize,horizontal and 'Right' or 'Down',true,graphicTemplate)
  3173. ScrollDownGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  3174. ScrollDownGraphic.Parent = ScrollDownFrame
  3175. local ScrollUpFrame = ScrollFrame.ScrollUp
  3176. local ScrollUpGraphic = ArrowGraphic(graphicSize,horizontal and 'Left' or 'Up',true,graphicTemplate)
  3177. ScrollUpGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  3178. ScrollUpGraphic.Parent = ScrollUpFrame
  3179. local ScrollBarFrame = ScrollFrame.ScrollBar
  3180. local ScrollThumbFrame = ScrollBarFrame.ScrollThumb
  3181. do
  3182. local size = GUI_SIZE*3/8
  3183. local Decal = GripGraphic(Vector2.new(size,size),horizontal and 'Vertical' or 'Horizontal',2,graphicTemplate)
  3184. Decal.Position = UDim2.new(0.5,-size/2,0.5,-size/2)
  3185. Decal.Parent = ScrollThumbFrame
  3186. end
  3187.  
  3188. local Class = setmetatable({
  3189. GUI = ScrollFrame;
  3190. ScrollIndex = 0;
  3191. VisibleSpace = 0;
  3192. TotalSpace = 0;
  3193. PageIncrement = 1;
  3194. },mt)
  3195.  
  3196. local UpdateScrollThumb
  3197. if horizontal then
  3198. function UpdateScrollThumb()
  3199. ScrollThumbFrame.Size = UDim2.new(Class.VisibleSpace/Class.TotalSpace,0,0,GUI_SIZE)
  3200. if ScrollThumbFrame.AbsoluteSize.x < GUI_SIZE then
  3201. ScrollThumbFrame.Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE)
  3202. end
  3203. local barSize = ScrollBarFrame.AbsoluteSize.x
  3204. ScrollThumbFrame.Position = UDim2.new(Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.x)/barSize,0,0,0)
  3205. end
  3206. else
  3207. function UpdateScrollThumb()
  3208. ScrollThumbFrame.Size = UDim2.new(0,GUI_SIZE,Class.VisibleSpace/Class.TotalSpace,0)
  3209. if ScrollThumbFrame.AbsoluteSize.y < GUI_SIZE then
  3210. ScrollThumbFrame.Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE)
  3211. end
  3212. local barSize = ScrollBarFrame.AbsoluteSize.y
  3213. ScrollThumbFrame.Position = UDim2.new(0,0,Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.y)/barSize,0)
  3214. end
  3215. end
  3216.  
  3217. local lastDown
  3218. local lastUp
  3219. local scrollStyle = {BackgroundColor3=GuiColor.Border,BackgroundTransparency=0}
  3220. local scrollStyle_ds = {BackgroundColor3=GuiColor.Border,BackgroundTransparency=0.7}
  3221.  
  3222. local function Update()
  3223. local t = Class.TotalSpace
  3224. local v = Class.VisibleSpace
  3225. local s = Class.ScrollIndex
  3226. if v <= t then
  3227. if s > 0 then
  3228. if s + v > t then
  3229. Class.ScrollIndex = t - v
  3230. end
  3231. else
  3232. Class.ScrollIndex = 0
  3233. end
  3234. else
  3235. Class.ScrollIndex = 0
  3236. end
  3237.  
  3238. if Class.UpdateCallback then
  3239. if Class.UpdateCallback(Class) == false then
  3240. return
  3241. end
  3242. end
  3243.  
  3244. local down = Class:CanScrollDown()
  3245. local up = Class:CanScrollUp()
  3246. if down ~= lastDown then
  3247. lastDown = down
  3248. ScrollDownFrame.Active = down
  3249. ScrollDownFrame.AutoButtonColor = down
  3250. local children = ScrollDownGraphic:GetChildren()
  3251. local style = down and scrollStyle or scrollStyle_ds
  3252. for i = 1,#children do
  3253. Create(children[i],style)
  3254. end
  3255. end
  3256. if up ~= lastUp then
  3257. lastUp = up
  3258. ScrollUpFrame.Active = up
  3259. ScrollUpFrame.AutoButtonColor = up
  3260. local children = ScrollUpGraphic:GetChildren()
  3261. local style = up and scrollStyle or scrollStyle_ds
  3262. for i = 1,#children do
  3263. Create(children[i],style)
  3264. end
  3265. end
  3266. ScrollThumbFrame.Visible = down or up
  3267. UpdateScrollThumb()
  3268. end
  3269. Class.Update = Update
  3270.  
  3271. SetZIndexOnChanged(ScrollFrame)
  3272.  
  3273. local MouseDrag = Create('ImageButton',{
  3274. Name = "MouseDrag";
  3275. Position = UDim2.new(-0.25,0,-0.25,0);
  3276. Size = UDim2.new(1.5,0,1.5,0);
  3277. Transparency = 1;
  3278. AutoButtonColor = false;
  3279. Active = true;
  3280. ZIndex = 10;
  3281. })
  3282.  
  3283. local scrollEventID = 0
  3284. ScrollDownFrame.MouseButton1Down:connect(function()
  3285. scrollEventID = tick()
  3286. local current = scrollEventID
  3287. local up_con
  3288. up_con = MouseDrag.MouseButton1Up:connect(function()
  3289. scrollEventID = tick()
  3290. MouseDrag.Parent = nil
  3291. ResetButtonColor(ScrollDownFrame)
  3292. up_con:disconnect(); drag = nil
  3293. end)
  3294. MouseDrag.Parent = GetScreen(ScrollFrame)
  3295. Class:ScrollDown()
  3296. wait(0.2) -- delay before auto scroll
  3297. while scrollEventID == current do
  3298. Class:ScrollDown()
  3299. if not Class:CanScrollDown() then break end
  3300. wait()
  3301. end
  3302. end)
  3303.  
  3304. ScrollDownFrame.MouseButton1Up:connect(function()
  3305. scrollEventID = tick()
  3306. end)
  3307.  
  3308. ScrollUpFrame.MouseButton1Down:connect(function()
  3309. scrollEventID = tick()
  3310. local current = scrollEventID
  3311. local up_con
  3312. up_con = MouseDrag.MouseButton1Up:connect(function()
  3313. scrollEventID = tick()
  3314. MouseDrag.Parent = nil
  3315. ResetButtonColor(ScrollUpFrame)
  3316. up_con:disconnect(); drag = nil
  3317. end)
  3318. MouseDrag.Parent = GetScreen(ScrollFrame)
  3319. Class:ScrollUp()
  3320. wait(0.2)
  3321. while scrollEventID == current do
  3322. Class:ScrollUp()
  3323. if not Class:CanScrollUp() then break end
  3324. wait()
  3325. end
  3326. end)
  3327.  
  3328. ScrollUpFrame.MouseButton1Up:connect(function()
  3329. scrollEventID = tick()
  3330. end)
  3331.  
  3332. if horizontal then
  3333. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  3334. scrollEventID = tick()
  3335. local current = scrollEventID
  3336. local up_con
  3337. up_con = MouseDrag.MouseButton1Up:connect(function()
  3338. scrollEventID = tick()
  3339. MouseDrag.Parent = nil
  3340. ResetButtonColor(ScrollUpFrame)
  3341. up_con:disconnect(); drag = nil
  3342. end)
  3343. MouseDrag.Parent = GetScreen(ScrollFrame)
  3344. if x > ScrollThumbFrame.AbsolutePosition.x then
  3345. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  3346. wait(0.2)
  3347. while scrollEventID == current do
  3348. if x < ScrollThumbFrame.AbsolutePosition.x + ScrollThumbFrame.AbsoluteSize.x then break end
  3349. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  3350. wait()
  3351. end
  3352. else
  3353. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  3354. wait(0.2)
  3355. while scrollEventID == current do
  3356. if x > ScrollThumbFrame.AbsolutePosition.x then break end
  3357. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  3358. wait()
  3359. end
  3360. end
  3361. end)
  3362. else
  3363. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  3364. scrollEventID = tick()
  3365. local current = scrollEventID
  3366. local up_con
  3367. up_con = MouseDrag.MouseButton1Up:connect(function()
  3368. scrollEventID = tick()
  3369. MouseDrag.Parent = nil
  3370. ResetButtonColor(ScrollUpFrame)
  3371. up_con:disconnect(); drag = nil
  3372. end)
  3373. MouseDrag.Parent = GetScreen(ScrollFrame)
  3374. if y > ScrollThumbFrame.AbsolutePosition.y then
  3375. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  3376. wait(0.2)
  3377. while scrollEventID == current do
  3378. if y < ScrollThumbFrame.AbsolutePosition.y + ScrollThumbFrame.AbsoluteSize.y then break end
  3379. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  3380. wait()
  3381. end
  3382. else
  3383. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  3384. wait(0.2)
  3385. while scrollEventID == current do
  3386. if y > ScrollThumbFrame.AbsolutePosition.y then break end
  3387. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  3388. wait()
  3389. end
  3390. end
  3391. end)
  3392. end
  3393.  
  3394. if horizontal then
  3395. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  3396. scrollEventID = tick()
  3397. local mouse_offset = x - ScrollThumbFrame.AbsolutePosition.x
  3398. local drag_con
  3399. local up_con
  3400. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  3401. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.x
  3402. local bar_drag = ScrollBarFrame.AbsoluteSize.x - ScrollThumbFrame.AbsoluteSize.x
  3403. local bar_abs_one = bar_abs_pos + bar_drag
  3404. x = x - mouse_offset
  3405. x = x < bar_abs_pos and bar_abs_pos or x > bar_abs_one and bar_abs_one or x
  3406. x = x - bar_abs_pos
  3407. Class:SetScrollPercent(x/(bar_drag))
  3408. end)
  3409. up_con = MouseDrag.MouseButton1Up:connect(function()
  3410. scrollEventID = tick()
  3411. MouseDrag.Parent = nil
  3412. ResetButtonColor(ScrollThumbFrame)
  3413. drag_con:disconnect(); drag_con = nil
  3414. up_con:disconnect(); drag = nil
  3415. end)
  3416. MouseDrag.Parent = GetScreen(ScrollFrame)
  3417. end)
  3418. else
  3419. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  3420. scrollEventID = tick()
  3421. local mouse_offset = y - ScrollThumbFrame.AbsolutePosition.y
  3422. local drag_con
  3423. local up_con
  3424. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  3425. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.y
  3426. local bar_drag = ScrollBarFrame.AbsoluteSize.y - ScrollThumbFrame.AbsoluteSize.y
  3427. local bar_abs_one = bar_abs_pos + bar_drag
  3428. y = y - mouse_offset
  3429. y = y < bar_abs_pos and bar_abs_pos or y > bar_abs_one and bar_abs_one or y
  3430. y = y - bar_abs_pos
  3431. Class:SetScrollPercent(y/(bar_drag))
  3432. end)
  3433. up_con = MouseDrag.MouseButton1Up:connect(function()
  3434. scrollEventID = tick()
  3435. MouseDrag.Parent = nil
  3436. ResetButtonColor(ScrollThumbFrame)
  3437. drag_con:disconnect(); drag_con = nil
  3438. up_con:disconnect(); drag = nil
  3439. end)
  3440. MouseDrag.Parent = GetScreen(ScrollFrame)
  3441. end)
  3442. end
  3443.  
  3444. function Class:Destroy()
  3445. ScrollFrame:Destroy()
  3446. MouseDrag:Destroy()
  3447. for k in pairs(Class) do
  3448. Class[k] = nil
  3449. end
  3450. setmetatable(Class,nil)
  3451. end
  3452.  
  3453. Update()
  3454.  
  3455. return Class
  3456. end
  3457. end
  3458.  
  3459. ----------------------------------------------------------------
  3460. ----------------------------------------------------------------
  3461. ----------------------------------------------------------------
  3462. ----------------------------------------------------------------
  3463. ---- Explorer panel
  3464.  
  3465. Create(explorerPanel,{
  3466. BackgroundColor3 = GuiColor.Field;
  3467. BorderColor3 = GuiColor.Border;
  3468. Active = true;
  3469. })
  3470.  
  3471. local SettingsRemote = explorerPanel.Parent:WaitForChild("SettingsPanel"):WaitForChild("GetSetting")
  3472. local GetApiRemote = explorerPanel.Parent:WaitForChild("PropertiesFrame"):WaitForChild("GetApi")
  3473. local GetAwaitRemote = explorerPanel.Parent:WaitForChild("PropertiesFrame"):WaitForChild("GetAwaiting")
  3474. local bindSetAwaiting = explorerPanel.Parent:WaitForChild("PropertiesFrame"):WaitForChild("SetAwaiting")
  3475.  
  3476. local SaveInstanceWindow = explorerPanel.Parent:WaitForChild("SaveInstance")
  3477. local ConfirmationWindow = explorerPanel.Parent:WaitForChild("Confirmation")
  3478. local CautionWindow = explorerPanel.Parent:WaitForChild("Caution")
  3479. local TableCautionWindow = explorerPanel.Parent:WaitForChild("TableCaution")
  3480.  
  3481. local RemoteWindow = explorerPanel.Parent:WaitForChild("CallRemote")
  3482.  
  3483. local ScriptEditor = explorerPanel.Parent:WaitForChild("ScriptEditor")
  3484. local ScriptEditorEvent = ScriptEditor:WaitForChild("OpenScript")
  3485.  
  3486. local CurrentSaveInstanceWindow
  3487. local CurrentRemoteWindow
  3488.  
  3489. local lastSelectedNode
  3490.  
  3491. local DexStorage
  3492. local DexStorageMain
  3493. local DexStorageEnabled
  3494.  
  3495. if saveinstance then DexStorageEnabled = true end
  3496.  
  3497. if DexStorageEnabled then
  3498. DexStorage = Instance.new("Folder")
  3499. DexStorage.Name = "Dex"
  3500. DexStorageMain = Instance.new("Folder",DexStorage)
  3501. DexStorageMain.Name = "DexStorage"
  3502. end
  3503.  
  3504. local NilStorage
  3505. local NilStorageMain
  3506. local NilStorageEnabled
  3507.  
  3508. if get_nil_instances and IfThisFunctionWasStableEnough then NilStorageEnabled = true end
  3509.  
  3510. if NilStorageEnabled then
  3511. NilStorage = Instance.new("Folder")
  3512. NilStorage.Name = "Dex Internal Storage"
  3513. NilStorageMain = Instance.new("Folder",NilStorage)
  3514. NilStorageMain.Name = "Nil Instances"
  3515. end
  3516.  
  3517. local listFrame = Create('Frame',{
  3518. Name = "List";
  3519. BackgroundTransparency = 1;
  3520. ClipsDescendants = true;
  3521. Position = UDim2.new(0,0,0,HEADER_SIZE);
  3522. Size = UDim2.new(1,-GUI_SIZE,1,-HEADER_SIZE);
  3523. Parent = explorerPanel;
  3524. })
  3525.  
  3526. local scrollBar = ScrollBar(false)
  3527. scrollBar.PageIncrement = 1
  3528. Create(scrollBar.GUI,{
  3529. Position = UDim2.new(1,-GUI_SIZE,0,HEADER_SIZE);
  3530. Size = UDim2.new(0,GUI_SIZE,1,-HEADER_SIZE);
  3531. Parent = explorerPanel;
  3532. })
  3533.  
  3534. local scrollBarH = ScrollBar(true)
  3535. scrollBarH.PageIncrement = GUI_SIZE
  3536. Create(scrollBarH.GUI,{
  3537. Position = UDim2.new(0,0,1,-GUI_SIZE);
  3538. Size = UDim2.new(1,-GUI_SIZE,0,GUI_SIZE);
  3539. Visible = false;
  3540. Parent = explorerPanel;
  3541. })
  3542.  
  3543. local headerFrame = Create('Frame',{
  3544. Name = "Header";
  3545. BackgroundColor3 = GuiColor.Background;
  3546. BorderColor3 = GuiColor.Border;
  3547. Position = UDim2.new(0,0,0,0);
  3548. Size = UDim2.new(1,0,0,HEADER_SIZE);
  3549. Parent = explorerPanel;
  3550. Create('TextLabel',{
  3551. Text = "Explorer";
  3552. BackgroundTransparency = 1;
  3553. TextColor3 = GuiColor.Text;
  3554. TextXAlignment = 'Left';
  3555. Font = FONT;
  3556. FontSize = FONT_SIZE;
  3557. Position = UDim2.new(0,4,0,0);
  3558. Size = UDim2.new(1,-4,0.5,0);
  3559. });
  3560. })
  3561.  
  3562. local explorerFilter = Create('TextBox',{
  3563. Text = "Filter Workspace";
  3564. BackgroundTransparency = 0.8;
  3565. TextColor3 = GuiColor.Text;
  3566. TextXAlignment = 'Left';
  3567. Font = FONT;
  3568. FontSize = FONT_SIZE;
  3569. Position = UDim2.new(0,4,0.5,0);
  3570. Size = UDim2.new(1,-8,0.5,-2);
  3571. });
  3572. explorerFilter.Parent = headerFrame
  3573.  
  3574. SetZIndexOnChanged(explorerPanel)
  3575.  
  3576. local function CreateColor3(r, g, b) return Color3.new(r/255,g/255,b/255) end
  3577.  
  3578. local Styles = {
  3579. Font = Enum.Font.Arial;
  3580. Margin = 5;
  3581. Black = CreateColor3(0,0,0);
  3582. White = CreateColor3(255,255,255);
  3583. }
  3584.  
  3585. local DropDown = {
  3586. Font = Styles.Font;
  3587. FontSize = Enum.FontSize.Size14;
  3588. TextColor = CreateColor3(0,0,0);
  3589. TextColorOver = Styles.White;
  3590. TextXAlignment = Enum.TextXAlignment.Left;
  3591. Height = 20;
  3592. BackColor = Styles.White;
  3593. BackColorOver = CreateColor3(86,125,188);
  3594. BorderColor = CreateColor3(216,216,216);
  3595. BorderSizePixel = 2;
  3596. ArrowColor = CreateColor3(160,160,160);
  3597. ArrowColorOver = Styles.Black;
  3598. }
  3599.  
  3600. local Row = {
  3601. Font = Styles.Font;
  3602. FontSize = Enum.FontSize.Size14;
  3603. TextXAlignment = Enum.TextXAlignment.Left;
  3604. TextColor = Styles.Black;
  3605. TextColorOver = Styles.White;
  3606. TextLockedColor = CreateColor3(120,120,120);
  3607. Height = 24;
  3608. BorderColor = CreateColor3(216,216,216);
  3609. BackgroundColor = Styles.White;
  3610. BackgroundColorAlternate = CreateColor3(246,246,246);
  3611. BackgroundColorMouseover = CreateColor3(211,224,244);
  3612. TitleMarginLeft = 15;
  3613. }
  3614.  
  3615. local currentRightClickMenu
  3616. local CurrentInsertObjectWindow
  3617. local CurrentFunctionCallerWindow
  3618.  
  3619. local RbxApi
  3620.  
  3621. function ClassCanCreate(IName)
  3622. local success,err = pcall(function() Instance.new(IName) end)
  3623. if err then
  3624. return false
  3625. else
  3626. return true
  3627. end
  3628. end
  3629.  
  3630. function GetClasses()
  3631. if RbxApi == nil then return {} end
  3632. local classTable = {}
  3633. for i,v in pairs(RbxApi.Classes) do
  3634. if ClassCanCreate(v.Name) then
  3635. table.insert(classTable,v.Name)
  3636. end
  3637. end
  3638. return classTable
  3639. end
  3640.  
  3641. local function sortAlphabetic(t, property)
  3642. table.sort(t,
  3643. function(x,y) return x[property] < y[property]
  3644. end)
  3645. end
  3646.  
  3647. local function FunctionIsHidden(functionData)
  3648. local tags = functionData["tags"]
  3649. for _,name in pairs(tags) do
  3650. if name == "deprecated"
  3651. or name == "hidden"
  3652. or name == "writeonly" then
  3653. return true
  3654. end
  3655. end
  3656. return false
  3657. end
  3658.  
  3659. local function GetAllFunctions(className)
  3660. local class = RbxApi.Classes[className]
  3661. local functions = {}
  3662.  
  3663. if not class then return functions end
  3664.  
  3665. while class do
  3666. if class.Name == "Instance" then break end
  3667. for _,nextFunction in pairs(class.Functions) do
  3668. if not FunctionIsHidden(nextFunction) then
  3669. table.insert(functions, nextFunction)
  3670. end
  3671. end
  3672. class = RbxApi.Classes[class.Superclass]
  3673. end
  3674.  
  3675. sortAlphabetic(functions, "Name")
  3676.  
  3677. return functions
  3678. end
  3679.  
  3680. function GetFunctions()
  3681. if RbxApi == nil then return {} end
  3682. local List = SelectionVar():Get()
  3683.  
  3684. if #List == 0 then return end
  3685.  
  3686. local MyObject = List[1]
  3687.  
  3688. local functionTable = {}
  3689. for i,v in pairs(GetAllFunctions(MyObject.ClassName)) do
  3690. table.insert(functionTable,v)
  3691. end
  3692. return functionTable
  3693. end
  3694.  
  3695. function CreateInsertObjectMenu(choices, currentChoice, readOnly, onClick)
  3696. local mouse = game:GetService("Players").LocalPlayer:GetMouse()
  3697. local totalSize = explorerPanel.Parent.AbsoluteSize.y
  3698. if #choices == 0 then return end
  3699.  
  3700. table.sort(choices, function(a,b) return a < b end)
  3701.  
  3702. local frame = Instance.new("Frame")
  3703. frame.Name = "InsertObject"
  3704. frame.Size = UDim2.new(0, 200, 1, 0)
  3705. frame.BackgroundTransparency = 1
  3706. frame.Active = true
  3707.  
  3708. local menu = nil
  3709. local arrow = nil
  3710. local expanded = false
  3711. local margin = DropDown.BorderSizePixel;
  3712.  
  3713. --[[
  3714. local button = Instance.new("TextButton")
  3715. button.Font = Row.Font
  3716. button.FontSize = Row.FontSize
  3717. button.TextXAlignment = Row.TextXAlignment
  3718. button.BackgroundTransparency = 1
  3719. button.TextColor3 = Row.TextColor
  3720. if readOnly then
  3721. button.TextColor3 = Row.TextLockedColor
  3722. end
  3723. button.Text = currentChoice
  3724. button.Size = UDim2.new(1, -2 * Styles.Margin, 1, 0)
  3725. button.Position = UDim2.new(0, Styles.Margin, 0, 0)
  3726. button.Parent = frame
  3727. --]]
  3728.  
  3729. local function hideMenu()
  3730. expanded = false
  3731. --showArrow(DropDown.ArrowColor)
  3732. if frame then
  3733. --frame:Destroy()
  3734. CurrentInsertObjectWindow.Visible = false
  3735. end
  3736. end
  3737.  
  3738. local function showMenu()
  3739. expanded = true
  3740. menu = Instance.new("ScrollingFrame")
  3741. menu.Size = UDim2.new(0,200,1,0)
  3742. menu.CanvasSize = UDim2.new(0, 200, 0, #choices * DropDown.Height)
  3743. menu.Position = UDim2.new(0, margin, 0, 0)
  3744. menu.BackgroundTransparency = 0
  3745. menu.BackgroundColor3 = DropDown.BackColor
  3746. menu.BorderColor3 = DropDown.BorderColor
  3747. menu.BorderSizePixel = DropDown.BorderSizePixel
  3748. menu.TopImage = "rbxasset://textures/blackBkg_square.png"
  3749. menu.MidImage = "rbxasset://textures/blackBkg_square.png"
  3750. menu.BottomImage = "rbxasset://textures/blackBkg_square.png"
  3751. menu.Active = true
  3752. menu.ZIndex = 5
  3753. menu.Parent = frame
  3754.  
  3755. --local parentFrameHeight = script.Parent.List.Size.Y.Offset
  3756. --local rowHeight = mouse.Y
  3757. --if (rowHeight + menu.Size.Y.Offset) > parentFrameHeight then
  3758. -- menu.Position = UDim2.new(0, margin, 0, -1 * (#choices * DropDown.Height) - margin)
  3759. --end
  3760.  
  3761. local function choice(name)
  3762. onClick(name)
  3763. hideMenu()
  3764. end
  3765.  
  3766. for i,name in pairs(choices) do
  3767. local option = CreateRightClickMenuItem(name, function()
  3768. choice(name)
  3769. end,1)
  3770. option.Size = UDim2.new(1, 0, 0, 20)
  3771. option.Position = UDim2.new(0, 0, 0, (i - 1) * DropDown.Height)
  3772. option.ZIndex = menu.ZIndex
  3773. option.Parent = menu
  3774. end
  3775. end
  3776.  
  3777.  
  3778. showMenu()
  3779.  
  3780.  
  3781. return frame
  3782. end
  3783.  
  3784. function CreateFunctionCallerMenu(choices, currentChoice, readOnly, onClick)
  3785. local mouse = game:GetService("Players").LocalPlayer:GetMouse()
  3786. local totalSize = explorerPanel.Parent.AbsoluteSize.y
  3787. if #choices == 0 then return end
  3788.  
  3789. table.sort(choices, function(a,b) return a.Name < b.Name end)
  3790.  
  3791. local frame = Instance.new("Frame")
  3792. frame.Name = "InsertObject"
  3793. frame.Size = UDim2.new(0, 200, 1, 0)
  3794. frame.BackgroundTransparency = 1
  3795. frame.Active = true
  3796.  
  3797. local menu = nil
  3798. local arrow = nil
  3799. local expanded = false
  3800. local margin = DropDown.BorderSizePixel;
  3801.  
  3802. local function hideMenu()
  3803. expanded = false
  3804. --showArrow(DropDown.ArrowColor)
  3805. if frame then
  3806. --frame:Destroy()
  3807. CurrentInsertObjectWindow.Visible = false
  3808. end
  3809. end
  3810.  
  3811. local function showMenu()
  3812. expanded = true
  3813. menu = Instance.new("ScrollingFrame")
  3814. menu.Size = UDim2.new(0,300,1,0)
  3815. menu.CanvasSize = UDim2.new(0, 300, 0, #choices * DropDown.Height)
  3816. menu.Position = UDim2.new(0, margin, 0, 0)
  3817. menu.BackgroundTransparency = 0
  3818. menu.BackgroundColor3 = DropDown.BackColor
  3819. menu.BorderColor3 = DropDown.BorderColor
  3820. menu.BorderSizePixel = DropDown.BorderSizePixel
  3821. menu.TopImage = "rbxasset://textures/blackBkg_square.png"
  3822. menu.MidImage = "rbxasset://textures/blackBkg_square.png"
  3823. menu.BottomImage = "rbxasset://textures/blackBkg_square.png"
  3824. menu.Active = true
  3825. menu.ZIndex = 5
  3826. menu.Parent = frame
  3827.  
  3828. --local parentFrameHeight = script.Parent.List.Size.Y.Offset
  3829. --local rowHeight = mouse.Y
  3830. --if (rowHeight + menu.Size.Y.Offset) > parentFrameHeight then
  3831. -- menu.Position = UDim2.new(0, margin, 0, -1 * (#choices * DropDown.Height) - margin)
  3832. --end
  3833.  
  3834. local function GetParameters(functionData)
  3835. local paraString = ""
  3836. paraString = paraString.."("
  3837. for i,v in pairs(functionData.Arguments) do
  3838. paraString = paraString..v.Type.." "..v.Name
  3839. if i < #functionData.Arguments then
  3840. paraString = paraString..", "
  3841. end
  3842. end
  3843. paraString = paraString..")"
  3844. return paraString
  3845. end
  3846.  
  3847. local function choice(name)
  3848. onClick(name)
  3849. hideMenu()
  3850. end
  3851.  
  3852. for i,name in pairs(choices) do
  3853. local option = CreateRightClickMenuItem(name.ReturnType.." "..name.Name..GetParameters(name), function()
  3854. choice(name)
  3855. end,2)
  3856. option.Size = UDim2.new(1, 0, 0, 20)
  3857. option.Position = UDim2.new(0, 0, 0, (i - 1) * DropDown.Height)
  3858. option.ZIndex = menu.ZIndex
  3859. option.Parent = menu
  3860. end
  3861. end
  3862.  
  3863.  
  3864. showMenu()
  3865.  
  3866.  
  3867. return frame
  3868. end
  3869.  
  3870. function CreateInsertObject()
  3871. if not CurrentInsertObjectWindow then return end
  3872. CurrentInsertObjectWindow.Visible = true
  3873. if currentRightClickMenu and CurrentInsertObjectWindow.Visible then
  3874. CurrentInsertObjectWindow.Position = UDim2.new(0,currentRightClickMenu.Position.X.Offset-currentRightClickMenu.Size.X.Offset-2,0,0)
  3875. end
  3876. if CurrentInsertObjectWindow.Visible then
  3877. CurrentInsertObjectWindow.Parent = explorerPanel.Parent
  3878. end
  3879. end
  3880.  
  3881. function CreateFunctionCaller(oh)
  3882. if CurrentFunctionCallerWindow then
  3883. CurrentFunctionCallerWindow:Destroy()
  3884. CurrentFunctionCallerWindow = nil
  3885. end
  3886. CurrentFunctionCallerWindow = CreateFunctionCallerMenu(
  3887. GetFunctions(),
  3888. "",
  3889. false,
  3890. function(option)
  3891. CurrentFunctionCallerWindow:Destroy()
  3892. CurrentFunctionCallerWindow = nil
  3893. local list = SelectionVar():Get()
  3894. for i,v in pairs(list) do
  3895. pcall(function() print("Function called.", pcall(function() v[option.Name](v) end)) end)
  3896. end
  3897.  
  3898. DestroyRightClick()
  3899. end
  3900. )
  3901. if currentRightClickMenu and CurrentFunctionCallerWindow then
  3902. CurrentFunctionCallerWindow.Position = UDim2.new(0,currentRightClickMenu.Position.X.Offset-currentRightClickMenu.Size.X.Offset*1.5-2,0,0)
  3903. end
  3904. if CurrentFunctionCallerWindow then
  3905. CurrentFunctionCallerWindow.Parent = explorerPanel.Parent
  3906. end
  3907. end
  3908.  
  3909. function CreateRightClickMenuItem(text, onClick, insObj)
  3910. local button = Instance.new("TextButton")
  3911. button.Font = DropDown.Font
  3912. button.FontSize = DropDown.FontSize
  3913. button.TextColor3 = DropDown.TextColor
  3914. button.TextXAlignment = DropDown.TextXAlignment
  3915. button.BackgroundColor3 = DropDown.BackColor
  3916. button.AutoButtonColor = false
  3917. button.BorderSizePixel = 0
  3918. button.Active = true
  3919. button.Text = text
  3920.  
  3921. if insObj == 1 then
  3922. local newIcon = Icon(nil,ExplorerIndex[text] or 0)
  3923. newIcon.Position = UDim2.new(0,0,0,2)
  3924. newIcon.Size = UDim2.new(0,16,0,16)
  3925. newIcon.IconMap.ZIndex = 5
  3926. newIcon.Parent = button
  3927. button.Text = "\t\t"..button.Text
  3928. elseif insObj == 2 then
  3929. button.FontSize = Enum.FontSize.Size11
  3930. end
  3931.  
  3932. button.MouseEnter:connect(function()
  3933. button.TextColor3 = DropDown.TextColorOver
  3934. button.BackgroundColor3 = DropDown.BackColorOver
  3935. if not insObj and CurrentInsertObjectWindow then
  3936. if CurrentInsertObjectWindow.Visible == false and button.Text == "Insert Object" then
  3937. CreateInsertObject()
  3938. elseif CurrentInsertObjectWindow.Visible and button.Text ~= "Insert Object" then
  3939. CurrentInsertObjectWindow.Visible = false
  3940. end
  3941. end
  3942. if not insObj then
  3943. if CurrentFunctionCallerWindow and button.Text ~= "Call Function" then
  3944. CurrentFunctionCallerWindow:Destroy()
  3945. CurrentFunctionCallerWindow = nil
  3946. elseif button.Text == "Call Function" then
  3947. CreateFunctionCaller()
  3948. end
  3949. end
  3950. end)
  3951. button.MouseLeave:connect(function()
  3952. button.TextColor3 = DropDown.TextColor
  3953. button.BackgroundColor3 = DropDown.BackColor
  3954. end)
  3955. button.MouseButton1Click:connect(function()
  3956. button.TextColor3 = DropDown.TextColor
  3957. button.BackgroundColor3 = DropDown.BackColor
  3958. onClick(text)
  3959. end)
  3960. return button
  3961. end
  3962.  
  3963. function CreateRightClickMenu(choices, currentChoice, readOnly, onClick)
  3964. local mouse = game:GetService("Players").LocalPlayer:GetMouse()
  3965.  
  3966. local frame = Instance.new("Frame")
  3967. frame.Name = "DropDown"
  3968. frame.Size = UDim2.new(0, 200, 1, 0)
  3969. frame.BackgroundTransparency = 1
  3970. frame.Active = true
  3971.  
  3972. local menu = nil
  3973. local arrow = nil
  3974. local expanded = false
  3975. local margin = DropDown.BorderSizePixel;
  3976.  
  3977. --[[
  3978. local button = Instance.new("TextButton")
  3979. button.Font = Row.Font
  3980. button.FontSize = Row.FontSize
  3981. button.TextXAlignment = Row.TextXAlignment
  3982. button.BackgroundTransparency = 1
  3983. button.TextColor3 = Row.TextColor
  3984. if readOnly then
  3985. button.TextColor3 = Row.TextLockedColor
  3986. end
  3987. button.Text = currentChoice
  3988. button.Size = UDim2.new(1, -2 * Styles.Margin, 1, 0)
  3989. button.Position = UDim2.new(0, Styles.Margin, 0, 0)
  3990. button.Parent = frame
  3991. --]]
  3992.  
  3993. local function hideMenu()
  3994. expanded = false
  3995. --showArrow(DropDown.ArrowColor)
  3996. if frame then
  3997. frame:Destroy()
  3998. DestroyRightClick()
  3999. end
  4000. end
  4001.  
  4002. local function showMenu()
  4003. expanded = true
  4004. menu = Instance.new("Frame")
  4005. menu.Size = UDim2.new(0, 200, 0, #choices * DropDown.Height)
  4006. menu.Position = UDim2.new(0, margin, 0, 5)
  4007. menu.BackgroundTransparency = 0
  4008. menu.BackgroundColor3 = DropDown.BackColor
  4009. menu.BorderColor3 = DropDown.BorderColor
  4010. menu.BorderSizePixel = DropDown.BorderSizePixel
  4011. menu.Active = true
  4012. menu.ZIndex = 5
  4013. menu.Parent = frame
  4014.  
  4015. --local parentFrameHeight = script.Parent.List.Size.Y.Offset
  4016. --local rowHeight = mouse.Y
  4017. --if (rowHeight + menu.Size.Y.Offset) > parentFrameHeight then
  4018. -- menu.Position = UDim2.new(0, margin, 0, -1 * (#choices * DropDown.Height) - margin)
  4019. --end
  4020.  
  4021. local function choice(name)
  4022. onClick(name)
  4023. hideMenu()
  4024. end
  4025.  
  4026. for i,name in pairs(choices) do
  4027. local option = CreateRightClickMenuItem(name, function()
  4028. choice(name)
  4029. end)
  4030. option.Size = UDim2.new(1, 0, 0, 20)
  4031. option.Position = UDim2.new(0, 0, 0, (i - 1) * DropDown.Height)
  4032. option.ZIndex = menu.ZIndex
  4033. option.Parent = menu
  4034. end
  4035. end
  4036.  
  4037.  
  4038. showMenu()
  4039.  
  4040.  
  4041. return frame
  4042. end
  4043.  
  4044. function checkMouseInGui(gui)
  4045. if gui == nil then return false end
  4046. local plrMouse = game:GetService("Players").LocalPlayer:GetMouse()
  4047. local guiPosition = gui.AbsolutePosition
  4048. local guiSize = gui.AbsoluteSize
  4049.  
  4050. if plrMouse.X >= guiPosition.x and plrMouse.X <= guiPosition.x + guiSize.x and plrMouse.Y >= guiPosition.y and plrMouse.Y <= guiPosition.y + guiSize.y then
  4051. return true
  4052. else
  4053. return false
  4054. end
  4055. end
  4056.  
  4057. local clipboard = {}
  4058. local function delete(o)
  4059. o.Parent = nil
  4060. end
  4061.  
  4062. local getTextWidth do
  4063. local text = Create('TextLabel',{
  4064. Name = "TextWidth";
  4065. TextXAlignment = 'Left';
  4066. TextYAlignment = 'Center';
  4067. Font = FONT;
  4068. FontSize = FONT_SIZE;
  4069. Text = "";
  4070. Position = UDim2.new(0,0,0,0);
  4071. Size = UDim2.new(1,0,1,0);
  4072. Visible = false;
  4073. Parent = explorerPanel;
  4074. })
  4075. function getTextWidth(s)
  4076. text.Text = s
  4077. return text.TextBounds.x
  4078. end
  4079. end
  4080.  
  4081. local nameScanned = false
  4082. -- Holds the game tree converted to a list.
  4083. local TreeList = {}
  4084. -- Matches objects to their tree node representation.
  4085. local NodeLookup = {}
  4086.  
  4087. local nodeWidth = 0
  4088.  
  4089. local QuickButtons = {}
  4090.  
  4091. function filteringWorkspace()
  4092. if explorerFilter.Text ~= "" and explorerFilter.Text ~= "Filter Workspace" then
  4093. return true
  4094. end
  4095. return false
  4096. end
  4097.  
  4098. function lookForAName(obj,name)
  4099. for i,v in pairs(obj:GetChildren()) do
  4100. if string.find(string.lower(v.Name),string.lower(name)) then nameScanned = true end
  4101. lookForAName(v,name)
  4102. end
  4103. end
  4104.  
  4105. function scanName(obj)
  4106. nameScanned = false
  4107. if string.find(string.lower(obj.Name),string.lower(explorerFilter.Text)) then
  4108. nameScanned = true
  4109. else
  4110. lookForAName(obj,explorerFilter.Text)
  4111. end
  4112. return nameScanned
  4113. end
  4114.  
  4115. function updateActions()
  4116. for i,v in pairs(QuickButtons) do
  4117. if v.Cond() then
  4118. v.Toggle(true)
  4119. else
  4120. v.Toggle(false)
  4121. end
  4122. end
  4123. end
  4124.  
  4125. local updateList,rawUpdateList,updateScroll,rawUpdateSize do
  4126. local function r(t)
  4127. for i = 1,#t do
  4128. if not filteringWorkspace() or scanName(t[i].Object) then
  4129. TreeList[#TreeList+1] = t[i]
  4130.  
  4131. local w = (t[i].Depth)*(2+ENTRY_PADDING+GUI_SIZE) + 2 + ENTRY_SIZE + 4 + getTextWidth(t[i].Object.Name) + 4
  4132. if w > nodeWidth then
  4133. nodeWidth = w
  4134. end
  4135. if t[i].Expanded or filteringWorkspace() then
  4136. r(t[i])
  4137. end
  4138. end
  4139. end
  4140. end
  4141.  
  4142. function rawUpdateSize()
  4143. scrollBarH.TotalSpace = nodeWidth
  4144. scrollBarH.VisibleSpace = listFrame.AbsoluteSize.x
  4145. scrollBarH:Update()
  4146. local visible = scrollBarH:CanScrollDown() or scrollBarH:CanScrollUp()
  4147. scrollBarH.GUI.Visible = visible
  4148.  
  4149. listFrame.Size = UDim2.new(1,-GUI_SIZE,1,-GUI_SIZE*(visible and 1 or 0) - HEADER_SIZE)
  4150.  
  4151. scrollBar.VisibleSpace = math.ceil(listFrame.AbsoluteSize.y/ENTRY_BOUND)
  4152. scrollBar.GUI.Size = UDim2.new(0,GUI_SIZE,1,-GUI_SIZE*(visible and 1 or 0) - HEADER_SIZE)
  4153.  
  4154. scrollBar.TotalSpace = #TreeList+1
  4155. scrollBar:Update()
  4156. end
  4157.  
  4158. function rawUpdateList()
  4159. -- Clear then repopulate the entire list. It appears to be fast enough.
  4160. TreeList = {}
  4161. nodeWidth = 0
  4162. r(NodeLookup[workspace.Parent])
  4163. r(NodeLookup[DexOutput])
  4164. if DexStorageEnabled then
  4165. r(NodeLookup[DexStorage])
  4166. end
  4167. if NilStorageEnabled then
  4168. r(NodeLookup[NilStorage])
  4169. end
  4170. rawUpdateSize()
  4171. updateActions()
  4172. end
  4173.  
  4174. -- Adding or removing large models will cause many updates to occur. We
  4175. -- can reduce the number of updates by creating a delay, then dropping any
  4176. -- updates that occur during the delay.
  4177. local updatingList = false
  4178. function updateList()
  4179. if updatingList then return end
  4180. updatingList = true
  4181. wait(0.25)
  4182. updatingList = false
  4183. rawUpdateList()
  4184. end
  4185.  
  4186. local updatingScroll = false
  4187. function updateScroll()
  4188. if updatingScroll then return end
  4189. updatingScroll = true
  4190. wait(0.25)
  4191. updatingScroll = false
  4192. scrollBar:Update()
  4193. end
  4194. end
  4195.  
  4196. local Selection do
  4197. local bindGetSelection = explorerPanel:FindFirstChild("GetSelection")
  4198. if not bindGetSelection then
  4199. bindGetSelection = Create('BindableFunction',{Name = "GetSelection"})
  4200. bindGetSelection.Parent = explorerPanel
  4201. end
  4202.  
  4203. local bindSetSelection = explorerPanel:FindFirstChild("SetSelection")
  4204. if not bindSetSelection then
  4205. bindSetSelection = Create('BindableFunction',{Name = "SetSelection"})
  4206. bindSetSelection.Parent = explorerPanel
  4207. end
  4208.  
  4209. local bindSelectionChanged = explorerPanel:FindFirstChild("SelectionChanged")
  4210. if not bindSelectionChanged then
  4211. bindSelectionChanged = Create('BindableEvent',{Name = "SelectionChanged"})
  4212. bindSelectionChanged.Parent = explorerPanel
  4213. end
  4214.  
  4215. local SelectionList = {}
  4216. local SelectionSet = {}
  4217. local Updates = true
  4218. Selection = {
  4219. Selected = SelectionSet;
  4220. List = SelectionList;
  4221. }
  4222.  
  4223. local function addObject(object)
  4224. -- list update
  4225. local lupdate = false
  4226. -- scroll update
  4227. local supdate = false
  4228.  
  4229. if not SelectionSet[object] then
  4230. local node = NodeLookup[object]
  4231. if node then
  4232. table.insert(SelectionList,object)
  4233. SelectionSet[object] = true
  4234. node.Selected = true
  4235.  
  4236. -- expand all ancestors so that selected node becomes visible
  4237. node = node.Parent
  4238. while node do
  4239. if not node.Expanded then
  4240. node.Expanded = true
  4241. lupdate = true
  4242. end
  4243. node = node.Parent
  4244. end
  4245. supdate = true
  4246. end
  4247. end
  4248. return lupdate,supdate
  4249. end
  4250.  
  4251. function Selection:Set(objects)
  4252. local lupdate = false
  4253. local supdate = false
  4254.  
  4255. if #SelectionList > 0 then
  4256. for i = 1,#SelectionList do
  4257. local object = SelectionList[i]
  4258. local node = NodeLookup[object]
  4259. if node then
  4260. node.Selected = false
  4261. SelectionSet[object] = nil
  4262. end
  4263. end
  4264.  
  4265. SelectionList = {}
  4266. Selection.List = SelectionList
  4267. supdate = true
  4268. end
  4269.  
  4270. for i = 1,#objects do
  4271. local l,s = addObject(objects[i])
  4272. lupdate = l or lupdate
  4273. supdate = s or supdate
  4274. end
  4275.  
  4276. if lupdate then
  4277. rawUpdateList()
  4278. supdate = true
  4279. elseif supdate then
  4280. scrollBar:Update()
  4281. end
  4282.  
  4283. if supdate then
  4284. bindSelectionChanged:Fire()
  4285. updateActions()
  4286. end
  4287. end
  4288.  
  4289. function Selection:Add(object)
  4290. local l,s = addObject(object)
  4291. if l then
  4292. rawUpdateList()
  4293. if Updates then
  4294. bindSelectionChanged:Fire()
  4295. updateActions()
  4296. end
  4297. elseif s then
  4298. scrollBar:Update()
  4299. if Updates then
  4300. bindSelectionChanged:Fire()
  4301. updateActions()
  4302. end
  4303. end
  4304. end
  4305.  
  4306. function Selection:StopUpdates()
  4307. Updates = false
  4308. end
  4309.  
  4310. function Selection:ResumeUpdates()
  4311. Updates = true
  4312. bindSelectionChanged:Fire()
  4313. updateActions()
  4314. end
  4315.  
  4316. function Selection:Remove(object,noupdate)
  4317. if SelectionSet[object] then
  4318. local node = NodeLookup[object]
  4319. if node then
  4320. node.Selected = false
  4321. SelectionSet[object] = nil
  4322. for i = 1,#SelectionList do
  4323. if SelectionList[i] == object then
  4324. table.remove(SelectionList,i)
  4325. break
  4326. end
  4327. end
  4328.  
  4329. if not noupdate then
  4330. scrollBar:Update()
  4331. end
  4332. bindSelectionChanged:Fire()
  4333. updateActions()
  4334. end
  4335. end
  4336. end
  4337.  
  4338. function Selection:Get()
  4339. local list = {}
  4340. for i = 1,#SelectionList do
  4341. list[i] = SelectionList[i]
  4342. end
  4343. return list
  4344. end
  4345.  
  4346. bindSetSelection.OnInvoke = function(...)
  4347. Selection:Set(...)
  4348. end
  4349.  
  4350. bindGetSelection.OnInvoke = function()
  4351. return Selection:Get()
  4352. end
  4353. end
  4354.  
  4355. function CreateCaution(title,msg)
  4356. local newCaution = CautionWindow
  4357. newCaution.Visible = true
  4358. newCaution.Title.Text = title
  4359. newCaution.MainWindow.Desc.Text = msg
  4360. newCaution.MainWindow.Ok.MouseButton1Up:connect(function()
  4361. newCaution.Visible = false
  4362. end)
  4363. end
  4364.  
  4365. function CreateTableCaution(title,msg)
  4366. if type(msg) ~= "table" then return CreateCaution(title,tostring(msg)) end
  4367. local newCaution = TableCautionWindow:Clone()
  4368. newCaution.Title.Text = title
  4369.  
  4370. local TableList = newCaution.MainWindow.TableResults
  4371. local TableTemplate = newCaution.MainWindow.TableTemplate
  4372.  
  4373. for i,v in pairs(msg) do
  4374. local newResult = TableTemplate:Clone()
  4375. newResult.Type.Text = type(v)
  4376. newResult.Value.Text = tostring(v)
  4377. newResult.Position = UDim2.new(0,0,0,#TableList:GetChildren() * 20)
  4378. newResult.Parent = TableList
  4379. TableList.CanvasSize = UDim2.new(0,0,0,#TableList:GetChildren() * 20)
  4380. newResult.Visible = true
  4381. end
  4382. newCaution.Parent = explorerPanel.Parent
  4383. newCaution.Visible = true
  4384. newCaution.MainWindow.Ok.MouseButton1Up:connect(function()
  4385. newCaution:Destroy()
  4386. end)
  4387. end
  4388.  
  4389. local function Split(str, delimiter)
  4390. local start = 1
  4391. local t = {}
  4392. while true do
  4393. local pos = string.find (str, delimiter, start, true)
  4394. if not pos then
  4395. break
  4396. end
  4397. table.insert (t, string.sub (str, start, pos - 1))
  4398. start = pos + string.len (delimiter)
  4399. end
  4400. table.insert (t, string.sub (str, start))
  4401. return t
  4402. end
  4403.  
  4404. local function ToValue(value,type)
  4405. if type == "Vector2" then
  4406. local list = Split(value,",")
  4407. if #list < 2 then return nil end
  4408. local x = tonumber(list[1]) or 0
  4409. local y = tonumber(list[2]) or 0
  4410. return Vector2.new(x,y)
  4411. elseif type == "Vector3" then
  4412. local list = Split(value,",")
  4413. if #list < 3 then return nil end
  4414. local x = tonumber(list[1]) or 0
  4415. local y = tonumber(list[2]) or 0
  4416. local z = tonumber(list[3]) or 0
  4417. return Vector3.new(x,y,z)
  4418. elseif type == "Color3" then
  4419. local list = Split(value,",")
  4420. if #list < 3 then return nil end
  4421. local r = tonumber(list[1]) or 0
  4422. local g = tonumber(list[2]) or 0
  4423. local b = tonumber(list[3]) or 0
  4424. return Color3.new(r/255,g/255, b/255)
  4425. elseif type == "UDim2" then
  4426. local list = Split(string.gsub(string.gsub(value, "{", ""),"}",""),",")
  4427. if #list < 4 then return nil end
  4428. local xScale = tonumber(list[1]) or 0
  4429. local xOffset = tonumber(list[2]) or 0
  4430. local yScale = tonumber(list[3]) or 0
  4431. local yOffset = tonumber(list[4]) or 0
  4432. return UDim2.new(xScale, xOffset, yScale, yOffset)
  4433. elseif type == "Number" then
  4434. return tonumber(value)
  4435. elseif type == "String" then
  4436. return value
  4437. elseif type == "NumberRange" then
  4438. local list = Split(value,",")
  4439. if #list == 1 then
  4440. if tonumber(list[1]) == nil then return nil end
  4441. local newVal = tonumber(list[1]) or 0
  4442. return NumberRange.new(newVal)
  4443. end
  4444. if #list < 2 then return nil end
  4445. local x = tonumber(list[1]) or 0
  4446. local y = tonumber(list[2]) or 0
  4447. return NumberRange.new(x,y)
  4448. elseif type == "Script" then
  4449. local success,err = ypcall(function()
  4450. _G.D_E_X_DONOTUSETHISPLEASE = nil
  4451. loadstring(
  4452. "_G.D_E_X_DONOTUSETHISPLEASE = "..value
  4453. )()
  4454. return _G.D_E_X_DONOTUSETHISPLEASE
  4455. end)
  4456. if err then
  4457. return nil
  4458. end
  4459. else
  4460. return nil
  4461. end
  4462. end
  4463.  
  4464. local function ToPropValue(value,type)
  4465. if type == "Vector2" then
  4466. local list = Split(value,",")
  4467. if #list < 2 then return nil end
  4468. local x = tonumber(list[1]) or 0
  4469. local y = tonumber(list[2]) or 0
  4470. return Vector2.new(x,y)
  4471. elseif type == "Vector3" then
  4472. local list = Split(value,",")
  4473. if #list < 3 then return nil end
  4474. local x = tonumber(list[1]) or 0
  4475. local y = tonumber(list[2]) or 0
  4476. local z = tonumber(list[3]) or 0
  4477. return Vector3.new(x,y,z)
  4478. elseif type == "Color3" then
  4479. local list = Split(value,",")
  4480. if #list < 3 then return nil end
  4481. local r = tonumber(list[1]) or 0
  4482. local g = tonumber(list[2]) or 0
  4483. local b = tonumber(list[3]) or 0
  4484. return Color3.new(r/255,g/255, b/255)
  4485. elseif type == "UDim2" then
  4486. local list = Split(string.gsub(string.gsub(value, "{", ""),"}",""),",")
  4487. if #list < 4 then return nil end
  4488. local xScale = tonumber(list[1]) or 0
  4489. local xOffset = tonumber(list[2]) or 0
  4490. local yScale = tonumber(list[3]) or 0
  4491. local yOffset = tonumber(list[4]) or 0
  4492. return UDim2.new(xScale, xOffset, yScale, yOffset)
  4493. elseif type == "Content" then
  4494. return value
  4495. elseif type == "float" or type == "int" or type == "double" then
  4496. return tonumber(value)
  4497. elseif type == "string" then
  4498. return value
  4499. elseif type == "NumberRange" then
  4500. local list = Split(value,",")
  4501. if #list == 1 then
  4502. if tonumber(list[1]) == nil then return nil end
  4503. local newVal = tonumber(list[1]) or 0
  4504. return NumberRange.new(newVal)
  4505. end
  4506. if #list < 2 then return nil end
  4507. local x = tonumber(list[1]) or 0
  4508. local y = tonumber(list[2]) or 0
  4509. return NumberRange.new(x,y)
  4510. elseif string.sub(value,1,4) == "Enum" then
  4511. local getEnum = value
  4512. while true do
  4513. local x,y = string.find(getEnum,".")
  4514. if y then
  4515. getEnum = string.sub(getEnum,y+1)
  4516. else
  4517. break
  4518. end
  4519. end
  4520. print(getEnum)
  4521. return getEnum
  4522. else
  4523. return nil
  4524. end
  4525. end
  4526.  
  4527. function PromptRemoteCaller(inst)
  4528. if CurrentRemoteWindow then
  4529. CurrentRemoteWindow:Destroy()
  4530. CurrentRemoteWindow = nil
  4531. end
  4532. CurrentRemoteWindow = RemoteWindow:Clone()
  4533. CurrentRemoteWindow.Parent = explorerPanel.Parent
  4534. CurrentRemoteWindow.Visible = true
  4535.  
  4536. local displayValues = false
  4537.  
  4538. local ArgumentList = CurrentRemoteWindow.MainWindow.Arguments
  4539. local ArgumentTemplate = CurrentRemoteWindow.MainWindow.ArgumentTemplate
  4540.  
  4541. if inst:IsA("RemoteEvent") then
  4542. CurrentRemoteWindow.Title.Text = "Fire Event"
  4543. CurrentRemoteWindow.MainWindow.Ok.Text = "Fire"
  4544. CurrentRemoteWindow.MainWindow.DisplayReturned.Visible = false
  4545. CurrentRemoteWindow.MainWindow.Desc2.Visible = false
  4546. end
  4547.  
  4548. local newArgument = ArgumentTemplate:Clone()
  4549. newArgument.Parent = ArgumentList
  4550. newArgument.Visible = true
  4551. newArgument.Type.MouseButton1Down:connect(function()
  4552. createDDown(newArgument.Type,function(choice)
  4553. newArgument.Type.Text = choice
  4554. end,"Script","Number","String","Color3","Vector3","Vector2","UDim2","NumberRange")
  4555. end)
  4556.  
  4557. CurrentRemoteWindow.MainWindow.Ok.MouseButton1Up:connect(function()
  4558. if CurrentRemoteWindow and inst.Parent ~= nil then
  4559. local MyArguments = {}
  4560. for i,v in pairs(ArgumentList:GetChildren()) do
  4561. table.insert(MyArguments,ToValue(v.Value.Text,v.Type.Text))
  4562. end
  4563. if inst:IsA("RemoteFunction") then
  4564. if displayValues then
  4565. spawn(function()
  4566. local myResults = inst:InvokeServer(unpack(MyArguments))
  4567. if myResults then
  4568. CreateTableCaution("Remote Caller",myResults)
  4569. else
  4570. CreateCaution("Remote Caller","This remote did not return anything.")
  4571. end
  4572. end)
  4573. else
  4574. spawn(function()
  4575. inst:InvokeServer(unpack(MyArguments))
  4576. end)
  4577. end
  4578. else
  4579. inst:FireServer(unpack(MyArguments))
  4580. end
  4581. CurrentRemoteWindow:Destroy()
  4582. CurrentRemoteWindow = nil
  4583. end
  4584. end)
  4585.  
  4586. CurrentRemoteWindow.MainWindow.Add.MouseButton1Up:connect(function()
  4587. if CurrentRemoteWindow then
  4588. local newArgument = ArgumentTemplate:Clone()
  4589. newArgument.Position = UDim2.new(0,0,0,#ArgumentList:GetChildren() * 20)
  4590. newArgument.Parent = ArgumentList
  4591. ArgumentList.CanvasSize = UDim2.new(0,0,0,#ArgumentList:GetChildren() * 20)
  4592. newArgument.Visible = true
  4593. newArgument.Type.MouseButton1Down:connect(function()
  4594. createDDown(newArgument.Type,function(choice)
  4595. newArgument.Type.Text = choice
  4596. end,"Script","Number","String","Color3","Vector3","Vector2","UDim2","NumberRange")
  4597. end)
  4598. end
  4599. end)
  4600.  
  4601. CurrentRemoteWindow.MainWindow.Subtract.MouseButton1Up:connect(function()
  4602. if CurrentRemoteWindow then
  4603. if #ArgumentList:GetChildren() > 1 then
  4604. ArgumentList:GetChildren()[#ArgumentList:GetChildren()]:Destroy()
  4605. ArgumentList.CanvasSize = UDim2.new(0,0,0,#ArgumentList:GetChildren() * 20)
  4606. end
  4607. end
  4608. end)
  4609.  
  4610. CurrentRemoteWindow.MainWindow.Cancel.MouseButton1Up:connect(function()
  4611. if CurrentRemoteWindow then
  4612. CurrentRemoteWindow:Destroy()
  4613. CurrentRemoteWindow = nil
  4614. end
  4615. end)
  4616.  
  4617. CurrentRemoteWindow.MainWindow.DisplayReturned.MouseButton1Up:connect(function()
  4618. if displayValues then
  4619. displayValues = false
  4620. CurrentRemoteWindow.MainWindow.DisplayReturned.enabled.Visible = false
  4621. else
  4622. displayValues = true
  4623. CurrentRemoteWindow.MainWindow.DisplayReturned.enabled.Visible = true
  4624. end
  4625. end)
  4626. end
  4627.  
  4628. function PromptSaveInstance(inst)
  4629. if not SaveInstance and not _G.SaveInstance then CreateCaution("SaveInstance Missing","You do not have the SaveInstance function installed. Please go to RaspberryPi's thread to retrieve it.") return end
  4630. if CurrentSaveInstanceWindow then
  4631. CurrentSaveInstanceWindow:Destroy()
  4632. CurrentSaveInstanceWindow = nil
  4633. if explorerPanel.Parent:FindFirstChild("SaveInstanceOverwriteCaution") then
  4634. explorerPanel.Parent.SaveInstanceOverwriteCaution:Destroy()
  4635. end
  4636. end
  4637. CurrentSaveInstanceWindow = SaveInstanceWindow:Clone()
  4638. CurrentSaveInstanceWindow.Parent = explorerPanel.Parent
  4639. CurrentSaveInstanceWindow.Visible = true
  4640.  
  4641. local filename = CurrentSaveInstanceWindow.MainWindow.FileName
  4642. local saveObjects = true
  4643. local overwriteCaution = false
  4644.  
  4645. CurrentSaveInstanceWindow.MainWindow.Save.MouseButton1Up:connect(function()
  4646. if readfile and getelysianpath then
  4647. if readfile(getelysianpath()..filename.Text..".rbxmx") then
  4648. if not overwriteCaution then
  4649. overwriteCaution = true
  4650. local newCaution = ConfirmationWindow:Clone()
  4651. newCaution.Name = "SaveInstanceOverwriteCaution"
  4652. newCaution.MainWindow.Desc.Text = "The file, "..filename.Text..".rbxmx, already exists. Overwrite?"
  4653. newCaution.Parent = explorerPanel.Parent
  4654. newCaution.Visible = true
  4655. newCaution.MainWindow.Yes.MouseButton1Up:connect(function()
  4656. ypcall(function()
  4657. SaveInstance(inst,filename.Text..".rbxmx",not saveObjects)
  4658. end)
  4659. overwriteCaution = false
  4660. newCaution:Destroy()
  4661. if CurrentSaveInstanceWindow then
  4662. CurrentSaveInstanceWindow:Destroy()
  4663. CurrentSaveInstanceWindow = nil
  4664. end
  4665. end)
  4666. newCaution.MainWindow.No.MouseButton1Up:connect(function()
  4667. overwriteCaution = false
  4668. newCaution:Destroy()
  4669. end)
  4670. end
  4671. else
  4672. ypcall(function()
  4673. SaveInstance(inst,filename.Text..".rbxmx",not saveObjects)
  4674. end)
  4675. if CurrentSaveInstanceWindow then
  4676. CurrentSaveInstanceWindow:Destroy()
  4677. CurrentSaveInstanceWindow = nil
  4678. if explorerPanel.Parent:FindFirstChild("SaveInstanceOverwriteCaution") then
  4679. explorerPanel.Parent.SaveInstanceOverwriteCaution:Destroy()
  4680. end
  4681. end
  4682. end
  4683. else
  4684. ypcall(function()
  4685. if SaveInstance then
  4686. SaveInstance(inst,filename.Text..".rbxmx",not saveObjects)
  4687. else
  4688. _G.SaveInstance(inst,filename.Text,not saveObjects)
  4689. end
  4690. end)
  4691. if CurrentSaveInstanceWindow then
  4692. CurrentSaveInstanceWindow:Destroy()
  4693. CurrentSaveInstanceWindow = nil
  4694. if explorerPanel.Parent:FindFirstChild("SaveInstanceOverwriteCaution") then
  4695. explorerPanel.Parent.SaveInstanceOverwriteCaution:Destroy()
  4696. end
  4697. end
  4698. end
  4699. end)
  4700. CurrentSaveInstanceWindow.MainWindow.Cancel.MouseButton1Up:connect(function()
  4701. if CurrentSaveInstanceWindow then
  4702. CurrentSaveInstanceWindow:Destroy()
  4703. CurrentSaveInstanceWindow = nil
  4704. if explorerPanel.Parent:FindFirstChild("SaveInstanceOverwriteCaution") then
  4705. explorerPanel.Parent.SaveInstanceOverwriteCaution:Destroy()
  4706. end
  4707. end
  4708. end)
  4709. CurrentSaveInstanceWindow.MainWindow.SaveObjects.MouseButton1Up:connect(function()
  4710. if saveObjects then
  4711. saveObjects = false
  4712. CurrentSaveInstanceWindow.MainWindow.SaveObjects.enabled.Visible = false
  4713. else
  4714. saveObjects = true
  4715. CurrentSaveInstanceWindow.MainWindow.SaveObjects.enabled.Visible = true
  4716. end
  4717. end)
  4718. end
  4719.  
  4720. function DestroyRightClick()
  4721. if currentRightClickMenu then
  4722. currentRightClickMenu:Destroy()
  4723. currentRightClickMenu = nil
  4724. end
  4725. if CurrentInsertObjectWindow and CurrentInsertObjectWindow.Visible then
  4726. CurrentInsertObjectWindow.Visible = false
  4727. end
  4728. end
  4729.  
  4730. function rightClickMenu(sObj)
  4731. local mouse = game:GetService("Players").LocalPlayer:GetMouse()
  4732.  
  4733. currentRightClickMenu = CreateRightClickMenu(
  4734. {"Cut","Copy","Paste Into","Duplicate","Delete","Group","Ungroup","Select Children","Teleport To","Insert Part","Insert Object","View Script","Save Instance","Call Function","Call Remote"},
  4735. "",
  4736. false,
  4737. function(option)
  4738. if option == "Cut" then
  4739. if not Option.Modifiable then return end
  4740. clipboard = {}
  4741. local list = Selection.List
  4742. local cut = {}
  4743. for i = 1,#list do
  4744. local obj = list[i]:Clone()
  4745. if obj then
  4746. table.insert(clipboard,obj)
  4747. table.insert(cut,list[i])
  4748. end
  4749. end
  4750. for i = 1,#cut do
  4751. pcall(delete,cut[i])
  4752. end
  4753. updateActions()
  4754. elseif option == "Copy" then
  4755. if not Option.Modifiable then return end
  4756. clipboard = {}
  4757. local list = Selection.List
  4758. for i = 1,#list do
  4759. table.insert(clipboard,list[i]:Clone())
  4760. end
  4761. updateActions()
  4762. elseif option == "Paste Into" then
  4763. if not Option.Modifiable then return end
  4764. local parent = Selection.List[1] or workspace
  4765. for i = 1,#clipboard do
  4766. clipboard[i]:Clone().Parent = parent
  4767. end
  4768. elseif option == "Duplicate" then
  4769. if not Option.Modifiable then return end
  4770. local list = Selection:Get()
  4771. for i = 1,#list do
  4772. list[i]:Clone().Parent = Selection.List[1].Parent or workspace
  4773. end
  4774. elseif option == "Delete" then
  4775. if not Option.Modifiable then return end
  4776. local list = Selection:Get()
  4777. for i = 1,#list do
  4778. pcall(delete,list[i])
  4779. end
  4780. Selection:Set({})
  4781. elseif option == "Group" then
  4782. if not Option.Modifiable then return end
  4783. local newModel = Instance.new("Model")
  4784. local list = Selection:Get()
  4785. newModel.Parent = Selection.List[1].Parent or workspace
  4786. for i = 1,#list do
  4787. list[i].Parent = newModel
  4788. end
  4789. Selection:Set({})
  4790. elseif option == "Ungroup" then
  4791. if not Option.Modifiable then return end
  4792. local ungrouped = {}
  4793. local list = Selection:Get()
  4794. for i = 1,#list do
  4795. if list[i]:IsA("Model") then
  4796. for i2,v2 in pairs(list[i]:GetChildren()) do
  4797. v2.Parent = list[i].Parent or workspace
  4798. table.insert(ungrouped,v2)
  4799. end
  4800. pcall(delete,list[i])
  4801. end
  4802. end
  4803. Selection:Set({})
  4804. if SettingsRemote:Invoke("SelectUngrouped") then
  4805. for i,v in pairs(ungrouped) do
  4806. Selection:Add(v)
  4807. end
  4808. end
  4809. elseif option == "Select Children" then
  4810. if not Option.Modifiable then return end
  4811. local list = Selection:Get()
  4812. Selection:Set({})
  4813. Selection:StopUpdates()
  4814. for i = 1,#list do
  4815. for i2,v2 in pairs(list[i]:GetChildren()) do
  4816. Selection:Add(v2)
  4817. end
  4818. end
  4819. Selection:ResumeUpdates()
  4820. elseif option == "Teleport To" then
  4821. if not Option.Modifiable then return end
  4822. local list = Selection:Get()
  4823. for i = 1,#list do
  4824. if list[i]:IsA("BasePart") then
  4825. pcall(function()
  4826. game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = list[i].CFrame
  4827. end)
  4828. break
  4829. end
  4830. end
  4831. elseif option == "Insert Part" then
  4832. if not Option.Modifiable then return end
  4833. local insertedParts = {}
  4834. local list = Selection:Get()
  4835. for i = 1,#list do
  4836. pcall(function()
  4837. local newPart = Instance.new("Part")
  4838. newPart.Parent = list[i]
  4839. newPart.CFrame = CFrame.new(game:GetService("Players").LocalPlayer.Character.Head.Position) + Vector3.new(0,3,0)
  4840. table.insert(insertedParts,newPart)
  4841. end)
  4842. end
  4843. elseif option == "Save Instance" then
  4844. if not Option.Modifiable then return end
  4845. local list = Selection:Get()
  4846. if #list == 1 then
  4847. list[1].Archivable = true
  4848. ypcall(function()PromptSaveInstance(list[1]:Clone())end)
  4849. elseif #list > 1 then
  4850. local newModel = Instance.new("Model")
  4851. newModel.Name = "SavedInstances"
  4852. for i = 1,#list do
  4853. ypcall(function()
  4854. list[i].Archivable = true
  4855. list[i]:Clone().Parent = newModel
  4856. end)
  4857. end
  4858. PromptSaveInstance(newModel)
  4859. end
  4860. elseif option == "Call Remote" then
  4861. if not Option.Modifiable then return end
  4862. local list = Selection:Get()
  4863. for i = 1,#list do
  4864. if list[i]:IsA("RemoteFunction") or list[i]:IsA("RemoteEvent") then
  4865. PromptRemoteCaller(list[i])
  4866. break
  4867. end
  4868. end
  4869. elseif option == "View Script" then
  4870. if not Option.Modifiable then return end
  4871. local list = Selection:Get()
  4872. for i = 1,#list do
  4873. if list[i]:IsA("LocalScript") or list[i]:IsA("ModuleScript") then
  4874. ScriptEditorEvent:Fire(list[i])
  4875. end
  4876. end
  4877. end
  4878. end)
  4879. currentRightClickMenu.Parent = explorerPanel.Parent
  4880. currentRightClickMenu.Position = UDim2.new(0,mouse.X,0,mouse.Y)
  4881. if currentRightClickMenu.AbsolutePosition.X + currentRightClickMenu.AbsoluteSize.X > explorerPanel.AbsolutePosition.X + explorerPanel.AbsoluteSize.X then
  4882. currentRightClickMenu.Position = UDim2.new(0, explorerPanel.AbsolutePosition.X + explorerPanel.AbsoluteSize.X - currentRightClickMenu.AbsoluteSize.X, 0, mouse.Y)
  4883. end
  4884. end
  4885.  
  4886. local function cancelReparentDrag()end
  4887. local function cancelSelectDrag()end
  4888. do
  4889. local listEntries = {}
  4890. local nameConnLookup = {}
  4891.  
  4892. local mouseDrag = Create('ImageButton',{
  4893. Name = "MouseDrag";
  4894. Position = UDim2.new(-0.25,0,-0.25,0);
  4895. Size = UDim2.new(1.5,0,1.5,0);
  4896. Transparency = 1;
  4897. AutoButtonColor = false;
  4898. Active = true;
  4899. ZIndex = 10;
  4900. })
  4901. local function dragSelect(last,add,button)
  4902. local connDrag
  4903. local conUp
  4904.  
  4905. conDrag = mouseDrag.MouseMoved:connect(function(x,y)
  4906. local pos = Vector2.new(x,y) - listFrame.AbsolutePosition
  4907. local size = listFrame.AbsoluteSize
  4908. if pos.x < 0 or pos.x > size.x or pos.y < 0 or pos.y > size.y then return end
  4909.  
  4910. local i = math.ceil(pos.y/ENTRY_BOUND) + scrollBar.ScrollIndex
  4911. -- Mouse may have made a large step, so interpolate between the
  4912. -- last index and the current.
  4913. for n = i<last and i or last, i>last and i or last do
  4914. local node = TreeList[n]
  4915. if node then
  4916. if add then
  4917. Selection:Add(node.Object)
  4918. else
  4919. Selection:Remove(node.Object)
  4920. end
  4921. end
  4922. end
  4923. last = i
  4924. end)
  4925.  
  4926. function cancelSelectDrag()
  4927. mouseDrag.Parent = nil
  4928. conDrag:disconnect()
  4929. conUp:disconnect()
  4930. function cancelSelectDrag()end
  4931. end
  4932.  
  4933. conUp = mouseDrag[button]:connect(cancelSelectDrag)
  4934.  
  4935. mouseDrag.Parent = GetScreen(listFrame)
  4936. end
  4937.  
  4938. local function dragReparent(object,dragGhost,clickPos,ghostOffset)
  4939. local connDrag
  4940. local conUp
  4941. local conUp2
  4942.  
  4943. local parentIndex = nil
  4944. local dragged = false
  4945.  
  4946. local parentHighlight = Create('Frame',{
  4947. Transparency = 1;
  4948. Visible = false;
  4949. Create('Frame',{
  4950. BorderSizePixel = 0;
  4951. BackgroundColor3 = Color3.new(0,0,0);
  4952. BackgroundTransparency = 0.1;
  4953. Position = UDim2.new(0,0,0,0);
  4954. Size = UDim2.new(1,0,0,1);
  4955. });
  4956. Create('Frame',{
  4957. BorderSizePixel = 0;
  4958. BackgroundColor3 = Color3.new(0,0,0);
  4959. BackgroundTransparency = 0.1;
  4960. Position = UDim2.new(1,0,0,0);
  4961. Size = UDim2.new(0,1,1,0);
  4962. });
  4963. Create('Frame',{
  4964. BorderSizePixel = 0;
  4965. BackgroundColor3 = Color3.new(0,0,0);
  4966. BackgroundTransparency = 0.1;
  4967. Position = UDim2.new(0,0,1,0);
  4968. Size = UDim2.new(1,0,0,1);
  4969. });
  4970. Create('Frame',{
  4971. BorderSizePixel = 0;
  4972. BackgroundColor3 = Color3.new(0,0,0);
  4973. BackgroundTransparency = 0.1;
  4974. Position = UDim2.new(0,0,0,0);
  4975. Size = UDim2.new(0,1,1,0);
  4976. });
  4977. })
  4978. SetZIndex(parentHighlight,9)
  4979.  
  4980. conDrag = mouseDrag.MouseMoved:connect(function(x,y)
  4981. local dragPos = Vector2.new(x,y)
  4982. if dragged then
  4983. local pos = dragPos - listFrame.AbsolutePosition
  4984. local size = listFrame.AbsoluteSize
  4985.  
  4986. parentIndex = nil
  4987. parentHighlight.Visible = false
  4988. if pos.x >= 0 and pos.x <= size.x and pos.y >= 0 and pos.y <= size.y + ENTRY_SIZE*2 then
  4989. local i = math.ceil(pos.y/ENTRY_BOUND-2)
  4990. local node = TreeList[i + scrollBar.ScrollIndex]
  4991. if node and node.Object ~= object and not object:IsAncestorOf(node.Object) then
  4992. parentIndex = i
  4993. local entry = listEntries[i]
  4994. if entry then
  4995. parentHighlight.Visible = true
  4996. parentHighlight.Position = UDim2.new(0,1,0,entry.AbsolutePosition.y-listFrame.AbsolutePosition.y)
  4997. parentHighlight.Size = UDim2.new(0,size.x-4,0,entry.AbsoluteSize.y)
  4998. end
  4999. end
  5000. end
  5001.  
  5002. dragGhost.Position = UDim2.new(0,dragPos.x+ghostOffset.x,0,dragPos.y+ghostOffset.y)
  5003. elseif (clickPos-dragPos).magnitude > 8 then
  5004. dragged = true
  5005. SetZIndex(dragGhost,9)
  5006. dragGhost.IndentFrame.Transparency = 0.25
  5007. dragGhost.IndentFrame.EntryText.TextColor3 = GuiColor.TextSelected
  5008. dragGhost.Position = UDim2.new(0,dragPos.x+ghostOffset.x,0,dragPos.y+ghostOffset.y)
  5009. dragGhost.Parent = GetScreen(listFrame)
  5010. parentHighlight.Parent = listFrame
  5011. end
  5012. end)
  5013.  
  5014. function cancelReparentDrag()
  5015. mouseDrag.Parent = nil
  5016. conDrag:disconnect()
  5017. conUp:disconnect()
  5018. conUp2:disconnect()
  5019. dragGhost:Destroy()
  5020. parentHighlight:Destroy()
  5021. function cancelReparentDrag()end
  5022. end
  5023.  
  5024. local wasSelected = Selection.Selected[object]
  5025. if not wasSelected and Option.Selectable then
  5026. Selection:Set({object})
  5027. end
  5028.  
  5029. conUp = mouseDrag.MouseButton1Up:connect(function()
  5030. cancelReparentDrag()
  5031. if dragged then
  5032. if parentIndex then
  5033. local parentNode = TreeList[parentIndex + scrollBar.ScrollIndex]
  5034. if parentNode then
  5035. parentNode.Expanded = true
  5036.  
  5037. local parentObj = parentNode.Object
  5038. local function parent(a,b)
  5039. a.Parent = b
  5040. end
  5041. if Option.Selectable then
  5042. local list = Selection.List
  5043. for i = 1,#list do
  5044. pcall(parent,list[i],parentObj)
  5045. end
  5046. else
  5047. pcall(parent,object,parentObj)
  5048. end
  5049. end
  5050. end
  5051. else
  5052. -- do selection click
  5053. if wasSelected and Option.Selectable then
  5054. Selection:Set({})
  5055. end
  5056. end
  5057. end)
  5058. conUp2 = mouseDrag.MouseButton2Down:connect(function()
  5059. cancelReparentDrag()
  5060. end)
  5061.  
  5062. mouseDrag.Parent = GetScreen(listFrame)
  5063. end
  5064.  
  5065. local entryTemplate = Create('ImageButton',{
  5066. Name = "Entry";
  5067. Transparency = 1;
  5068. AutoButtonColor = false;
  5069. Position = UDim2.new(0,0,0,0);
  5070. Size = UDim2.new(1,0,0,ENTRY_SIZE);
  5071. Create('Frame',{
  5072. Name = "IndentFrame";
  5073. BackgroundTransparency = 1;
  5074. BackgroundColor3 = GuiColor.Selected;
  5075. BorderColor3 = GuiColor.BorderSelected;
  5076. Position = UDim2.new(0,0,0,0);
  5077. Size = UDim2.new(1,0,1,0);
  5078. Create(Icon('ImageButton',0),{
  5079. Name = "Expand";
  5080. AutoButtonColor = false;
  5081. Position = UDim2.new(0,-GUI_SIZE,0.5,-GUI_SIZE/2);
  5082. Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE);
  5083. });
  5084. Create(Icon(nil,0),{
  5085. Name = "ExplorerIcon";
  5086. Position = UDim2.new(0,2+ENTRY_PADDING,0.5,-GUI_SIZE/2);
  5087. Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE);
  5088. });
  5089. Create('TextLabel',{
  5090. Name = "EntryText";
  5091. BackgroundTransparency = 1;
  5092. TextColor3 = GuiColor.Text;
  5093. TextXAlignment = 'Left';
  5094. TextYAlignment = 'Center';
  5095. Font = FONT;
  5096. FontSize = FONT_SIZE;
  5097. Text = "";
  5098. Position = UDim2.new(0,2+ENTRY_SIZE+4,0,0);
  5099. Size = UDim2.new(1,-2,1,0);
  5100. });
  5101. });
  5102. })
  5103.  
  5104. function scrollBar.UpdateCallback(self)
  5105. for i = 1,self.VisibleSpace do
  5106. local node = TreeList[i + self.ScrollIndex]
  5107. if node then
  5108. local entry = listEntries[i]
  5109. if not entry then
  5110. entry = Create(entryTemplate:Clone(),{
  5111. Position = UDim2.new(0,2,0,ENTRY_BOUND*(i-1)+2);
  5112. Size = UDim2.new(0,nodeWidth,0,ENTRY_SIZE);
  5113. ZIndex = listFrame.ZIndex;
  5114. })
  5115. listEntries[i] = entry
  5116.  
  5117. local expand = entry.IndentFrame.Expand
  5118. expand.MouseEnter:connect(function()
  5119. local node = TreeList[i + self.ScrollIndex]
  5120. if #node > 0 then
  5121. if node.Expanded then
  5122. Icon(expand,NODE_EXPANDED_OVER)
  5123. else
  5124. Icon(expand,NODE_COLLAPSED_OVER)
  5125. end
  5126. end
  5127. end)
  5128. expand.MouseLeave:connect(function()
  5129. local node = TreeList[i + self.ScrollIndex]
  5130. if #node > 0 then
  5131. if node.Expanded then
  5132. Icon(expand,NODE_EXPANDED)
  5133. else
  5134. Icon(expand,NODE_COLLAPSED)
  5135. end
  5136. end
  5137. end)
  5138. expand.MouseButton1Down:connect(function()
  5139. local node = TreeList[i + self.ScrollIndex]
  5140. if #node > 0 then
  5141. node.Expanded = not node.Expanded
  5142. if node.Object == explorerPanel.Parent and node.Expanded then
  5143. CreateCaution("Warning","Please be careful when editing instances inside here, this is like the System32 of Dex and modifying objects here can break Dex.")
  5144. end
  5145. -- use raw update so the list updates instantly
  5146. rawUpdateList()
  5147. end
  5148. end)
  5149.  
  5150. entry.MouseButton1Down:connect(function(x,y)
  5151. local node = TreeList[i + self.ScrollIndex]
  5152. DestroyRightClick()
  5153. if GetAwaitRemote:Invoke() then
  5154. bindSetAwaiting:Fire(node.Object)
  5155. return
  5156. end
  5157.  
  5158. if not HoldingShift then
  5159. lastSelectedNode = i + self.ScrollIndex
  5160. end
  5161.  
  5162. if HoldingShift and not filteringWorkspace() then
  5163. if lastSelectedNode then
  5164. if i + self.ScrollIndex - lastSelectedNode > 0 then
  5165. Selection:StopUpdates()
  5166. for i2 = 1, i + self.ScrollIndex - lastSelectedNode do
  5167. local newNode = TreeList[lastSelectedNode + i2]
  5168. if newNode then
  5169. Selection:Add(newNode.Object)
  5170. end
  5171. end
  5172. Selection:ResumeUpdates()
  5173. else
  5174. Selection:StopUpdates()
  5175. for i2 = i + self.ScrollIndex - lastSelectedNode, 1 do
  5176. local newNode = TreeList[lastSelectedNode + i2]
  5177. if newNode then
  5178. Selection:Add(newNode.Object)
  5179. end
  5180. end
  5181. Selection:ResumeUpdates()
  5182. end
  5183. end
  5184. return
  5185. end
  5186.  
  5187. if HoldingCtrl then
  5188. if Selection.Selected[node.Object] then
  5189. Selection:Remove(node.Object)
  5190. else
  5191. Selection:Add(node.Object)
  5192. end
  5193. return
  5194. end
  5195. if Option.Modifiable then
  5196. local pos = Vector2.new(x,y)
  5197. dragReparent(node.Object,entry:Clone(),pos,entry.AbsolutePosition-pos)
  5198. elseif Option.Selectable then
  5199. if Selection.Selected[node.Object] then
  5200. Selection:Set({})
  5201. else
  5202. Selection:Set({node.Object})
  5203. end
  5204. dragSelect(i+self.ScrollIndex,true,'MouseButton1Up')
  5205. end
  5206. end)
  5207.  
  5208. entry.MouseButton2Down:connect(function()
  5209. if not Option.Selectable then return end
  5210.  
  5211. DestroyRightClick()
  5212.  
  5213. curSelect = entry
  5214.  
  5215. local node = TreeList[i + self.ScrollIndex]
  5216.  
  5217. if GetAwaitRemote:Invoke() then
  5218. bindSetAwaiting:Fire(node.Object)
  5219. return
  5220. end
  5221.  
  5222. if not Selection.Selected[node.Object] then
  5223. Selection:Set({node.Object})
  5224. end
  5225. end)
  5226.  
  5227.  
  5228. entry.MouseButton2Up:connect(function()
  5229. if not Option.Selectable then return end
  5230.  
  5231. local node = TreeList[i + self.ScrollIndex]
  5232.  
  5233. if checkMouseInGui(curSelect) then
  5234. rightClickMenu(node.Object)
  5235. end
  5236. end)
  5237.  
  5238. entry.Parent = listFrame
  5239. end
  5240.  
  5241. entry.Visible = true
  5242.  
  5243. local object = node.Object
  5244.  
  5245. -- update expand icon
  5246. if #node == 0 then
  5247. entry.IndentFrame.Expand.Visible = false
  5248. elseif node.Expanded then
  5249. Icon(entry.IndentFrame.Expand,NODE_EXPANDED)
  5250. entry.IndentFrame.Expand.Visible = true
  5251. else
  5252. Icon(entry.IndentFrame.Expand,NODE_COLLAPSED)
  5253. entry.IndentFrame.Expand.Visible = true
  5254. end
  5255.  
  5256. -- update explorer icon
  5257. Icon(entry.IndentFrame.ExplorerIcon,ExplorerIndex[object.ClassName] or 0)
  5258.  
  5259. -- update indentation
  5260. local w = (node.Depth)*(2+ENTRY_PADDING+GUI_SIZE)
  5261. entry.IndentFrame.Position = UDim2.new(0,w,0,0)
  5262. entry.IndentFrame.Size = UDim2.new(1,-w,1,0)
  5263.  
  5264. -- update name change detection
  5265. if nameConnLookup[entry] then
  5266. nameConnLookup[entry]:disconnect()
  5267. end
  5268. local text = entry.IndentFrame.EntryText
  5269. text.Text = object.Name
  5270. nameConnLookup[entry] = node.Object.Changed:connect(function(p)
  5271. if p == 'Name' then
  5272. text.Text = object.Name
  5273. end
  5274. end)
  5275.  
  5276. -- update selection
  5277. entry.IndentFrame.Transparency = node.Selected and 0 or 1
  5278. text.TextColor3 = GuiColor[node.Selected and 'TextSelected' or 'Text']
  5279.  
  5280. entry.Size = UDim2.new(0,nodeWidth,0,ENTRY_SIZE)
  5281. elseif listEntries[i] then
  5282. listEntries[i].Visible = false
  5283. end
  5284. end
  5285. for i = self.VisibleSpace+1,self.TotalSpace do
  5286. local entry = listEntries[i]
  5287. if entry then
  5288. listEntries[i] = nil
  5289. entry:Destroy()
  5290. end
  5291. end
  5292. end
  5293.  
  5294. function scrollBarH.UpdateCallback(self)
  5295. for i = 1,scrollBar.VisibleSpace do
  5296. local node = TreeList[i + scrollBar.ScrollIndex]
  5297. if node then
  5298. local entry = listEntries[i]
  5299. if entry then
  5300. entry.Position = UDim2.new(0,2 - scrollBarH.ScrollIndex,0,ENTRY_BOUND*(i-1)+2)
  5301. end
  5302. end
  5303. end
  5304. end
  5305.  
  5306. Connect(listFrame.Changed,function(p)
  5307. if p == 'AbsoluteSize' then
  5308. rawUpdateSize()
  5309. end
  5310. end)
  5311.  
  5312. local wheelAmount = 6
  5313. explorerPanel.MouseWheelForward:connect(function()
  5314. if scrollBar.VisibleSpace - 1 > wheelAmount then
  5315. scrollBar:ScrollTo(scrollBar.ScrollIndex - wheelAmount)
  5316. else
  5317. scrollBar:ScrollTo(scrollBar.ScrollIndex - scrollBar.VisibleSpace)
  5318. end
  5319. end)
  5320. explorerPanel.MouseWheelBackward:connect(function()
  5321. if scrollBar.VisibleSpace - 1 > wheelAmount then
  5322. scrollBar:ScrollTo(scrollBar.ScrollIndex + wheelAmount)
  5323. else
  5324. scrollBar:ScrollTo(scrollBar.ScrollIndex + scrollBar.VisibleSpace)
  5325. end
  5326. end)
  5327. end
  5328.  
  5329. ----------------------------------------------------------------
  5330. ----------------------------------------------------------------
  5331. ----------------------------------------------------------------
  5332. ----------------------------------------------------------------
  5333. ---- Object detection
  5334.  
  5335. -- Inserts `v` into `t` at `i`. Also sets `Index` field in `v`.
  5336. local function insert(t,i,v)
  5337. for n = #t,i,-1 do
  5338. local v = t[n]
  5339. v.Index = n+1
  5340. t[n+1] = v
  5341. end
  5342. v.Index = i
  5343. t[i] = v
  5344. end
  5345.  
  5346. -- Removes `i` from `t`. Also sets `Index` field in removed value.
  5347. local function remove(t,i)
  5348. local v = t[i]
  5349. for n = i+1,#t do
  5350. local v = t[n]
  5351. v.Index = n-1
  5352. t[n-1] = v
  5353. end
  5354. t[#t] = nil
  5355. v.Index = 0
  5356. return v
  5357. end
  5358.  
  5359. -- Returns how deep `o` is in the tree.
  5360. local function depth(o)
  5361. local d = -1
  5362. while o do
  5363. o = o.Parent
  5364. d = d + 1
  5365. end
  5366. return d
  5367. end
  5368.  
  5369.  
  5370. local connLookup = {}
  5371.  
  5372. -- Returns whether a node would be present in the tree list
  5373. local function nodeIsVisible(node)
  5374. local visible = true
  5375. node = node.Parent
  5376. while node and visible do
  5377. visible = visible and node.Expanded
  5378. node = node.Parent
  5379. end
  5380. return visible
  5381. end
  5382.  
  5383. -- Removes an object's tree node. Called when the object stops existing in the
  5384. -- game tree.
  5385. local function removeObject(object)
  5386. local objectNode = NodeLookup[object]
  5387. if not objectNode then
  5388. return
  5389. end
  5390.  
  5391. local visible = nodeIsVisible(objectNode)
  5392.  
  5393. Selection:Remove(object,true)
  5394.  
  5395. local parent = objectNode.Parent
  5396. remove(parent,objectNode.Index)
  5397. NodeLookup[object] = nil
  5398. connLookup[object]:disconnect()
  5399. connLookup[object] = nil
  5400.  
  5401. if visible then
  5402. updateList()
  5403. elseif nodeIsVisible(parent) then
  5404. updateScroll()
  5405. end
  5406. end
  5407.  
  5408. -- Moves a tree node to a new parent. Called when an existing object's parent
  5409. -- changes.
  5410. local function moveObject(object,parent)
  5411. local objectNode = NodeLookup[object]
  5412. if not objectNode then
  5413. return
  5414. end
  5415.  
  5416. local parentNode = NodeLookup[parent]
  5417. if not parentNode then
  5418. return
  5419. end
  5420.  
  5421. local visible = nodeIsVisible(objectNode)
  5422.  
  5423. remove(objectNode.Parent,objectNode.Index)
  5424. objectNode.Parent = parentNode
  5425.  
  5426. objectNode.Depth = depth(object)
  5427. local function r(node,d)
  5428. for i = 1,#node do
  5429. node[i].Depth = d
  5430. r(node[i],d+1)
  5431. end
  5432. end
  5433. r(objectNode,objectNode.Depth+1)
  5434.  
  5435. insert(parentNode,#parentNode+1,objectNode)
  5436.  
  5437. if visible or nodeIsVisible(objectNode) then
  5438. updateList()
  5439. elseif nodeIsVisible(objectNode.Parent) then
  5440. updateScroll()
  5441. end
  5442. end
  5443.  
  5444. -- ScriptContext['/Libraries/LibraryRegistration/LibraryRegistration']
  5445. -- This RobloxLocked object lets me index its properties for some reason
  5446.  
  5447. local function check(object)
  5448. return object.AncestryChanged
  5449. end
  5450.  
  5451. -- Creates a new tree node from an object. Called when an object starts
  5452. -- existing in the game tree.
  5453. local function addObject(object,noupdate)
  5454. if script then
  5455. -- protect against naughty RobloxLocked objects
  5456. local s = pcall(check,object)
  5457. if not s then
  5458. return
  5459. end
  5460. end
  5461.  
  5462. local parentNode = NodeLookup[object.Parent]
  5463. if not parentNode then
  5464. return
  5465. end
  5466.  
  5467. local objectNode = {
  5468. Object = object;
  5469. Parent = parentNode;
  5470. Index = 0;
  5471. Expanded = false;
  5472. Selected = false;
  5473. Depth = depth(object);
  5474. }
  5475.  
  5476. connLookup[object] = Connect(object.AncestryChanged,function(c,p)
  5477. if c == object then
  5478. if p == nil then
  5479. removeObject(c)
  5480. else
  5481. moveObject(c,p)
  5482. end
  5483. end
  5484. end)
  5485.  
  5486. NodeLookup[object] = objectNode
  5487. insert(parentNode,#parentNode+1,objectNode)
  5488.  
  5489. if not noupdate then
  5490. if nodeIsVisible(objectNode) then
  5491. updateList()
  5492. elseif nodeIsVisible(objectNode.Parent) then
  5493. updateScroll()
  5494. end
  5495. end
  5496. end
  5497.  
  5498. local function makeObject(obj,par)
  5499. local newObject = Instance.new(obj.ClassName)
  5500. for i,v in pairs(obj.Properties) do
  5501. ypcall(function()
  5502. local newProp
  5503. newProp = ToPropValue(v.Value,v.Type)
  5504. newObject[v.Name] = newProp
  5505. end)
  5506. end
  5507. newObject.Parent = par
  5508. end
  5509.  
  5510. local function writeObject(obj)
  5511. local newObject = {ClassName = obj.ClassName, Properties = {}}
  5512. for i,v in pairs(RbxApi.GetProperties(obj.className)) do
  5513. if v["Name"] ~= "Parent" then
  5514. print("thispassed")
  5515. table.insert(newObject.Properties,{Name = v["Name"], Type = v["ValueType"], Value = tostring(obj[v["Name"]])})
  5516. end
  5517. end
  5518. return newObject
  5519. end
  5520.  
  5521. local function buildDexStorage()
  5522. local localDexStorage
  5523.  
  5524. local success,err = ypcall(function()
  5525. localDexStorage = game:GetObjects("rbxasset://DexStorage.rbxm")[1]
  5526. end)
  5527.  
  5528. if success and localDexStorage then
  5529. for i,v in pairs(localDexStorage:GetChildren()) do
  5530. ypcall(function()
  5531. v.Parent = DexStorageMain
  5532. end)
  5533. end
  5534. end
  5535.  
  5536. updateDexStorageListeners()
  5537. --[[
  5538. local localDexStorage = readfile(getelysianpath().."DexStorage.txt")--game:GetService("CookiesService"):GetCookieValue("DexStorage")
  5539. --local success,err = pcall(function()
  5540. if localDexStorage then
  5541. local objTable = game:GetService("HttpService"):JSONDecode(localDexStorage)
  5542. for i,v in pairs(objTable) do
  5543. makeObject(v,DexStorageMain)
  5544. end
  5545. end
  5546. --end)
  5547. --]]
  5548. end
  5549.  
  5550. local dexStorageDebounce = false
  5551. local dexStorageListeners = {}
  5552.  
  5553. local function updateDexStorage()
  5554. if dexStorageDebounce then return end
  5555. dexStorageDebounce = true
  5556.  
  5557. wait()
  5558.  
  5559. pcall(function()
  5560. saveinstance("content//DexStorage.rbxm",DexStorageMain)
  5561. end)
  5562.  
  5563. updateDexStorageListeners()
  5564.  
  5565. dexStorageDebounce = false
  5566. --[[
  5567. local success,err = ypcall(function()
  5568. local objs = {}
  5569. for i,v in pairs(DexStorageMain:GetChildren()) do
  5570. table.insert(objs,writeObject(v))
  5571. end
  5572. writefile(getelysianpath().."DexStorage.txt",game:GetService("HttpService"):JSONEncode(objs))
  5573. --game:GetService("CookiesService"):SetCookieValue("DexStorage",game:GetService("HttpService"):JSONEncode(objs))
  5574. end)
  5575. if err then
  5576. CreateCaution("DexStorage Save Fail!","DexStorage broke! If you see this message, report to Raspberry Pi!")
  5577. end
  5578. print("hi")
  5579. --]]
  5580. end
  5581.  
  5582. function updateDexStorageListeners()
  5583. for i,v in pairs(dexStorageListeners) do
  5584. v:Disconnect()
  5585. end
  5586. dexStorageListeners = {}
  5587. for i,v in pairs(DexStorageMain:GetChildren()) do
  5588. pcall(function()
  5589. local ev = v.Changed:connect(updateDexStorage)
  5590. table.insert(dexStorageListeners,ev)
  5591. end)
  5592. end
  5593. end
  5594.  
  5595. do
  5596. NodeLookup[workspace.Parent] = {
  5597. Object = workspace.Parent;
  5598. Parent = nil;
  5599. Index = 0;
  5600. Expanded = true;
  5601. }
  5602.  
  5603. NodeLookup[DexOutput] = {
  5604. Object = DexOutput;
  5605. Parent = nil;
  5606. Index = 0;
  5607. Expanded = true;
  5608. }
  5609.  
  5610. if DexStorageEnabled then
  5611. NodeLookup[DexStorage] = {
  5612. Object = DexStorage;
  5613. Parent = nil;
  5614. Index = 0;
  5615. Expanded = true;
  5616. }
  5617. end
  5618.  
  5619. if NilStorageEnabled then
  5620. NodeLookup[NilStorage] = {
  5621. Object = NilStorage;
  5622. Parent = nil;
  5623. Index = 0;
  5624. Expanded = true;
  5625. }
  5626. end
  5627.  
  5628. Connect(game.DescendantAdded,addObject)
  5629. Connect(game.DescendantRemoving,removeObject)
  5630.  
  5631. Connect(DexOutput.DescendantAdded,addObject)
  5632. Connect(DexOutput.DescendantRemoving,removeObject)
  5633.  
  5634. if DexStorageEnabled then
  5635. --[[
  5636. if readfile(getelysianpath().."DexStorage.txt") == nil then
  5637. writefile(getelysianpath().."DexStorage.txt","")
  5638. end
  5639. --]]
  5640.  
  5641. buildDexStorage()
  5642.  
  5643. Connect(DexStorage.DescendantAdded,addObject)
  5644. Connect(DexStorage.DescendantRemoving,removeObject)
  5645.  
  5646. Connect(DexStorage.DescendantAdded,updateDexStorage)
  5647. Connect(DexStorage.DescendantRemoving,updateDexStorage)
  5648. end
  5649.  
  5650. if NilStorageEnabled then
  5651. Connect(NilStorage.DescendantAdded,addObject)
  5652. Connect(NilStorage.DescendantRemoving,removeObject)
  5653.  
  5654. local currentTable = get_nil_instances()
  5655.  
  5656. spawn(function()
  5657. while wait() do
  5658. if #currentTable ~= #get_nil_instances() then
  5659. currentTable = get_nil_instances()
  5660. --NilStorageMain:ClearAllChildren()
  5661. for i,v in pairs(get_nil_instances()) do
  5662. if v ~= NilStorage and v ~= DexStorage then
  5663. pcall(function()
  5664. v.Parent = NilStorageMain
  5665. end)
  5666. --[[
  5667. local newNil = v
  5668. newNil.Archivable = true
  5669. newNil:Clone().Parent = NilStorageMain
  5670. --]]
  5671. end
  5672. end
  5673. end
  5674. end
  5675. end)
  5676. end
  5677.  
  5678. local function get(o)
  5679. return o:GetChildren()
  5680. end
  5681.  
  5682. local function r(o)
  5683. local s,children = pcall(get,o)
  5684. if s then
  5685. for i = 1,#children do
  5686. addObject(children[i],true)
  5687. r(children[i])
  5688. end
  5689. end
  5690. end
  5691.  
  5692. r(workspace.Parent)
  5693. r(DexOutput)
  5694. if DexStorageEnabled then
  5695. r(DexStorage)
  5696. end
  5697. if NilStorageEnabled then
  5698. r(NilStorage)
  5699. end
  5700.  
  5701. scrollBar.VisibleSpace = math.ceil(listFrame.AbsoluteSize.y/ENTRY_BOUND)
  5702. updateList()
  5703. end
  5704.  
  5705. ----------------------------------------------------------------
  5706. ----------------------------------------------------------------
  5707. ----------------------------------------------------------------
  5708. ----------------------------------------------------------------
  5709. ---- Actions
  5710.  
  5711. local actionButtons do
  5712. actionButtons = {}
  5713.  
  5714. local totalActions = 1
  5715. local currentActions = totalActions
  5716. local function makeButton(icon,over,name,vis,cond)
  5717. local buttonEnabled = false
  5718.  
  5719. local button = Create(Icon('ImageButton',icon),{
  5720. Name = name .. "Button";
  5721. Visible = Option.Modifiable and Option.Selectable;
  5722. Position = UDim2.new(1,-(GUI_SIZE+2)*currentActions+2,0.25,-GUI_SIZE/2);
  5723. Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE);
  5724. Parent = headerFrame;
  5725. })
  5726.  
  5727. local tipText = Create('TextLabel',{
  5728. Name = name .. "Text";
  5729. Text = name;
  5730. Visible = false;
  5731. BackgroundTransparency = 1;
  5732. TextXAlignment = 'Right';
  5733. Font = FONT;
  5734. FontSize = FONT_SIZE;
  5735. Position = UDim2.new(0,0,0,0);
  5736. Size = UDim2.new(1,-(GUI_SIZE+2)*totalActions,1,0);
  5737. Parent = headerFrame;
  5738. })
  5739.  
  5740.  
  5741. button.MouseEnter:connect(function()
  5742. if buttonEnabled then
  5743. button.BackgroundTransparency = 0.9
  5744. end
  5745. --Icon(button,over)
  5746. --tipText.Visible = true
  5747. end)
  5748. button.MouseLeave:connect(function()
  5749. button.BackgroundTransparency = 1
  5750. --Icon(button,icon)
  5751. --tipText.Visible = false
  5752. end)
  5753.  
  5754. currentActions = currentActions + 1
  5755. actionButtons[#actionButtons+1] = {Obj = button,Cond = cond}
  5756. QuickButtons[#actionButtons+1] = {Obj = button,Cond = cond, Toggle = function(on)
  5757. if on then
  5758. buttonEnabled = true
  5759. Icon(button,over)
  5760. else
  5761. buttonEnabled = false
  5762. Icon(button,icon)
  5763. end
  5764. end}
  5765. return button
  5766. end
  5767.  
  5768. --local clipboard = {}
  5769. local function delete(o)
  5770. o.Parent = nil
  5771. end
  5772.  
  5773. makeButton(ACTION_EDITQUICKACCESS,ACTION_EDITQUICKACCESS,"Options",true,function()return true end).MouseButton1Click:connect(function()
  5774.  
  5775. end)
  5776.  
  5777.  
  5778. -- DELETE
  5779. makeButton(ACTION_DELETE,ACTION_DELETE_OVER,"Delete",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
  5780. if not Option.Modifiable then return end
  5781. local list = Selection:Get()
  5782. for i = 1,#list do
  5783. pcall(delete,list[i])
  5784. end
  5785. Selection:Set({})
  5786. end)
  5787.  
  5788. -- PASTE
  5789. makeButton(ACTION_PASTE,ACTION_PASTE_OVER,"Paste",true,function() return #Selection:Get() > 0 and #clipboard > 0 end).MouseButton1Click:connect(function()
  5790. if not Option.Modifiable then return end
  5791. local parent = Selection.List[1] or workspace
  5792. for i = 1,#clipboard do
  5793. clipboard[i]:Clone().Parent = parent
  5794. end
  5795. end)
  5796.  
  5797. -- COPY
  5798. makeButton(ACTION_COPY,ACTION_COPY_OVER,"Copy",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
  5799. if not Option.Modifiable then return end
  5800. clipboard = {}
  5801. local list = Selection.List
  5802. for i = 1,#list do
  5803. table.insert(clipboard,list[i]:Clone())
  5804. end
  5805. updateActions()
  5806. end)
  5807.  
  5808. -- CUT
  5809. makeButton(ACTION_CUT,ACTION_CUT_OVER,"Cut",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
  5810. if not Option.Modifiable then return end
  5811. clipboard = {}
  5812. local list = Selection.List
  5813. local cut = {}
  5814. for i = 1,#list do
  5815. local obj = list[i]:Clone()
  5816. if obj then
  5817. table.insert(clipboard,obj)
  5818. table.insert(cut,list[i])
  5819. end
  5820. end
  5821. for i = 1,#cut do
  5822. pcall(delete,cut[i])
  5823. end
  5824. updateActions()
  5825. end)
  5826.  
  5827. -- FREEZE
  5828. makeButton(ACTION_FREEZE,ACTION_FREEZE,"Freeze",true,function() return true end)
  5829.  
  5830. -- ADD/REMOVE STARRED
  5831. makeButton(ACTION_ADDSTAR,ACTION_ADDSTAR_OVER,"Star",true,function() return #Selection:Get() > 0 end)
  5832.  
  5833. -- STARRED
  5834. makeButton(ACTION_STARRED,ACTION_STARRED,"Starred",true,function() return true end)
  5835.  
  5836.  
  5837. -- SORT
  5838. -- local actionSort = makeButton(ACTION_SORT,ACTION_SORT_OVER,"Sort")
  5839. end
  5840.  
  5841. ----------------------------------------------------------------
  5842. ----------------------------------------------------------------
  5843. ----------------------------------------------------------------
  5844. ----------------------------------------------------------------
  5845. ---- Option Bindables
  5846.  
  5847. do
  5848. local optionCallback = {
  5849. Modifiable = function(value)
  5850. for i = 1,#actionButtons do
  5851. actionButtons[i].Obj.Visible = value and Option.Selectable
  5852. end
  5853. cancelReparentDrag()
  5854. end;
  5855. Selectable = function(value)
  5856. for i = 1,#actionButtons do
  5857. actionButtons[i].Obj.Visible = value and Option.Modifiable
  5858. end
  5859. cancelSelectDrag()
  5860. Selection:Set({})
  5861. end;
  5862. }
  5863.  
  5864. local bindSetOption = explorerPanel:FindFirstChild("SetOption")
  5865. if not bindSetOption then
  5866. bindSetOption = Create('BindableFunction',{Name = "SetOption"})
  5867. bindSetOption.Parent = explorerPanel
  5868. end
  5869.  
  5870. bindSetOption.OnInvoke = function(optionName,value)
  5871. if optionCallback[optionName] then
  5872. Option[optionName] = value
  5873. optionCallback[optionName](value)
  5874. end
  5875. end
  5876.  
  5877. local bindGetOption = explorerPanel:FindFirstChild("GetOption")
  5878. if not bindGetOption then
  5879. bindGetOption = Create('BindableFunction',{Name = "GetOption"})
  5880. bindGetOption.Parent = explorerPanel
  5881. end
  5882.  
  5883. bindGetOption.OnInvoke = function(optionName)
  5884. if optionName then
  5885. return Option[optionName]
  5886. else
  5887. local options = {}
  5888. for k,v in pairs(Option) do
  5889. options[k] = v
  5890. end
  5891. return options
  5892. end
  5893. end
  5894. end
  5895.  
  5896. function SelectionVar()
  5897. return Selection
  5898. end
  5899.  
  5900. Input.InputBegan:connect(function(key)
  5901. if key.KeyCode == Enum.KeyCode.LeftControl then
  5902. HoldingCtrl = true
  5903. end
  5904. if key.KeyCode == Enum.KeyCode.LeftShift then
  5905. HoldingShift = true
  5906. end
  5907. end)
  5908.  
  5909. Input.InputEnded:connect(function(key)
  5910. if key.KeyCode == Enum.KeyCode.LeftControl then
  5911. HoldingCtrl = false
  5912. end
  5913. if key.KeyCode == Enum.KeyCode.LeftShift then
  5914. HoldingShift = false
  5915. end
  5916. end)
  5917.  
  5918. while RbxApi == nil do
  5919. RbxApi = GetApiRemote:Invoke()
  5920. wait()
  5921. end
  5922.  
  5923. explorerFilter.Changed:connect(function(prop)
  5924. if prop == "Text" then
  5925. rawUpdateList()
  5926. end
  5927. end)
  5928.  
  5929. CurrentInsertObjectWindow = CreateInsertObjectMenu(
  5930. GetClasses(),
  5931. "",
  5932. false,
  5933. function(option)
  5934. CurrentInsertObjectWindow.Visible = false
  5935. local list = SelectionVar():Get()
  5936. for i = 1,#list do
  5937. pcall(function() Instance.new(option,list[i]) end)
  5938. end
  5939. DestroyRightClick()
  5940. end
  5941. )
  5942. end))
  5943. BindableFunction17.Name = "GetPrint"
  5944. BindableFunction17.Parent = Frame10
  5945. LocalScript18.Name = "Selection"
  5946. LocalScript18.Parent = ScreenGui0
  5947. table.insert(cors,sandbox(LocalScript18,function()
  5948. local Gui = script.Parent
  5949.  
  5950. local IntroFrame = Gui:WaitForChild("IntroFrame")
  5951.  
  5952. local SideMenu = Gui:WaitForChild("SideMenu")
  5953. local OpenToggleButton = Gui:WaitForChild("Toggle")
  5954. local CloseToggleButton = SideMenu:WaitForChild("Toggle")
  5955. local OpenScriptEditorButton = SideMenu:WaitForChild("OpenScriptEditor")
  5956.  
  5957. local ScriptEditor = Gui:WaitForChild("ScriptEditor")
  5958.  
  5959. local SlideOut = SideMenu:WaitForChild("SlideOut")
  5960. local SlideFrame = SlideOut:WaitForChild("SlideFrame")
  5961. local Slant = SideMenu:WaitForChild("Slant")
  5962.  
  5963. local ExplorerButton = SlideFrame:WaitForChild("Explorer")
  5964. local SettingsButton = SlideFrame:WaitForChild("Settings")
  5965.  
  5966. local SelectionBox = Instance.new("SelectionBox")
  5967. SelectionBox.Parent = Gui
  5968.  
  5969. local ExplorerPanel = Gui:WaitForChild("ExplorerPanel")
  5970. local PropertiesFrame = Gui:WaitForChild("PropertiesFrame")
  5971. local SaveMapWindow = Gui:WaitForChild("SaveMapWindow")
  5972. local RemoteDebugWindow = Gui:WaitForChild("RemoteDebugWindow")
  5973.  
  5974. local SettingsPanel = Gui:WaitForChild("SettingsPanel")
  5975. local AboutPanel = Gui:WaitForChild("About")
  5976. local SettingsListener = SettingsPanel:WaitForChild("GetSetting")
  5977. local SettingTemplate = SettingsPanel:WaitForChild("SettingTemplate")
  5978. local SettingList = SettingsPanel:WaitForChild("SettingList")
  5979.  
  5980. local SaveMapCopyList = SaveMapWindow:WaitForChild("CopyList")
  5981. local SaveMapSettingFrame = SaveMapWindow:WaitForChild("MapSettings")
  5982. local SaveMapName = SaveMapWindow:WaitForChild("FileName")
  5983. local SaveMapButton = SaveMapWindow:WaitForChild("Save")
  5984. local SaveMapCopyTemplate = SaveMapWindow:WaitForChild("Entry")
  5985. local SaveMapSettings = {
  5986. CopyWhat = {
  5987. Workspace = true,
  5988. Lighting = true,
  5989. ReplicatedStorage = true,
  5990. ReplicatedFirst = true,
  5991. StarterPack = true,
  5992. StarterGui = true,
  5993. StarterPlayer = true
  5994. },
  5995. SaveScripts = true,
  5996. SaveTerrain = true,
  5997. LightingProperties = true,
  5998. CameraInstances = true
  5999. }
  6000.  
  6001. --[[
  6002. local ClickSelectOption = SettingsPanel:WaitForChild("ClickSelect"):WaitForChild("Change")
  6003. local SelectionBoxOption = SettingsPanel:WaitForChild("SelectionBox"):WaitForChild("Change")
  6004. local ClearPropsOption = SettingsPanel:WaitForChild("ClearProperties"):WaitForChild("Change")
  6005. local SelectUngroupedOption = SettingsPanel:WaitForChild("SelectUngrouped"):WaitForChild("Change")
  6006. --]]
  6007.  
  6008. local SelectionChanged = ExplorerPanel:WaitForChild("SelectionChanged")
  6009. local GetSelection = ExplorerPanel:WaitForChild("GetSelection")
  6010. local SetSelection = ExplorerPanel:WaitForChild("SetSelection")
  6011.  
  6012. local Player = game:GetService("Players").LocalPlayer
  6013. local Mouse = Player:GetMouse()
  6014.  
  6015. local CurrentWindow = "Nothing c:"
  6016. local Windows = {
  6017. Explorer = {
  6018. ExplorerPanel,
  6019. PropertiesFrame
  6020. },
  6021. Settings = {SettingsPanel},
  6022. SaveMap = {SaveMapWindow},
  6023. Remotes = {RemoteDebugWindow},
  6024. About = {AboutPanel},
  6025. }
  6026.  
  6027. function switchWindows(wName,over)
  6028. if CurrentWindow == wName and not over then return end
  6029.  
  6030. local count = 0
  6031.  
  6032. for i,v in pairs(Windows) do
  6033. count = 0
  6034. if i ~= wName then
  6035. for _,c in pairs(v) do c:TweenPosition(UDim2.new(1, 30, count * 0.5, count * 36), "Out", "Quad", 0.5, true) count = count + 1 end
  6036. end
  6037. end
  6038.  
  6039. count = 0
  6040.  
  6041. if Windows[wName] then
  6042. for _,c in pairs(Windows[wName]) do c:TweenPosition(UDim2.new(1, -300, count * 0.5, count * 36), "Out", "Quad", 0.5, true) count = count + 1 end
  6043. end
  6044.  
  6045. if wName ~= "Nothing c:" then
  6046. CurrentWindow = wName
  6047. for i,v in pairs(SlideFrame:GetChildren()) do
  6048. v.BackgroundTransparency = 1
  6049. v.Icon.ImageColor3 = Color3.new(70/255, 70/255, 70/255)
  6050. end
  6051. if SlideFrame:FindFirstChild(wName) then
  6052. SlideFrame[wName].BackgroundTransparency = 0.5
  6053. SlideFrame[wName].Icon.ImageColor3 = Color3.new(0,0,0)
  6054. end
  6055. end
  6056. end
  6057.  
  6058. function toggleDex(on)
  6059. if on then
  6060. SideMenu:TweenPosition(UDim2.new(1, -330, 0, 0), "Out", "Quad", 0.5, true)
  6061. OpenToggleButton:TweenPosition(UDim2.new(1,0,0,0), "Out", "Quad", 0.5, true)
  6062. switchWindows(CurrentWindow,true)
  6063. else
  6064. SideMenu:TweenPosition(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.5, true)
  6065. OpenToggleButton:TweenPosition(UDim2.new(1,-40,0,0), "Out", "Quad", 0.5, true)
  6066. switchWindows("Nothing c:")
  6067. end
  6068. end
  6069.  
  6070. local Settings = {
  6071. ClickSelect = false,
  6072. SelBox = false,
  6073. ClearProps = false,
  6074. SelectUngrouped = true,
  6075. SaveInstanceScripts = true
  6076. }
  6077.  
  6078. function ReturnSetting(set)
  6079. if set == "ClearProps" then
  6080. return Settings.ClearProps
  6081. elseif set == "SelectUngrouped" then
  6082. return Settings.SelectUngrouped
  6083. end
  6084. end
  6085.  
  6086. OpenToggleButton.MouseButton1Up:connect(function()
  6087. toggleDex(true)
  6088. end)
  6089.  
  6090. OpenScriptEditorButton.MouseButton1Up:connect(function()
  6091. if OpenScriptEditorButton.Active then
  6092. ScriptEditor.Visible = true
  6093. end
  6094. end)
  6095.  
  6096. CloseToggleButton.MouseButton1Up:connect(function()
  6097. if CloseToggleButton.Active then
  6098. toggleDex(false)
  6099. end
  6100. end)
  6101.  
  6102. --[[
  6103. OpenToggleButton.MouseButton1Up:connect(function()
  6104. SideMenu:TweenPosition(UDim2.new(1, -330, 0, 0), "Out", "Quad", 0.5, true)
  6105.  
  6106. if CurrentWindow == "Explorer" then
  6107. ExplorerPanel:TweenPosition(UDim2.new(1, -300, 0, 0), "Out", "Quad", 0.5, true)
  6108. PropertiesFrame:TweenPosition(UDim2.new(1, -300, 0.5, 36), "Out", "Quad", 0.5, true)
  6109. else
  6110. SettingsPanel:TweenPosition(UDim2.new(1, -300, 0, 0), "Out", "Quad", 0.5, true)
  6111. end
  6112.  
  6113. OpenToggleButton:TweenPosition(UDim2.new(1,0,0,0), "Out", "Quad", 0.5, true)
  6114. end)
  6115.  
  6116. CloseToggleButton.MouseButton1Up:connect(function()
  6117. SideMenu:TweenPosition(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.5, true)
  6118.  
  6119. ExplorerPanel:TweenPosition(UDim2.new(1, 30, 0, 0), "Out", "Quad", 0.5, true)
  6120. PropertiesFrame:TweenPosition(UDim2.new(1, 30, 0.5, 36), "Out", "Quad", 0.5, true)
  6121. SettingsPanel:TweenPosition(UDim2.new(1, 30, 0, 0), "Out", "Quad", 0.5, true)
  6122.  
  6123. OpenToggleButton:TweenPosition(UDim2.new(1,-30,0,0), "Out", "Quad", 0.5, true)
  6124. end)
  6125. --]]
  6126.  
  6127. --[[
  6128. ExplorerButton.MouseButton1Up:connect(function()
  6129. switchWindows("Explorer")
  6130. end)
  6131.  
  6132. SettingsButton.MouseButton1Up:connect(function()
  6133. switchWindows("Settings")
  6134. end)
  6135. --]]
  6136.  
  6137. for i,v in pairs(SlideFrame:GetChildren()) do
  6138. v.MouseButton1Click:connect(function()
  6139. switchWindows(v.Name)
  6140. end)
  6141.  
  6142. v.MouseEnter:connect(function()v.BackgroundTransparency = 0.5 end)
  6143. v.MouseLeave:connect(function()if CurrentWindow~=v.Name then v.BackgroundTransparency = 1 end end)
  6144. end
  6145.  
  6146. --[[
  6147. ExplorerButton.MouseButton1Up:connect(function()
  6148. if CurrentWindow ~= "Explorer" then
  6149. CurrentWindow = "Explorer"
  6150.  
  6151. ExplorerPanel:TweenPosition(UDim2.new(1, -300, 0, 0), "Out", "Quad", 0.5, true)
  6152. PropertiesFrame:TweenPosition(UDim2.new(1, -300, 0.5, 36), "Out", "Quad", 0.5, true)
  6153. SettingsPanel:TweenPosition(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.5, true)
  6154. end
  6155. end)
  6156.  
  6157. SettingsButton.MouseButton1Up:connect(function()
  6158. if CurrentWindow ~= "Settings" then
  6159. CurrentWindow = "Settings"
  6160.  
  6161. ExplorerPanel:TweenPosition(UDim2.new(1, 0, 0, 0), "Out", "Quad", 0.5, true)
  6162. PropertiesFrame:TweenPosition(UDim2.new(1, 0, 0.5, 36), "Out", "Quad", 0.5, true)
  6163. SettingsPanel:TweenPosition(UDim2.new(1, -300, 0, 0), "Out", "Quad", 0.5, true)
  6164. end
  6165. end)
  6166. --]]
  6167.  
  6168. function createSetting(name,interName,defaultOn)
  6169. local newSetting = SettingTemplate:Clone()
  6170. newSetting.Position = UDim2.new(0,0,0,#SettingList:GetChildren() * 60)
  6171. newSetting.SName.Text = name
  6172.  
  6173. local function toggle(on)
  6174. if on then
  6175. newSetting.Change.Bar:TweenPosition(UDim2.new(0,32,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6176. newSetting.Change.OnBar:TweenSize(UDim2.new(0,34,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6177. newSetting.Status.Text = "On"
  6178. Settings[interName] = true
  6179. else
  6180. newSetting.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6181. newSetting.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6182. newSetting.Status.Text = "Off"
  6183. Settings[interName] = false
  6184. end
  6185. end
  6186.  
  6187. newSetting.Change.MouseButton1Click:connect(function()
  6188. toggle(not Settings[interName])
  6189. end)
  6190.  
  6191. newSetting.Visible = true
  6192. newSetting.Parent = SettingList
  6193.  
  6194. if defaultOn then
  6195. toggle(true)
  6196. end
  6197. end
  6198.  
  6199. createSetting("Click part to select","ClickSelect",false)
  6200. createSetting("Selection Box","SelBox",false)
  6201. createSetting("Clear property value on focus","ClearProps",false)
  6202. createSetting("Select ungrouped models","SelectUngrouped",true)
  6203. createSetting("SaveInstance decompiles scripts","SaveInstanceScripts",true)
  6204.  
  6205. --[[
  6206. ClickSelectOption.MouseButton1Up:connect(function()
  6207. if Settings.ClickSelect then
  6208. Settings.ClickSelect = false
  6209. ClickSelectOption.Text = "OFF"
  6210. else
  6211. Settings.ClickSelect = true
  6212. ClickSelectOption.Text = "ON"
  6213. end
  6214. end)
  6215.  
  6216. SelectionBoxOption.MouseButton1Up:connect(function()
  6217. if Settings.SelBox then
  6218. Settings.SelBox = false
  6219. SelectionBox.Adornee = nil
  6220. SelectionBoxOption.Text = "OFF"
  6221. else
  6222. Settings.SelBox = true
  6223. SelectionBoxOption.Text = "ON"
  6224. end
  6225. end)
  6226.  
  6227. ClearPropsOption.MouseButton1Up:connect(function()
  6228. if Settings.ClearProps then
  6229. Settings.ClearProps = false
  6230. ClearPropsOption.Text = "OFF"
  6231. else
  6232. Settings.ClearProps = true
  6233. ClearPropsOption.Text = "ON"
  6234. end
  6235. end)
  6236.  
  6237. SelectUngroupedOption.MouseButton1Up:connect(function()
  6238. if Settings.SelectUngrouped then
  6239. Settings.SelectUngrouped = false
  6240. SelectUngroupedOption.Text = "OFF"
  6241. else
  6242. Settings.SelectUngrouped = true
  6243. SelectUngroupedOption.Text = "ON"
  6244. end
  6245. end)
  6246. --]]
  6247.  
  6248. local function getSelection()
  6249. local t = GetSelection:Invoke()
  6250. if t and #t > 0 then
  6251. return t[1]
  6252. else
  6253. return nil
  6254. end
  6255. end
  6256.  
  6257. Mouse.Button1Down:connect(function()
  6258. if CurrentWindow == "Explorer" and Settings.ClickSelect then
  6259. local target = Mouse.Target
  6260. if target then
  6261. SetSelection:Invoke({target})
  6262. end
  6263. end
  6264. end)
  6265.  
  6266. SelectionChanged.Event:connect(function()
  6267. if Settings.SelBox then
  6268. local success,err = pcall(function()
  6269. local selection = getSelection()
  6270. SelectionBox.Adornee = selection
  6271. end)
  6272. if err then
  6273. SelectionBox.Adornee = nil
  6274. end
  6275. end
  6276. end)
  6277.  
  6278. SettingsListener.OnInvoke = ReturnSetting
  6279.  
  6280. -- Map Copier
  6281.  
  6282. function createMapSetting(obj,interName,defaultOn)
  6283. local function toggle(on)
  6284. if on then
  6285. obj.Change.Bar:TweenPosition(UDim2.new(0,32,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6286. obj.Change.OnBar:TweenSize(UDim2.new(0,34,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6287. obj.Status.Text = "On"
  6288. SaveMapSettings[interName] = true
  6289. else
  6290. obj.Change.Bar:TweenPosition(UDim2.new(0,-2,0,-2),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6291. obj.Change.OnBar:TweenSize(UDim2.new(0,0,0,15),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.25,true)
  6292. obj.Status.Text = "Off"
  6293. SaveMapSettings[interName] = false
  6294. end
  6295. end
  6296.  
  6297. obj.Change.MouseButton1Click:connect(function()
  6298. toggle(not SaveMapSettings[interName])
  6299. end)
  6300.  
  6301. obj.Visible = true
  6302. obj.Parent = SaveMapSettingFrame
  6303.  
  6304. if defaultOn then
  6305. toggle(true)
  6306. end
  6307. end
  6308.  
  6309. function createCopyWhatSetting(serv)
  6310. if SaveMapSettings.CopyWhat[serv] then
  6311. local newSetting = SaveMapCopyTemplate:Clone()
  6312. newSetting.Position = UDim2.new(0,0,0,#SaveMapCopyList:GetChildren() * 22 + 5)
  6313. newSetting.Info.Text = serv
  6314.  
  6315. local function toggle(on)
  6316. if on then
  6317. newSetting.Change.enabled.Visible = true
  6318. SaveMapSettings.CopyWhat[serv] = true
  6319. else
  6320. newSetting.Change.enabled.Visible = false
  6321. SaveMapSettings.CopyWhat[serv] = false
  6322. end
  6323. end
  6324.  
  6325. newSetting.Change.MouseButton1Click:connect(function()
  6326. toggle(not SaveMapSettings.CopyWhat[serv])
  6327. end)
  6328.  
  6329. newSetting.Visible = true
  6330. newSetting.Parent = SaveMapCopyList
  6331. end
  6332. end
  6333.  
  6334. createMapSetting(SaveMapSettingFrame.Scripts,"SaveScripts",true)
  6335. createMapSetting(SaveMapSettingFrame.Terrain,"SaveTerrain",true)
  6336. createMapSetting(SaveMapSettingFrame.Lighting,"LightingProperties",true)
  6337. createMapSetting(SaveMapSettingFrame.CameraInstances,"CameraInstances",true)
  6338.  
  6339. createCopyWhatSetting("Workspace")
  6340. createCopyWhatSetting("Lighting")
  6341. createCopyWhatSetting("ReplicatedStorage")
  6342. createCopyWhatSetting("ReplicatedFirst")
  6343. createCopyWhatSetting("StarterPack")
  6344. createCopyWhatSetting("StarterGui")
  6345. createCopyWhatSetting("StarterPlayer")
  6346.  
  6347. SaveMapName.Text = tostring(game.PlaceId).."MapCopy"
  6348.  
  6349. SaveMapButton.MouseButton1Click:connect(function()
  6350. local copyWhat = {}
  6351.  
  6352. local copyGroup = Instance.new("Model",game:GetService('ReplicatedStorage'))
  6353.  
  6354. local copyScripts = SaveMapSettings.SaveScripts
  6355.  
  6356. local copyTerrain = SaveMapSettings.SaveTerrain
  6357.  
  6358. local lightingProperties = SaveMapSettings.LightingProperties
  6359.  
  6360. local cameraInstances = SaveMapSettings.CameraInstances
  6361.  
  6362. -----------------------------------------------------------------------------------
  6363.  
  6364. for i,v in pairs(SaveMapSettings.CopyWhat) do
  6365. if v then
  6366. table.insert(copyWhat,i)
  6367. end
  6368. end
  6369.  
  6370. local consoleFunc = printconsole or writeconsole
  6371.  
  6372. if consoleFunc then
  6373. consoleFunc("Moon's place copier loaded.")
  6374. consoleFunc("Copying map of game "..tostring(game.PlaceId)..".")
  6375. end
  6376.  
  6377. function archivable(root)
  6378. for i,v in pairs(root:GetChildren()) do
  6379. if not game:GetService('Players'):GetPlayerFromCharacter(v) then
  6380. v.Archivable = true
  6381. archivable(v)
  6382. end
  6383. end
  6384. end
  6385.  
  6386. function decompileS(root)
  6387. for i,v in pairs(root:GetChildren()) do
  6388. pcall(function()
  6389. if v:IsA("LocalScript") then
  6390. local isDisabled = v.Disabled
  6391. v.Disabled = true
  6392. v.Source = decompile(v)
  6393. v.Disabled = isDisabled
  6394.  
  6395. if v.Source == "" then
  6396. if consoleFunc then consoleFunc("LocalScript "..v.Name.." had a problem decompiling.") end
  6397. else
  6398. if consoleFunc then consoleFunc("LocalScript "..v.Name.." decompiled.") end
  6399. end
  6400. elseif v:IsA("ModuleScript") then
  6401. v.Source = decompile(v)
  6402.  
  6403. if v.Source == "" then
  6404. if consoleFunc then consoleFunc("ModuleScript "..v.Name.." had a problem decompiling.") end
  6405. else
  6406. if consoleFunc then consoleFunc("ModuleScript "..v.Name.." decompiled.") end
  6407. end
  6408. end
  6409. end)
  6410. decompileS(v)
  6411. end
  6412. end
  6413.  
  6414. for i,v in pairs(copyWhat) do archivable(game[v]) end
  6415.  
  6416. for j,obj in pairs(copyWhat) do
  6417. if obj ~= "StarterPlayer" then
  6418. local newFolder = Instance.new("Folder",copyGroup)
  6419. newFolder.Name = obj
  6420. for i,v in pairs(game[obj]:GetChildren()) do
  6421. if v ~= copyGroup then
  6422. pcall(function()
  6423. v:Clone().Parent = newFolder
  6424. end)
  6425. end
  6426. end
  6427. else
  6428. local newFolder = Instance.new("Model",copyGroup)
  6429. newFolder.Name = "StarterPlayer"
  6430. for i,v in pairs(game[obj]:GetChildren()) do
  6431. local newObj = Instance.new("Folder",newFolder)
  6432. newObj.Name = v.Name
  6433. for _,c in pairs(v:GetChildren()) do
  6434. if c.Name ~= "ControlScript" and c.Name ~= "CameraScript" then
  6435. c:Clone().Parent = newObj
  6436. end
  6437. end
  6438. end
  6439. end
  6440. end
  6441.  
  6442. if workspace.CurrentCamera and cameraInstances then
  6443. local cameraFolder = Instance.new("Model",copyGroup)
  6444. cameraFolder.Name = "CameraItems"
  6445. for i,v in pairs(workspace.CurrentCamera:GetChildren()) do v:Clone().Parent = cameraFolder end
  6446. end
  6447.  
  6448. if copyTerrain then
  6449. local myTerrain = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
  6450. myTerrain.Parent = copyGroup
  6451. end
  6452.  
  6453. function saveProp(obj,prop,par)
  6454. local myProp = obj[prop]
  6455. if type(myProp) == "boolean" then
  6456. local newProp = Instance.new("BoolValue",par)
  6457. newProp.Name = prop
  6458. newProp.Value = myProp
  6459. elseif type(myProp) == "number" then
  6460. local newProp = Instance.new("IntValue",par)
  6461. newProp.Name = prop
  6462. newProp.Value = myProp
  6463. elseif type(myProp) == "string" then
  6464. local newProp = Instance.new("StringValue",par)
  6465. newProp.Name = prop
  6466. newProp.Value = myProp
  6467. elseif type(myProp) == "userdata" then -- Assume Color3
  6468. pcall(function()
  6469. local newProp = Instance.new("Color3Value",par)
  6470. newProp.Name = prop
  6471. newProp.Value = myProp
  6472. end)
  6473. end
  6474. end
  6475.  
  6476. if lightingProperties then
  6477. local lightingProps = Instance.new("Model",copyGroup)
  6478. lightingProps.Name = "LightingProperties"
  6479.  
  6480. saveProp(game:GetService('Lighting'),"Ambient",lightingProps)
  6481. saveProp(game:GetService('Lighting'),"Brightness",lightingProps)
  6482. saveProp(game:GetService('Lighting'),"ColorShift_Bottom",lightingProps)
  6483. saveProp(game:GetService('Lighting'),"ColorShift_Top",lightingProps)
  6484. saveProp(game:GetService('Lighting'),"GlobalShadows",lightingProps)
  6485. saveProp(game:GetService('Lighting'),"OutdoorAmbient",lightingProps)
  6486. saveProp(game:GetService('Lighting'),"Outlines",lightingProps)
  6487. saveProp(game:GetService('Lighting'),"GeographicLatitude",lightingProps)
  6488. saveProp(game:GetService('Lighting'),"TimeOfDay",lightingProps)
  6489. saveProp(game:GetService('Lighting'),"FogColor",lightingProps)
  6490. saveProp(game:GetService('Lighting'),"FogEnd",lightingProps)
  6491. saveProp(game:GetService('Lighting'),"FogStart",lightingProps)
  6492. end
  6493.  
  6494. if decompile and copyScripts then
  6495. decompileS(copyGroup)
  6496. end
  6497.  
  6498. if SaveInstance then
  6499. SaveInstance(copyGroup,SaveMapName.Text..".rbxm")
  6500. elseif saveinstance then
  6501. saveinstance(getelysianpath()..SaveMapName.Text..".rbxm",copyGroup)
  6502. end
  6503. --print("Saved!")
  6504. if consoleFunc then
  6505. consoleFunc("The map has been copied.")
  6506. end
  6507. SaveMapButton.Text = "The map has been saved"
  6508. wait(5)
  6509. SaveMapButton.Text = "Save"
  6510. end)
  6511.  
  6512. -- End Copier
  6513.  
  6514. wait()
  6515.  
  6516. IntroFrame:TweenPosition(UDim2.new(1,-301,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  6517.  
  6518. switchWindows("Explorer")
  6519.  
  6520. wait(1)
  6521.  
  6522. SideMenu.Visible = true
  6523.  
  6524. for i = 0,1,0.1 do
  6525. IntroFrame.BackgroundTransparency = i
  6526. IntroFrame.Main.BackgroundTransparency = i
  6527. IntroFrame.Slant.ImageTransparency = i
  6528. IntroFrame.Title.TextTransparency = i
  6529. IntroFrame.Version.TextTransparency = i
  6530. IntroFrame.Creator.TextTransparency = i
  6531. IntroFrame.Sad.ImageTransparency = i
  6532. wait()
  6533. end
  6534.  
  6535. IntroFrame.Visible = false
  6536.  
  6537. SlideFrame:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  6538. OpenScriptEditorButton:TweenPosition(UDim2.new(0,0,0,150),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  6539. CloseToggleButton:TweenPosition(UDim2.new(0,0,0,180),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  6540. Slant:TweenPosition(UDim2.new(0,0,0,210),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  6541.  
  6542. wait(0.5)
  6543.  
  6544. for i = 1,0,-0.1 do
  6545. OpenScriptEditorButton.Icon.ImageTransparency = i
  6546. CloseToggleButton.TextTransparency = i
  6547. wait()
  6548. end
  6549.  
  6550. CloseToggleButton.Active = true
  6551. CloseToggleButton.AutoButtonColor = true
  6552.  
  6553. OpenScriptEditorButton.Active = true
  6554. OpenScriptEditorButton.AutoButtonColor = true
  6555. end))
  6556. Frame19.Name = "SideMenu"
  6557. Frame19.Parent = ScreenGui0
  6558. Frame19.Position = UDim2.new(1, -330, 0, 0)
  6559. Frame19.Visible = false
  6560. Frame19.Transparency = 1
  6561. Frame19.Size = UDim2.new(0, 30, 0, 180)
  6562. Frame19.BackgroundColor = BrickColor.new("Lily white")
  6563. Frame19.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6564. Frame19.BackgroundTransparency = 1
  6565. Frame19.BorderColor = BrickColor.new("Sand violet metallic")
  6566. Frame19.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  6567. Frame19.BorderSizePixel = 0
  6568. Frame19.ZIndex = 2
  6569. TextButton20.Name = "Toggle"
  6570. TextButton20.Parent = Frame19
  6571. TextButton20.Position = UDim2.new(0, 0, 0, 60)
  6572. TextButton20.Size = UDim2.new(0, 30, 0, 30)
  6573. TextButton20.Active = false
  6574. TextButton20.BackgroundColor = BrickColor.new("Lily white")
  6575. TextButton20.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6576. TextButton20.BorderSizePixel = 0
  6577. TextButton20.AutoButtonColor = false
  6578. TextButton20.Font = Enum.Font.SourceSans
  6579. TextButton20.FontSize = Enum.FontSize.Size24
  6580. TextButton20.Text = ">"
  6581. TextButton20.TextSize = 24
  6582. TextButton20.TextTransparency = 1
  6583. TextButton20.TextWrap = true
  6584. TextButton20.TextWrapped = true
  6585. TextLabel21.Name = "Title"
  6586. TextLabel21.Parent = Frame19
  6587. TextLabel21.Transparency = 1
  6588. TextLabel21.Size = UDim2.new(0, 30, 0, 20)
  6589. TextLabel21.BackgroundColor = BrickColor.new("Institutional white")
  6590. TextLabel21.BackgroundColor3 = Color3.new(1, 1, 1)
  6591. TextLabel21.BackgroundTransparency = 1
  6592. TextLabel21.ZIndex = 2
  6593. TextLabel21.Font = Enum.Font.SourceSansBold
  6594. TextLabel21.FontSize = Enum.FontSize.Size14
  6595. TextLabel21.Text = "DEX"
  6596. TextLabel21.TextSize = 14
  6597. TextLabel21.TextWrap = true
  6598. TextLabel21.TextWrapped = true
  6599. TextLabel22.Name = "Version"
  6600. TextLabel22.Parent = Frame19
  6601. TextLabel22.Position = UDim2.new(0, 0, 0, 15)
  6602. TextLabel22.Transparency = 1
  6603. TextLabel22.Size = UDim2.new(0, 30, 0, 20)
  6604. TextLabel22.BackgroundColor = BrickColor.new("Institutional white")
  6605. TextLabel22.BackgroundColor3 = Color3.new(1, 1, 1)
  6606. TextLabel22.BackgroundTransparency = 1
  6607. TextLabel22.ZIndex = 2
  6608. TextLabel22.Font = Enum.Font.SourceSansBold
  6609. TextLabel22.FontSize = Enum.FontSize.Size12
  6610. TextLabel22.Text = "v3"
  6611. TextLabel22.TextSize = 12
  6612. TextLabel22.TextWrap = true
  6613. TextLabel22.TextWrapped = true
  6614. ImageLabel23.Name = "Slant"
  6615. ImageLabel23.Parent = Frame19
  6616. ImageLabel23.Position = UDim2.new(0, 0, 0, 90)
  6617. ImageLabel23.Rotation = 180
  6618. ImageLabel23.Transparency = 1
  6619. ImageLabel23.Size = UDim2.new(0, 30, 0, 30)
  6620. ImageLabel23.BackgroundColor = BrickColor.new("Institutional white")
  6621. ImageLabel23.BackgroundColor3 = Color3.new(1, 1, 1)
  6622. ImageLabel23.BackgroundTransparency = 1
  6623. ImageLabel23.Image = "rbxassetid://1513966937"
  6624. ImageLabel23.ImageColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6625. Frame24.Name = "Main"
  6626. Frame24.Parent = Frame19
  6627. Frame24.Size = UDim2.new(0, 30, 0, 30)
  6628. Frame24.BackgroundColor = BrickColor.new("Lily white")
  6629. Frame24.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6630. Frame24.BorderSizePixel = 0
  6631. Frame25.Name = "SlideOut"
  6632. Frame25.Parent = Frame19
  6633. Frame25.Position = UDim2.new(0, 0, 0, 30)
  6634. Frame25.Transparency = 1
  6635. Frame25.Size = UDim2.new(0, 30, 0, 150)
  6636. Frame25.BackgroundColor = BrickColor.new("Quill grey")
  6637. Frame25.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  6638. Frame25.BackgroundTransparency = 1
  6639. Frame25.BorderSizePixel = 0
  6640. Frame25.ClipsDescendants = true
  6641. Frame26.Name = "SlideFrame"
  6642. Frame26.Parent = Frame25
  6643. Frame26.Position = UDim2.new(0, 0, 0, -120)
  6644. Frame26.Size = UDim2.new(0, 30, 0, 120)
  6645. Frame26.BackgroundColor = BrickColor.new("Quill grey")
  6646. Frame26.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  6647. Frame26.BorderSizePixel = 0
  6648. TextButton27.Name = "Explorer"
  6649. TextButton27.Parent = Frame26
  6650. TextButton27.Position = UDim2.new(0, 0, 0, 90)
  6651. TextButton27.Transparency = 1
  6652. TextButton27.Size = UDim2.new(0, 30, 0, 30)
  6653. TextButton27.BackgroundColor = BrickColor.new("Institutional white")
  6654. TextButton27.BackgroundColor3 = Color3.new(1, 1, 1)
  6655. TextButton27.BackgroundTransparency = 1
  6656. TextButton27.BorderSizePixel = 0
  6657. TextButton27.AutoButtonColor = false
  6658. TextButton27.Font = Enum.Font.SourceSans
  6659. TextButton27.FontSize = Enum.FontSize.Size24
  6660. TextButton27.Text = ""
  6661. TextButton27.TextSize = 24
  6662. ImageLabel28.Name = "Icon"
  6663. ImageLabel28.Parent = TextButton27
  6664. ImageLabel28.Position = UDim2.new(0, 5, 0, 5)
  6665. ImageLabel28.Transparency = 1
  6666. ImageLabel28.Size = UDim2.new(0, 20, 0, 20)
  6667. ImageLabel28.BackgroundColor = BrickColor.new("Institutional white")
  6668. ImageLabel28.BackgroundColor3 = Color3.new(1, 1, 1)
  6669. ImageLabel28.BackgroundTransparency = 1
  6670. ImageLabel28.ZIndex = 2
  6671. ImageLabel28.Image = "rbxassetid://472635937"
  6672. ImageLabel28.ImageColor3 = Color3.new(0.27451, 0.27451, 0.27451)
  6673. TextButton29.Name = "SaveMap"
  6674. TextButton29.Parent = Frame26
  6675. TextButton29.Position = UDim2.new(0, 0, 0, 60)
  6676. TextButton29.Transparency = 1
  6677. TextButton29.Size = UDim2.new(0, 30, 0, 30)
  6678. TextButton29.BackgroundColor = BrickColor.new("Institutional white")
  6679. TextButton29.BackgroundColor3 = Color3.new(1, 1, 1)
  6680. TextButton29.BackgroundTransparency = 1
  6681. TextButton29.BorderSizePixel = 0
  6682. TextButton29.AutoButtonColor = false
  6683. TextButton29.Font = Enum.Font.SourceSans
  6684. TextButton29.FontSize = Enum.FontSize.Size24
  6685. TextButton29.Text = ""
  6686. TextButton29.TextSize = 24
  6687. ImageLabel30.Name = "Icon"
  6688. ImageLabel30.Parent = TextButton29
  6689. ImageLabel30.Position = UDim2.new(0, 5, 0, 5)
  6690. ImageLabel30.Transparency = 1
  6691. ImageLabel30.Size = UDim2.new(0, 20, 0, 20)
  6692. ImageLabel30.BackgroundColor = BrickColor.new("Institutional white")
  6693. ImageLabel30.BackgroundColor3 = Color3.new(1, 1, 1)
  6694. ImageLabel30.BackgroundTransparency = 1
  6695. ImageLabel30.ZIndex = 2
  6696. ImageLabel30.Image = "rbxassetid://472636337"
  6697. ImageLabel30.ImageColor3 = Color3.new(0.27451, 0.27451, 0.27451)
  6698. TextButton31.Name = "Settings"
  6699. TextButton31.Parent = Frame26
  6700. TextButton31.Position = UDim2.new(0, 0, 0, 30)
  6701. TextButton31.Transparency = 1
  6702. TextButton31.Size = UDim2.new(0, 30, 0, 30)
  6703. TextButton31.BackgroundColor = BrickColor.new("Institutional white")
  6704. TextButton31.BackgroundColor3 = Color3.new(1, 1, 1)
  6705. TextButton31.BackgroundTransparency = 1
  6706. TextButton31.BorderSizePixel = 0
  6707. TextButton31.AutoButtonColor = false
  6708. TextButton31.Font = Enum.Font.SourceSans
  6709. TextButton31.FontSize = Enum.FontSize.Size24
  6710. TextButton31.Text = ""
  6711. TextButton31.TextSize = 24
  6712. ImageLabel32.Name = "Icon"
  6713. ImageLabel32.Parent = TextButton31
  6714. ImageLabel32.Position = UDim2.new(0, 5, 0, 5)
  6715. ImageLabel32.Transparency = 1
  6716. ImageLabel32.Size = UDim2.new(0, 20, 0, 20)
  6717. ImageLabel32.BackgroundColor = BrickColor.new("Institutional white")
  6718. ImageLabel32.BackgroundColor3 = Color3.new(1, 1, 1)
  6719. ImageLabel32.BackgroundTransparency = 1
  6720. ImageLabel32.ZIndex = 2
  6721. ImageLabel32.Image = "rbxassetid://472635774"
  6722. ImageLabel32.ImageColor3 = Color3.new(0.27451, 0.27451, 0.27451)
  6723. TextButton33.Name = "About"
  6724. TextButton33.Parent = Frame26
  6725. TextButton33.Transparency = 1
  6726. TextButton33.Size = UDim2.new(0, 30, 0, 30)
  6727. TextButton33.BackgroundColor = BrickColor.new("Institutional white")
  6728. TextButton33.BackgroundColor3 = Color3.new(1, 1, 1)
  6729. TextButton33.BackgroundTransparency = 1
  6730. TextButton33.BorderSizePixel = 0
  6731. TextButton33.AutoButtonColor = false
  6732. TextButton33.Font = Enum.Font.SourceSans
  6733. TextButton33.FontSize = Enum.FontSize.Size24
  6734. TextButton33.Text = ""
  6735. TextButton33.TextSize = 24
  6736. ImageLabel34.Name = "Icon"
  6737. ImageLabel34.Parent = TextButton33
  6738. ImageLabel34.Position = UDim2.new(0, 5, 0, 5)
  6739. ImageLabel34.Transparency = 1
  6740. ImageLabel34.Size = UDim2.new(0, 20, 0, 20)
  6741. ImageLabel34.BackgroundColor = BrickColor.new("Institutional white")
  6742. ImageLabel34.BackgroundColor3 = Color3.new(1, 1, 1)
  6743. ImageLabel34.BackgroundTransparency = 1
  6744. ImageLabel34.ZIndex = 2
  6745. ImageLabel34.Image = "rbxassetid://476354004"
  6746. ImageLabel34.ImageColor3 = Color3.new(0.27451, 0.27451, 0.27451)
  6747. TextButton35.Name = "OpenScriptEditor"
  6748. TextButton35.Parent = Frame19
  6749. TextButton35.Position = UDim2.new(0, 0, 0, 30)
  6750. TextButton35.Size = UDim2.new(0, 30, 0, 30)
  6751. TextButton35.Active = false
  6752. TextButton35.BackgroundColor = BrickColor.new("Lily white")
  6753. TextButton35.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6754. TextButton35.BorderSizePixel = 0
  6755. TextButton35.AutoButtonColor = false
  6756. TextButton35.Font = Enum.Font.SourceSans
  6757. TextButton35.FontSize = Enum.FontSize.Size24
  6758. TextButton35.Text = ""
  6759. TextButton35.TextSize = 24
  6760. ImageLabel36.Name = "Icon"
  6761. ImageLabel36.Parent = TextButton35
  6762. ImageLabel36.Position = UDim2.new(0, 5, 0, 5)
  6763. ImageLabel36.Transparency = 1
  6764. ImageLabel36.Size = UDim2.new(0, 20, 0, 20)
  6765. ImageLabel36.BackgroundColor = BrickColor.new("Institutional white")
  6766. ImageLabel36.BackgroundColor3 = Color3.new(1, 1, 1)
  6767. ImageLabel36.BackgroundTransparency = 1
  6768. ImageLabel36.BorderSizePixel = 0
  6769. ImageLabel36.ZIndex = 2
  6770. ImageLabel36.Image = "rbxassetid://475456048"
  6771. ImageLabel36.ImageColor3 = Color3.new(0.105882, 0.164706, 0.207843)
  6772. ImageLabel36.ImageTransparency = 1
  6773. Frame37.Name = "SettingsPanel"
  6774. Frame37.Parent = ScreenGui0
  6775. Frame37.Position = UDim2.new(1, 0, 0, 0)
  6776. Frame37.Transparency = 0.10000000149012
  6777. Frame37.Size = UDim2.new(0, 300, 1, 0)
  6778. Frame37.BackgroundColor = BrickColor.new("Institutional white")
  6779. Frame37.BackgroundColor3 = Color3.new(1, 1, 1)
  6780. Frame37.BackgroundTransparency = 0.10000000149012
  6781. Frame37.BorderColor = BrickColor.new("Light grey")
  6782. Frame37.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  6783. Frame37.BorderSizePixel = 0
  6784. Frame38.Name = "Header"
  6785. Frame38.Parent = Frame37
  6786. Frame38.Size = UDim2.new(1, 0, 0, 17)
  6787. Frame38.BackgroundColor = BrickColor.new("Lily white")
  6788. Frame38.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6789. Frame38.BorderColor = BrickColor.new("Sand violet metallic")
  6790. Frame38.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  6791. Frame38.BorderSizePixel = 0
  6792. TextLabel39.Parent = Frame38
  6793. TextLabel39.Position = UDim2.new(0, 4, 0, 0)
  6794. TextLabel39.Transparency = 1
  6795. TextLabel39.Size = UDim2.new(1, -4, 1, 0)
  6796. TextLabel39.BackgroundTransparency = 1
  6797. TextLabel39.BorderSizePixel = 0
  6798. TextLabel39.Font = Enum.Font.SourceSans
  6799. TextLabel39.FontSize = Enum.FontSize.Size14
  6800. TextLabel39.Text = "Settings"
  6801. TextLabel39.TextColor = BrickColor.new("Really black")
  6802. TextLabel39.TextColor3 = Color3.new(0, 0, 0)
  6803. TextLabel39.TextSize = 14
  6804. TextLabel39.TextXAlignment = Enum.TextXAlignment.Left
  6805. BindableFunction40.Name = "GetSetting"
  6806. BindableFunction40.Parent = Frame37
  6807. Frame41.Name = "SettingTemplate"
  6808. Frame41.Parent = Frame37
  6809. Frame41.Position = UDim2.new(0, 0, 0, 18)
  6810. Frame41.Visible = false
  6811. Frame41.Transparency = 1
  6812. Frame41.Size = UDim2.new(1, 0, 0, 60)
  6813. Frame41.BackgroundColor = BrickColor.new("Institutional white")
  6814. Frame41.BackgroundColor3 = Color3.new(1, 1, 1)
  6815. Frame41.BackgroundTransparency = 1
  6816. TextLabel42.Name = "SName"
  6817. TextLabel42.Parent = Frame41
  6818. TextLabel42.Position = UDim2.new(0, 10, 0, 0)
  6819. TextLabel42.Transparency = 1
  6820. TextLabel42.Size = UDim2.new(1, -20, 0, 30)
  6821. TextLabel42.BackgroundColor = BrickColor.new("Institutional white")
  6822. TextLabel42.BackgroundColor3 = Color3.new(1, 1, 1)
  6823. TextLabel42.BackgroundTransparency = 1
  6824. TextLabel42.Font = Enum.Font.SourceSans
  6825. TextLabel42.FontSize = Enum.FontSize.Size18
  6826. TextLabel42.Text = "SettingName"
  6827. TextLabel42.TextSize = 18
  6828. TextLabel42.TextXAlignment = Enum.TextXAlignment.Left
  6829. TextLabel43.Name = "Status"
  6830. TextLabel43.Parent = Frame41
  6831. TextLabel43.Position = UDim2.new(0, 60, 0, 30)
  6832. TextLabel43.Transparency = 1
  6833. TextLabel43.Size = UDim2.new(0, 50, 0, 15)
  6834. TextLabel43.BackgroundColor = BrickColor.new("Institutional white")
  6835. TextLabel43.BackgroundColor3 = Color3.new(1, 1, 1)
  6836. TextLabel43.BackgroundTransparency = 1
  6837. TextLabel43.Font = Enum.Font.SourceSans
  6838. TextLabel43.FontSize = Enum.FontSize.Size18
  6839. TextLabel43.Text = "Off"
  6840. TextLabel43.TextSize = 18
  6841. TextLabel43.TextXAlignment = Enum.TextXAlignment.Left
  6842. TextButton44.Name = "Change"
  6843. TextButton44.Parent = Frame41
  6844. TextButton44.Position = UDim2.new(0, 10, 0, 30)
  6845. TextButton44.Size = UDim2.new(0, 40, 0, 15)
  6846. TextButton44.BackgroundColor = BrickColor.new("Quill grey")
  6847. TextButton44.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  6848. TextButton44.BorderSizePixel = 0
  6849. TextButton44.Font = Enum.Font.SourceSans
  6850. TextButton44.FontSize = Enum.FontSize.Size14
  6851. TextButton44.Text = ""
  6852. TextButton44.TextSize = 14
  6853. TextLabel45.Name = "OnBar"
  6854. TextLabel45.Parent = TextButton44
  6855. TextLabel45.Size = UDim2.new(0, 0, 0, 15)
  6856. TextLabel45.BackgroundColor = BrickColor.new("Electric blue")
  6857. TextLabel45.BackgroundColor3 = Color3.new(0, 0.576471, 0.862745)
  6858. TextLabel45.BorderSizePixel = 0
  6859. TextLabel45.Font = Enum.Font.SourceSans
  6860. TextLabel45.FontSize = Enum.FontSize.Size14
  6861. TextLabel45.Text = ""
  6862. TextLabel45.TextSize = 14
  6863. TextLabel46.Name = "Bar"
  6864. TextLabel46.Parent = TextButton44
  6865. TextLabel46.Position = UDim2.new(0, -2, 0, -2)
  6866. TextLabel46.Size = UDim2.new(0, 10, 0, 19)
  6867. TextLabel46.BackgroundColor = BrickColor.new("Really black")
  6868. TextLabel46.BackgroundColor3 = Color3.new(0, 0, 0)
  6869. TextLabel46.BorderSizePixel = 0
  6870. TextLabel46.ClipsDescendants = true
  6871. TextLabel46.Font = Enum.Font.SourceSans
  6872. TextLabel46.FontSize = Enum.FontSize.Size14
  6873. TextLabel46.Text = ""
  6874. TextLabel46.TextSize = 14
  6875. Frame47.Name = "SettingList"
  6876. Frame47.Parent = Frame37
  6877. Frame47.Position = UDim2.new(0, 0, 0, 17)
  6878. Frame47.Transparency = 1
  6879. Frame47.Size = UDim2.new(1, 0, 1, -17)
  6880. Frame47.BackgroundColor = BrickColor.new("Institutional white")
  6881. Frame47.BackgroundColor3 = Color3.new(1, 1, 1)
  6882. Frame47.BackgroundTransparency = 1
  6883. Frame48.Name = "SaveInstance"
  6884. Frame48.Parent = ScreenGui0
  6885. Frame48.Position = UDim2.new(0.300000012, 0, 0.300000012, 0)
  6886. Frame48.Visible = false
  6887. Frame48.Size = UDim2.new(0, 350, 0, 20)
  6888. Frame48.Active = true
  6889. Frame48.BackgroundColor = BrickColor.new("Lily white")
  6890. Frame48.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  6891. Frame48.BorderColor = BrickColor.new("Sand violet metallic")
  6892. Frame48.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  6893. Frame48.BorderSizePixel = 0
  6894. Frame48.Draggable = true
  6895. Frame48.ZIndex = 2
  6896. TextLabel49.Name = "Title"
  6897. TextLabel49.Parent = Frame48
  6898. TextLabel49.Transparency = 1
  6899. TextLabel49.Size = UDim2.new(1, 0, 1, 0)
  6900. TextLabel49.BackgroundTransparency = 1
  6901. TextLabel49.ZIndex = 2
  6902. TextLabel49.Font = Enum.Font.SourceSans
  6903. TextLabel49.FontSize = Enum.FontSize.Size14
  6904. TextLabel49.Text = "Save Instance"
  6905. TextLabel49.TextColor = BrickColor.new("Really black")
  6906. TextLabel49.TextColor3 = Color3.new(0, 0, 0)
  6907. TextLabel49.TextSize = 14
  6908. TextLabel49.TextXAlignment = Enum.TextXAlignment.Left
  6909. Frame50.Name = "MainWindow"
  6910. Frame50.Parent = Frame48
  6911. Frame50.Transparency = 0.10000000149012
  6912. Frame50.Size = UDim2.new(1, 0, 0, 200)
  6913. Frame50.BackgroundColor = BrickColor.new("Institutional white")
  6914. Frame50.BackgroundColor3 = Color3.new(1, 1, 1)
  6915. Frame50.BackgroundTransparency = 0.10000000149012
  6916. Frame50.BorderColor = BrickColor.new("Light grey")
  6917. Frame50.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  6918. TextButton51.Name = "Save"
  6919. TextButton51.Parent = Frame50
  6920. TextButton51.Position = UDim2.new(0.075000003, 0, 1, -40)
  6921. TextButton51.Transparency = 0.5
  6922. TextButton51.Size = UDim2.new(0.400000006, 0, 0, 30)
  6923. TextButton51.BackgroundColor = BrickColor.new("Institutional white")
  6924. TextButton51.BackgroundColor3 = Color3.new(1, 1, 1)
  6925. TextButton51.BackgroundTransparency = 0.5
  6926. TextButton51.BorderColor = BrickColor.new("Really black")
  6927. TextButton51.BorderColor3 = Color3.new(0, 0, 0)
  6928. TextButton51.Font = Enum.Font.SourceSans
  6929. TextButton51.FontSize = Enum.FontSize.Size18
  6930. TextButton51.Text = "Save"
  6931. TextButton51.TextSize = 18
  6932. TextLabel52.Name = "Desc"
  6933. TextLabel52.Parent = Frame50
  6934. TextLabel52.Position = UDim2.new(0, 0, 0, 20)
  6935. TextLabel52.Transparency = 1
  6936. TextLabel52.Size = UDim2.new(1, 0, 0, 40)
  6937. TextLabel52.BackgroundColor = BrickColor.new("Institutional white")
  6938. TextLabel52.BackgroundColor3 = Color3.new(1, 1, 1)
  6939. TextLabel52.BackgroundTransparency = 1
  6940. TextLabel52.Font = Enum.Font.SourceSans
  6941. TextLabel52.FontSize = Enum.FontSize.Size14
  6942. TextLabel52.Text = "This will save an instance to your PC. Type in the name for your instance. (.rbxmx will be added automatically.)"
  6943. TextLabel52.TextSize = 14
  6944. TextLabel52.TextWrap = true
  6945. TextLabel52.TextWrapped = true
  6946. TextButton53.Name = "Cancel"
  6947. TextButton53.Parent = Frame50
  6948. TextButton53.Position = UDim2.new(0.524999976, 0, 1, -40)
  6949. TextButton53.Transparency = 0.5
  6950. TextButton53.Size = UDim2.new(0.400000006, 0, 0, 30)
  6951. TextButton53.BackgroundColor = BrickColor.new("Institutional white")
  6952. TextButton53.BackgroundColor3 = Color3.new(1, 1, 1)
  6953. TextButton53.BackgroundTransparency = 0.5
  6954. TextButton53.BorderColor = BrickColor.new("Really black")
  6955. TextButton53.BorderColor3 = Color3.new(0, 0, 0)
  6956. TextButton53.Font = Enum.Font.SourceSans
  6957. TextButton53.FontSize = Enum.FontSize.Size18
  6958. TextButton53.Text = "Cancel"
  6959. TextButton53.TextSize = 18
  6960. TextBox54.Name = "FileName"
  6961. TextBox54.Parent = Frame50
  6962. TextBox54.Position = UDim2.new(0.075000003, 0, 0.400000006, 0)
  6963. TextBox54.Transparency = 0.20000000298023
  6964. TextBox54.Size = UDim2.new(0.850000024, 0, 0, 30)
  6965. TextBox54.BackgroundColor = BrickColor.new("Institutional white")
  6966. TextBox54.BackgroundColor3 = Color3.new(1, 1, 1)
  6967. TextBox54.BackgroundTransparency = 0.20000000298023
  6968. TextBox54.Font = Enum.Font.SourceSans
  6969. TextBox54.FontSize = Enum.FontSize.Size18
  6970. TextBox54.Text = ""
  6971. TextBox54.TextSize = 18
  6972. TextBox54.TextXAlignment = Enum.TextXAlignment.Left
  6973. TextButton55.Name = "SaveObjects"
  6974. TextButton55.Parent = Frame50
  6975. TextButton55.Position = UDim2.new(0.075000003, 0, 0.625, 0)
  6976. TextButton55.Transparency = 0.60000002384186
  6977. TextButton55.Size = UDim2.new(0, 20, 0, 20)
  6978. TextButton55.BackgroundColor = BrickColor.new("Institutional white")
  6979. TextButton55.BackgroundColor3 = Color3.new(1, 1, 1)
  6980. TextButton55.BackgroundTransparency = 0.60000002384186
  6981. TextButton55.ZIndex = 2
  6982. TextButton55.Font = Enum.Font.SourceSans
  6983. TextButton55.FontSize = Enum.FontSize.Size18
  6984. TextButton55.Text = ""
  6985. TextButton55.TextColor = BrickColor.new("Institutional white")
  6986. TextButton55.TextColor3 = Color3.new(1, 1, 1)
  6987. TextButton55.TextSize = 18
  6988. TextLabel56.Name = "enabled"
  6989. TextLabel56.Parent = TextButton55
  6990. TextLabel56.Position = UDim2.new(0, 3, 0, 3)
  6991. TextLabel56.Transparency = 0.40000000596046
  6992. TextLabel56.Size = UDim2.new(0, 14, 0, 14)
  6993. TextLabel56.BackgroundColor = BrickColor.new("Dark stone grey")
  6994. TextLabel56.BackgroundColor3 = Color3.new(0.380392, 0.380392, 0.380392)
  6995. TextLabel56.BackgroundTransparency = 0.40000000596046
  6996. TextLabel56.BorderSizePixel = 0
  6997. TextLabel56.Font = Enum.Font.SourceSans
  6998. TextLabel56.FontSize = Enum.FontSize.Size14
  6999. TextLabel56.Text = ""
  7000. TextLabel56.TextSize = 14
  7001. TextLabel57.Name = "Desc2"
  7002. TextLabel57.Parent = Frame50
  7003. TextLabel57.Position = UDim2.new(0.075000003, 30, 0.625, 0)
  7004. TextLabel57.Transparency = 1
  7005. TextLabel57.Size = UDim2.new(0.925000012, -30, 0, 20)
  7006. TextLabel57.BackgroundColor = BrickColor.new("Institutional white")
  7007. TextLabel57.BackgroundColor3 = Color3.new(1, 1, 1)
  7008. TextLabel57.BackgroundTransparency = 1
  7009. TextLabel57.Font = Enum.Font.SourceSans
  7010. TextLabel57.FontSize = Enum.FontSize.Size14
  7011. TextLabel57.Text = "Save Object Type Values"
  7012. TextLabel57.TextSize = 14
  7013. TextLabel57.TextXAlignment = Enum.TextXAlignment.Left
  7014. Frame58.Name = "Confirmation"
  7015. Frame58.Parent = ScreenGui0
  7016. Frame58.Position = UDim2.new(0.5, -175, 0.5, -75)
  7017. Frame58.Visible = false
  7018. Frame58.Size = UDim2.new(0, 350, 0, 20)
  7019. Frame58.Active = true
  7020. Frame58.BackgroundColor = BrickColor.new("Lily white")
  7021. Frame58.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  7022. Frame58.BorderColor = BrickColor.new("Sand violet metallic")
  7023. Frame58.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7024. Frame58.BorderSizePixel = 0
  7025. Frame58.Draggable = true
  7026. Frame58.ZIndex = 3
  7027. TextLabel59.Name = "Title"
  7028. TextLabel59.Parent = Frame58
  7029. TextLabel59.Transparency = 1
  7030. TextLabel59.Size = UDim2.new(1, 0, 1, 0)
  7031. TextLabel59.BackgroundTransparency = 1
  7032. TextLabel59.ZIndex = 3
  7033. TextLabel59.Font = Enum.Font.SourceSans
  7034. TextLabel59.FontSize = Enum.FontSize.Size14
  7035. TextLabel59.Text = "Confirm"
  7036. TextLabel59.TextColor = BrickColor.new("Really black")
  7037. TextLabel59.TextColor3 = Color3.new(0, 0, 0)
  7038. TextLabel59.TextSize = 14
  7039. TextLabel59.TextXAlignment = Enum.TextXAlignment.Left
  7040. Frame60.Name = "MainWindow"
  7041. Frame60.Parent = Frame58
  7042. Frame60.Transparency = 0.10000000149012
  7043. Frame60.Size = UDim2.new(1, 0, 0, 150)
  7044. Frame60.BackgroundColor = BrickColor.new("Institutional white")
  7045. Frame60.BackgroundColor3 = Color3.new(1, 1, 1)
  7046. Frame60.BackgroundTransparency = 0.10000000149012
  7047. Frame60.BorderColor = BrickColor.new("Light grey")
  7048. Frame60.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7049. Frame60.ZIndex = 2
  7050. TextButton61.Name = "Yes"
  7051. TextButton61.Parent = Frame60
  7052. TextButton61.Position = UDim2.new(0.075000003, 0, 1, -40)
  7053. TextButton61.Transparency = 0.5
  7054. TextButton61.Size = UDim2.new(0.400000006, 0, 0, 30)
  7055. TextButton61.BackgroundColor = BrickColor.new("Institutional white")
  7056. TextButton61.BackgroundColor3 = Color3.new(1, 1, 1)
  7057. TextButton61.BackgroundTransparency = 0.5
  7058. TextButton61.BorderColor = BrickColor.new("Really black")
  7059. TextButton61.BorderColor3 = Color3.new(0, 0, 0)
  7060. TextButton61.ZIndex = 2
  7061. TextButton61.Font = Enum.Font.SourceSans
  7062. TextButton61.FontSize = Enum.FontSize.Size18
  7063. TextButton61.Text = "Yes"
  7064. TextButton61.TextSize = 18
  7065. TextLabel62.Name = "Desc"
  7066. TextLabel62.Parent = Frame60
  7067. TextLabel62.Position = UDim2.new(0, 0, 0, 20)
  7068. TextLabel62.Transparency = 1
  7069. TextLabel62.Size = UDim2.new(1, 0, 0, 40)
  7070. TextLabel62.BackgroundColor = BrickColor.new("Institutional white")
  7071. TextLabel62.BackgroundColor3 = Color3.new(1, 1, 1)
  7072. TextLabel62.BackgroundTransparency = 1
  7073. TextLabel62.ZIndex = 2
  7074. TextLabel62.Font = Enum.Font.SourceSans
  7075. TextLabel62.FontSize = Enum.FontSize.Size14
  7076. TextLabel62.Text = "The file, FILENAME, already exists. Overwrite?"
  7077. TextLabel62.TextSize = 14
  7078. TextLabel62.TextWrap = true
  7079. TextLabel62.TextWrapped = true
  7080. TextButton63.Name = "No"
  7081. TextButton63.Parent = Frame60
  7082. TextButton63.Position = UDim2.new(0.524999976, 0, 1, -40)
  7083. TextButton63.Transparency = 0.5
  7084. TextButton63.Size = UDim2.new(0.400000006, 0, 0, 30)
  7085. TextButton63.BackgroundColor = BrickColor.new("Institutional white")
  7086. TextButton63.BackgroundColor3 = Color3.new(1, 1, 1)
  7087. TextButton63.BackgroundTransparency = 0.5
  7088. TextButton63.BorderColor = BrickColor.new("Really black")
  7089. TextButton63.BorderColor3 = Color3.new(0, 0, 0)
  7090. TextButton63.ZIndex = 2
  7091. TextButton63.Font = Enum.Font.SourceSans
  7092. TextButton63.FontSize = Enum.FontSize.Size18
  7093. TextButton63.Text = "No"
  7094. TextButton63.TextSize = 18
  7095. Frame64.Name = "Caution"
  7096. Frame64.Parent = ScreenGui0
  7097. Frame64.Position = UDim2.new(0.5, -175, 0.5, -75)
  7098. Frame64.Visible = false
  7099. Frame64.Size = UDim2.new(0, 350, 0, 20)
  7100. Frame64.Active = true
  7101. Frame64.BackgroundColor = BrickColor.new("Lily white")
  7102. Frame64.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  7103. Frame64.BorderColor = BrickColor.new("Sand violet metallic")
  7104. Frame64.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7105. Frame64.BorderSizePixel = 0
  7106. Frame64.Draggable = true
  7107. Frame64.ZIndex = 5
  7108. TextLabel65.Name = "Title"
  7109. TextLabel65.Parent = Frame64
  7110. TextLabel65.Transparency = 1
  7111. TextLabel65.Size = UDim2.new(1, 0, 1, 0)
  7112. TextLabel65.BackgroundTransparency = 1
  7113. TextLabel65.ZIndex = 5
  7114. TextLabel65.Font = Enum.Font.SourceSans
  7115. TextLabel65.FontSize = Enum.FontSize.Size14
  7116. TextLabel65.Text = "Caution"
  7117. TextLabel65.TextColor = BrickColor.new("Really black")
  7118. TextLabel65.TextColor3 = Color3.new(0, 0, 0)
  7119. TextLabel65.TextSize = 14
  7120. TextLabel65.TextXAlignment = Enum.TextXAlignment.Left
  7121. Frame66.Name = "MainWindow"
  7122. Frame66.Parent = Frame64
  7123. Frame66.Transparency = 0.10000000149012
  7124. Frame66.Size = UDim2.new(1, 0, 0, 150)
  7125. Frame66.BackgroundColor = BrickColor.new("Institutional white")
  7126. Frame66.BackgroundColor3 = Color3.new(1, 1, 1)
  7127. Frame66.BackgroundTransparency = 0.10000000149012
  7128. Frame66.BorderColor = BrickColor.new("Light grey")
  7129. Frame66.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7130. Frame66.ZIndex = 4
  7131. TextLabel67.Name = "Desc"
  7132. TextLabel67.Parent = Frame66
  7133. TextLabel67.Position = UDim2.new(0, 0, 0, 20)
  7134. TextLabel67.Transparency = 1
  7135. TextLabel67.Size = UDim2.new(1, 0, 0, 42)
  7136. TextLabel67.BackgroundColor = BrickColor.new("Institutional white")
  7137. TextLabel67.BackgroundColor3 = Color3.new(1, 1, 1)
  7138. TextLabel67.BackgroundTransparency = 1
  7139. TextLabel67.ZIndex = 4
  7140. TextLabel67.Font = Enum.Font.SourceSans
  7141. TextLabel67.FontSize = Enum.FontSize.Size14
  7142. TextLabel67.Text = "The file, FILENAME, already exists. Overwrite?"
  7143. TextLabel67.TextSize = 14
  7144. TextLabel67.TextWrap = true
  7145. TextLabel67.TextWrapped = true
  7146. TextButton68.Name = "Ok"
  7147. TextButton68.Parent = Frame66
  7148. TextButton68.Position = UDim2.new(0.300000012, 0, 1, -40)
  7149. TextButton68.Transparency = 0.5
  7150. TextButton68.Size = UDim2.new(0.400000006, 0, 0, 30)
  7151. TextButton68.BackgroundColor = BrickColor.new("Institutional white")
  7152. TextButton68.BackgroundColor3 = Color3.new(1, 1, 1)
  7153. TextButton68.BackgroundTransparency = 0.5
  7154. TextButton68.BorderColor = BrickColor.new("Really black")
  7155. TextButton68.BorderColor3 = Color3.new(0, 0, 0)
  7156. TextButton68.ZIndex = 4
  7157. TextButton68.Font = Enum.Font.SourceSans
  7158. TextButton68.FontSize = Enum.FontSize.Size18
  7159. TextButton68.Text = "Ok"
  7160. TextButton68.TextSize = 18
  7161. Frame69.Name = "CallRemote"
  7162. Frame69.Parent = ScreenGui0
  7163. Frame69.Position = UDim2.new(0.5, -175, 0.5, -100)
  7164. Frame69.Visible = false
  7165. Frame69.Size = UDim2.new(0, 350, 0, 20)
  7166. Frame69.Active = true
  7167. Frame69.BackgroundColor = BrickColor.new("Lily white")
  7168. Frame69.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  7169. Frame69.BorderColor = BrickColor.new("Sand violet metallic")
  7170. Frame69.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7171. Frame69.BorderSizePixel = 0
  7172. Frame69.Draggable = true
  7173. Frame69.ZIndex = 2
  7174. TextLabel70.Name = "Title"
  7175. TextLabel70.Parent = Frame69
  7176. TextLabel70.Transparency = 1
  7177. TextLabel70.Size = UDim2.new(1, 0, 1, 0)
  7178. TextLabel70.BackgroundTransparency = 1
  7179. TextLabel70.ZIndex = 2
  7180. TextLabel70.Font = Enum.Font.SourceSans
  7181. TextLabel70.FontSize = Enum.FontSize.Size14
  7182. TextLabel70.Text = "Call Remote"
  7183. TextLabel70.TextColor = BrickColor.new("Really black")
  7184. TextLabel70.TextColor3 = Color3.new(0, 0, 0)
  7185. TextLabel70.TextSize = 14
  7186. TextLabel70.TextXAlignment = Enum.TextXAlignment.Left
  7187. Frame71.Name = "MainWindow"
  7188. Frame71.Parent = Frame69
  7189. Frame71.Transparency = 0.10000000149012
  7190. Frame71.Size = UDim2.new(1, 0, 0, 200)
  7191. Frame71.BackgroundColor = BrickColor.new("Institutional white")
  7192. Frame71.BackgroundColor3 = Color3.new(1, 1, 1)
  7193. Frame71.BackgroundTransparency = 0.10000000149012
  7194. Frame71.BorderColor = BrickColor.new("Light grey")
  7195. Frame71.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7196. TextLabel72.Name = "Desc"
  7197. TextLabel72.Parent = Frame71
  7198. TextLabel72.Position = UDim2.new(0, 0, 0, 20)
  7199. TextLabel72.Transparency = 1
  7200. TextLabel72.Size = UDim2.new(1, 0, 0, 20)
  7201. TextLabel72.BackgroundColor = BrickColor.new("Institutional white")
  7202. TextLabel72.BackgroundColor3 = Color3.new(1, 1, 1)
  7203. TextLabel72.BackgroundTransparency = 1
  7204. TextLabel72.Font = Enum.Font.SourceSans
  7205. TextLabel72.FontSize = Enum.FontSize.Size14
  7206. TextLabel72.Text = "Arguments"
  7207. TextLabel72.TextSize = 14
  7208. TextLabel72.TextWrap = true
  7209. TextLabel72.TextWrapped = true
  7210. ScrollingFrame73.Name = "Arguments"
  7211. ScrollingFrame73.Parent = Frame71
  7212. ScrollingFrame73.Position = UDim2.new(0, 0, 0, 40)
  7213. ScrollingFrame73.Transparency = 1
  7214. ScrollingFrame73.Size = UDim2.new(1, 0, 0, 80)
  7215. ScrollingFrame73.BackgroundColor = BrickColor.new("Institutional white")
  7216. ScrollingFrame73.BackgroundColor3 = Color3.new(1, 1, 1)
  7217. ScrollingFrame73.BackgroundTransparency = 1
  7218. ScrollingFrame73.BottomImage = "rbxasset://textures/blackBkg_square.png"
  7219. ScrollingFrame73.CanvasSize = UDim2.new(0, 0, 0, 0)
  7220. ScrollingFrame73.MidImage = "rbxasset://textures/blackBkg_square.png"
  7221. ScrollingFrame73.ScrollingDirection = Enum.ScrollingDirection.Y
  7222. ScrollingFrame73.TopImage = "rbxasset://textures/blackBkg_square.png"
  7223. TextButton74.Name = "DisplayReturned"
  7224. TextButton74.Parent = Frame71
  7225. TextButton74.Position = UDim2.new(0.075000003, 0, 0.625, 0)
  7226. TextButton74.Transparency = 0.60000002384186
  7227. TextButton74.Size = UDim2.new(0, 20, 0, 20)
  7228. TextButton74.BackgroundColor = BrickColor.new("Institutional white")
  7229. TextButton74.BackgroundColor3 = Color3.new(1, 1, 1)
  7230. TextButton74.BackgroundTransparency = 0.60000002384186
  7231. TextButton74.ZIndex = 2
  7232. TextButton74.Font = Enum.Font.SourceSans
  7233. TextButton74.FontSize = Enum.FontSize.Size18
  7234. TextButton74.Text = ""
  7235. TextButton74.TextColor = BrickColor.new("Institutional white")
  7236. TextButton74.TextColor3 = Color3.new(1, 1, 1)
  7237. TextButton74.TextSize = 18
  7238. TextLabel75.Name = "enabled"
  7239. TextLabel75.Parent = TextButton74
  7240. TextLabel75.Position = UDim2.new(0, 3, 0, 3)
  7241. TextLabel75.Visible = false
  7242. TextLabel75.Transparency = 0.40000000596046
  7243. TextLabel75.Size = UDim2.new(0, 14, 0, 14)
  7244. TextLabel75.BackgroundColor = BrickColor.new("Dark stone grey")
  7245. TextLabel75.BackgroundColor3 = Color3.new(0.380392, 0.380392, 0.380392)
  7246. TextLabel75.BackgroundTransparency = 0.40000000596046
  7247. TextLabel75.BorderSizePixel = 0
  7248. TextLabel75.Font = Enum.Font.SourceSans
  7249. TextLabel75.FontSize = Enum.FontSize.Size14
  7250. TextLabel75.Text = ""
  7251. TextLabel75.TextSize = 14
  7252. TextLabel76.Name = "Desc2"
  7253. TextLabel76.Parent = Frame71
  7254. TextLabel76.Position = UDim2.new(0.075000003, 30, 0.625, 0)
  7255. TextLabel76.Transparency = 1
  7256. TextLabel76.Size = UDim2.new(0.925000012, -30, 0, 20)
  7257. TextLabel76.BackgroundColor = BrickColor.new("Institutional white")
  7258. TextLabel76.BackgroundColor3 = Color3.new(1, 1, 1)
  7259. TextLabel76.BackgroundTransparency = 1
  7260. TextLabel76.Font = Enum.Font.SourceSans
  7261. TextLabel76.FontSize = Enum.FontSize.Size14
  7262. TextLabel76.Text = "Display values returned"
  7263. TextLabel76.TextSize = 14
  7264. TextLabel76.TextXAlignment = Enum.TextXAlignment.Left
  7265. TextButton77.Name = "Add"
  7266. TextButton77.Parent = Frame71
  7267. TextButton77.Position = UDim2.new(0.800000012, 0, 0.625, 0)
  7268. TextButton77.Transparency = 0.5
  7269. TextButton77.Size = UDim2.new(0, 20, 0, 20)
  7270. TextButton77.BackgroundColor = BrickColor.new("Institutional white")
  7271. TextButton77.BackgroundColor3 = Color3.new(1, 1, 1)
  7272. TextButton77.BackgroundTransparency = 0.5
  7273. TextButton77.BorderColor = BrickColor.new("Really black")
  7274. TextButton77.BorderColor3 = Color3.new(0, 0, 0)
  7275. TextButton77.Font = Enum.Font.SourceSansBold
  7276. TextButton77.FontSize = Enum.FontSize.Size24
  7277. TextButton77.Text = "+"
  7278. TextButton77.TextSize = 24
  7279. TextButton78.Name = "Subtract"
  7280. TextButton78.Parent = Frame71
  7281. TextButton78.Position = UDim2.new(0.899999976, 0, 0.625, 0)
  7282. TextButton78.Transparency = 0.5
  7283. TextButton78.Size = UDim2.new(0, 20, 0, 20)
  7284. TextButton78.BackgroundColor = BrickColor.new("Institutional white")
  7285. TextButton78.BackgroundColor3 = Color3.new(1, 1, 1)
  7286. TextButton78.BackgroundTransparency = 0.5
  7287. TextButton78.BorderColor = BrickColor.new("Really black")
  7288. TextButton78.BorderColor3 = Color3.new(0, 0, 0)
  7289. TextButton78.Font = Enum.Font.SourceSansBold
  7290. TextButton78.FontSize = Enum.FontSize.Size24
  7291. TextButton78.Text = "-"
  7292. TextButton78.TextSize = 24
  7293. Frame79.Name = "ArgumentTemplate"
  7294. Frame79.Parent = Frame71
  7295. Frame79.Visible = false
  7296. Frame79.Transparency = 0.5
  7297. Frame79.Size = UDim2.new(1, 0, 0, 20)
  7298. Frame79.BackgroundColor = BrickColor.new("Institutional white")
  7299. Frame79.BackgroundColor3 = Color3.new(1, 1, 1)
  7300. Frame79.BackgroundTransparency = 0.5
  7301. Frame79.BorderColor = BrickColor.new("Light grey")
  7302. Frame79.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7303. TextButton80.Name = "Type"
  7304. TextButton80.Parent = Frame79
  7305. TextButton80.Transparency = 0.89999997615814
  7306. TextButton80.Size = UDim2.new(0.400000006, 0, 0, 20)
  7307. TextButton80.BackgroundColor = BrickColor.new("Institutional white")
  7308. TextButton80.BackgroundColor3 = Color3.new(1, 1, 1)
  7309. TextButton80.BackgroundTransparency = 0.89999997615814
  7310. TextButton80.BorderColor = BrickColor.new("Really black")
  7311. TextButton80.BorderColor3 = Color3.new(0, 0, 0)
  7312. TextButton80.Font = Enum.Font.SourceSans
  7313. TextButton80.FontSize = Enum.FontSize.Size18
  7314. TextButton80.Text = "Script"
  7315. TextButton80.TextSize = 18
  7316. TextBox81.Name = "Value"
  7317. TextBox81.Parent = Frame79
  7318. TextBox81.Position = UDim2.new(0.400000006, 0, 0, 0)
  7319. TextBox81.Transparency = 0.89999997615814
  7320. TextBox81.Size = UDim2.new(0.600000024, -12, 0, 20)
  7321. TextBox81.BackgroundColor = BrickColor.new("Institutional white")
  7322. TextBox81.BackgroundColor3 = Color3.new(1, 1, 1)
  7323. TextBox81.BackgroundTransparency = 0.89999997615814
  7324. TextBox81.Font = Enum.Font.SourceSans
  7325. TextBox81.FontSize = Enum.FontSize.Size14
  7326. TextBox81.Text = ""
  7327. TextBox81.TextSize = 14
  7328. TextBox81.TextXAlignment = Enum.TextXAlignment.Left
  7329. TextButton82.Name = "Cancel"
  7330. TextButton82.Parent = Frame71
  7331. TextButton82.Position = UDim2.new(0.524999976, 0, 1, -40)
  7332. TextButton82.Transparency = 0.5
  7333. TextButton82.Size = UDim2.new(0.400000006, 0, 0, 30)
  7334. TextButton82.BackgroundColor = BrickColor.new("Institutional white")
  7335. TextButton82.BackgroundColor3 = Color3.new(1, 1, 1)
  7336. TextButton82.BackgroundTransparency = 0.5
  7337. TextButton82.BorderColor = BrickColor.new("Really black")
  7338. TextButton82.BorderColor3 = Color3.new(0, 0, 0)
  7339. TextButton82.Font = Enum.Font.SourceSans
  7340. TextButton82.FontSize = Enum.FontSize.Size18
  7341. TextButton82.Text = "Cancel"
  7342. TextButton82.TextSize = 18
  7343. TextButton83.Name = "Ok"
  7344. TextButton83.Parent = Frame71
  7345. TextButton83.Position = UDim2.new(0.075000003, 0, 1, -40)
  7346. TextButton83.Transparency = 0.5
  7347. TextButton83.Size = UDim2.new(0.400000006, 0, 0, 30)
  7348. TextButton83.BackgroundColor = BrickColor.new("Institutional white")
  7349. TextButton83.BackgroundColor3 = Color3.new(1, 1, 1)
  7350. TextButton83.BackgroundTransparency = 0.5
  7351. TextButton83.BorderColor = BrickColor.new("Really black")
  7352. TextButton83.BorderColor3 = Color3.new(0, 0, 0)
  7353. TextButton83.Font = Enum.Font.SourceSans
  7354. TextButton83.FontSize = Enum.FontSize.Size18
  7355. TextButton83.Text = "Call"
  7356. TextButton83.TextSize = 18
  7357. Frame84.Name = "TableCaution"
  7358. Frame84.Parent = ScreenGui0
  7359. Frame84.Position = UDim2.new(0.300000012, 0, 0.300000012, 0)
  7360. Frame84.Visible = false
  7361. Frame84.Size = UDim2.new(0, 350, 0, 20)
  7362. Frame84.Active = true
  7363. Frame84.BackgroundColor = BrickColor.new("Lily white")
  7364. Frame84.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  7365. Frame84.BorderColor = BrickColor.new("Sand violet metallic")
  7366. Frame84.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7367. Frame84.BorderSizePixel = 0
  7368. Frame84.Draggable = true
  7369. Frame84.ZIndex = 2
  7370. Frame85.Name = "MainWindow"
  7371. Frame85.Parent = Frame84
  7372. Frame85.Transparency = 0.10000000149012
  7373. Frame85.Size = UDim2.new(1, 0, 0, 150)
  7374. Frame85.BackgroundColor = BrickColor.new("Institutional white")
  7375. Frame85.BackgroundColor3 = Color3.new(1, 1, 1)
  7376. Frame85.BackgroundTransparency = 0.10000000149012
  7377. Frame85.BorderColor = BrickColor.new("Light grey")
  7378. Frame85.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7379. TextButton86.Name = "Ok"
  7380. TextButton86.Parent = Frame85
  7381. TextButton86.Position = UDim2.new(0.300000012, 0, 1, -40)
  7382. TextButton86.Transparency = 0.5
  7383. TextButton86.Size = UDim2.new(0.400000006, 0, 0, 30)
  7384. TextButton86.BackgroundColor = BrickColor.new("Institutional white")
  7385. TextButton86.BackgroundColor3 = Color3.new(1, 1, 1)
  7386. TextButton86.BackgroundTransparency = 0.5
  7387. TextButton86.BorderColor = BrickColor.new("Really black")
  7388. TextButton86.BorderColor3 = Color3.new(0, 0, 0)
  7389. TextButton86.Font = Enum.Font.SourceSans
  7390. TextButton86.FontSize = Enum.FontSize.Size18
  7391. TextButton86.Text = "Ok"
  7392. TextButton86.TextSize = 18
  7393. ScrollingFrame87.Name = "TableResults"
  7394. ScrollingFrame87.Parent = Frame85
  7395. ScrollingFrame87.Position = UDim2.new(0, 0, 0, 20)
  7396. ScrollingFrame87.Transparency = 1
  7397. ScrollingFrame87.Size = UDim2.new(1, 0, 0, 80)
  7398. ScrollingFrame87.BackgroundColor = BrickColor.new("Institutional white")
  7399. ScrollingFrame87.BackgroundColor3 = Color3.new(1, 1, 1)
  7400. ScrollingFrame87.BackgroundTransparency = 1
  7401. ScrollingFrame87.BottomImage = "rbxasset://textures/blackBkg_square.png"
  7402. ScrollingFrame87.CanvasSize = UDim2.new(0, 0, 0, 0)
  7403. ScrollingFrame87.MidImage = "rbxasset://textures/blackBkg_square.png"
  7404. ScrollingFrame87.ScrollingDirection = Enum.ScrollingDirection.Y
  7405. ScrollingFrame87.TopImage = "rbxasset://textures/blackBkg_square.png"
  7406. Frame88.Name = "TableTemplate"
  7407. Frame88.Parent = Frame85
  7408. Frame88.Visible = false
  7409. Frame88.Transparency = 0.5
  7410. Frame88.Size = UDim2.new(1, 0, 0, 20)
  7411. Frame88.BackgroundColor = BrickColor.new("Institutional white")
  7412. Frame88.BackgroundColor3 = Color3.new(1, 1, 1)
  7413. Frame88.BackgroundTransparency = 0.5
  7414. Frame88.BorderColor = BrickColor.new("Light grey")
  7415. Frame88.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  7416. TextLabel89.Name = "Type"
  7417. TextLabel89.Parent = Frame88
  7418. TextLabel89.Transparency = 0.89999997615814
  7419. TextLabel89.Size = UDim2.new(0.400000006, 0, 0, 20)
  7420. TextLabel89.BackgroundColor = BrickColor.new("Institutional white")
  7421. TextLabel89.BackgroundColor3 = Color3.new(1, 1, 1)
  7422. TextLabel89.BackgroundTransparency = 0.89999997615814
  7423. TextLabel89.Font = Enum.Font.SourceSans
  7424. TextLabel89.FontSize = Enum.FontSize.Size18
  7425. TextLabel89.Text = "Script"
  7426. TextLabel89.TextSize = 18
  7427. TextLabel90.Name = "Value"
  7428. TextLabel90.Parent = Frame88
  7429. TextLabel90.Position = UDim2.new(0.400000006, 0, 0, 0)
  7430. TextLabel90.Transparency = 0.89999997615814
  7431. TextLabel90.Size = UDim2.new(0.600000024, -12, 0, 20)
  7432. TextLabel90.BackgroundColor = BrickColor.new("Institutional white")
  7433. TextLabel90.BackgroundColor3 = Color3.new(1, 1, 1)
  7434. TextLabel90.BackgroundTransparency = 0.89999997615814
  7435. TextLabel90.Font = Enum.Font.SourceSans
  7436. TextLabel90.FontSize = Enum.FontSize.Size14
  7437. TextLabel90.Text = "Script"
  7438. TextLabel90.TextSize = 14
  7439. TextLabel91.Name = "Title"
  7440. TextLabel91.Parent = Frame84
  7441. TextLabel91.Transparency = 1
  7442. TextLabel91.Size = UDim2.new(1, 0, 1, 0)
  7443. TextLabel91.BackgroundTransparency = 1
  7444. TextLabel91.ZIndex = 2
  7445. TextLabel91.Font = Enum.Font.SourceSans
  7446. TextLabel91.FontSize = Enum.FontSize.Size14
  7447. TextLabel91.Text = "Caution"
  7448. TextLabel91.TextColor = BrickColor.new("Really black")
  7449. TextLabel91.TextColor3 = Color3.new(0, 0, 0)
  7450. TextLabel91.TextSize = 14
  7451. TextLabel91.TextXAlignment = Enum.TextXAlignment.Left
  7452. Frame92.Name = "ScriptEditor"
  7453. Frame92.Parent = ScreenGui0
  7454. Frame92.Position = UDim2.new(0.5, -258, 0.5, -208)
  7455. Frame92.Visible = false
  7456. Frame92.Size = UDim2.new(0, 516, 0, 20)
  7457. Frame92.Active = true
  7458. Frame92.BackgroundColor = BrickColor.new("Lily white")
  7459. Frame92.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  7460. Frame92.BorderColor = BrickColor.new("Sand violet metallic")
  7461. Frame92.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7462. Frame92.Draggable = true
  7463. Frame92.ZIndex = 5
  7464. TextLabel93.Name = "Title"
  7465. TextLabel93.Parent = Frame92
  7466. TextLabel93.Transparency = 1
  7467. TextLabel93.Size = UDim2.new(1, 0, 1, 0)
  7468. TextLabel93.BackgroundTransparency = 1
  7469. TextLabel93.ZIndex = 5
  7470. TextLabel93.Font = Enum.Font.SourceSans
  7471. TextLabel93.FontSize = Enum.FontSize.Size14
  7472. TextLabel93.Text = "Script Viewer"
  7473. TextLabel93.TextColor = BrickColor.new("Really black")
  7474. TextLabel93.TextColor3 = Color3.new(0, 0, 0)
  7475. TextLabel93.TextSize = 14
  7476. TextLabel93.TextXAlignment = Enum.TextXAlignment.Left
  7477. Frame94.Name = "Cover"
  7478. Frame94.Parent = Frame92
  7479. Frame94.Position = UDim2.new(0, 0, 3, 0)
  7480. Frame94.Size = UDim2.new(0, 516, 0, 416)
  7481. Frame94.BackgroundColor = BrickColor.new("Institutional white")
  7482. Frame94.BackgroundColor3 = Color3.new(1, 1, 1)
  7483. Frame94.BorderSizePixel = 0
  7484. Frame95.Name = "EditorGrid"
  7485. Frame95.Parent = Frame92
  7486. Frame95.Position = UDim2.new(0, 0, 3, 0)
  7487. Frame95.Size = UDim2.new(0, 500, 0, 400)
  7488. Frame95.BackgroundColor = BrickColor.new("Institutional white")
  7489. Frame95.BackgroundColor3 = Color3.new(1, 1, 1)
  7490. Frame95.BorderSizePixel = 0
  7491. Frame96.Name = "TopBar"
  7492. Frame96.Parent = Frame92
  7493. Frame96.Size = UDim2.new(1, 0, 3, 0)
  7494. Frame96.BackgroundColor = BrickColor.new("White")
  7495. Frame96.BackgroundColor3 = Color3.new(0.941177, 0.941177, 0.941177)
  7496. Frame96.BorderColor = BrickColor.new("Sand violet metallic")
  7497. Frame96.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7498. ImageButton97.Name = "ScriptBarLeft"
  7499. ImageButton97.Parent = Frame96
  7500. ImageButton97.Position = UDim2.new(1, -32, 0, 40)
  7501. ImageButton97.Size = UDim2.new(0, 16, 0, 20)
  7502. ImageButton97.Active = false
  7503. ImageButton97.BackgroundColor = BrickColor.new("Quill grey")
  7504. ImageButton97.BackgroundColor3 = Color3.new(0.866667, 0.866667, 0.866667)
  7505. ImageButton97.BorderColor = BrickColor.new("Sand violet metallic")
  7506. ImageButton97.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7507. ImageButton97.AutoButtonColor = false
  7508. Frame98.Name = "Arrow Graphic"
  7509. Frame98.Parent = ImageButton97
  7510. Frame98.Position = UDim2.new(0.5, -4, 0.5, -4)
  7511. Frame98.Transparency = 1
  7512. Frame98.Size = UDim2.new(0, 8, 0, 8)
  7513. Frame98.BackgroundTransparency = 1
  7514. Frame98.BorderSizePixel = 0
  7515. Frame99.Name = "Graphic"
  7516. Frame99.Parent = Frame98
  7517. Frame99.Position = UDim2.new(0.25, 0, 0.375, 0)
  7518. Frame99.Transparency = 0.69999998807907
  7519. Frame99.Size = UDim2.new(0.125, 0, 0.25, 0)
  7520. Frame99.BackgroundColor = BrickColor.new("Sand violet metallic")
  7521. Frame99.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7522. Frame99.BackgroundTransparency = 0.69999998807907
  7523. Frame99.BorderSizePixel = 0
  7524. Frame100.Name = "Graphic"
  7525. Frame100.Parent = Frame98
  7526. Frame100.Position = UDim2.new(0.375, 0, 0.25, 0)
  7527. Frame100.Transparency = 0.69999998807907
  7528. Frame100.Size = UDim2.new(0.125, 0, 0.5, 0)
  7529. Frame100.BackgroundColor = BrickColor.new("Sand violet metallic")
  7530. Frame100.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7531. Frame100.BackgroundTransparency = 0.69999998807907
  7532. Frame100.BorderSizePixel = 0
  7533. Frame101.Name = "Graphic"
  7534. Frame101.Parent = Frame98
  7535. Frame101.Position = UDim2.new(0.5, 0, 0.125, 0)
  7536. Frame101.Transparency = 0.69999998807907
  7537. Frame101.Size = UDim2.new(0.125, 0, 0.75, 0)
  7538. Frame101.BackgroundColor = BrickColor.new("Sand violet metallic")
  7539. Frame101.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7540. Frame101.BackgroundTransparency = 0.69999998807907
  7541. Frame101.BorderSizePixel = 0
  7542. Frame102.Name = "Graphic"
  7543. Frame102.Parent = Frame98
  7544. Frame102.Position = UDim2.new(0.625, 0, 0, 0)
  7545. Frame102.Transparency = 0.69999998807907
  7546. Frame102.Size = UDim2.new(0.125, 0, 1, 0)
  7547. Frame102.BackgroundColor = BrickColor.new("Sand violet metallic")
  7548. Frame102.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7549. Frame102.BackgroundTransparency = 0.69999998807907
  7550. Frame102.BorderSizePixel = 0
  7551. ImageButton103.Name = "ScriptBarRight"
  7552. ImageButton103.Parent = Frame96
  7553. ImageButton103.Position = UDim2.new(1, -16, 0, 40)
  7554. ImageButton103.Size = UDim2.new(0, 16, 0, 20)
  7555. ImageButton103.Active = false
  7556. ImageButton103.BackgroundColor = BrickColor.new("Quill grey")
  7557. ImageButton103.BackgroundColor3 = Color3.new(0.866667, 0.866667, 0.866667)
  7558. ImageButton103.BorderColor = BrickColor.new("Sand violet metallic")
  7559. ImageButton103.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7560. ImageButton103.AutoButtonColor = false
  7561. Frame104.Name = "Arrow Graphic"
  7562. Frame104.Parent = ImageButton103
  7563. Frame104.Position = UDim2.new(0.5, -4, 0.5, -4)
  7564. Frame104.Transparency = 1
  7565. Frame104.Size = UDim2.new(0, 8, 0, 8)
  7566. Frame104.BackgroundTransparency = 1
  7567. Frame104.BorderSizePixel = 0
  7568. Frame105.Name = "Graphic"
  7569. Frame105.Parent = Frame104
  7570. Frame105.Position = UDim2.new(0.625, 0, 0.375, 0)
  7571. Frame105.Transparency = 0.69999998807907
  7572. Frame105.Size = UDim2.new(0.125, 0, 0.25, 0)
  7573. Frame105.BackgroundColor = BrickColor.new("Sand violet metallic")
  7574. Frame105.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7575. Frame105.BackgroundTransparency = 0.69999998807907
  7576. Frame105.BorderSizePixel = 0
  7577. Frame106.Name = "Graphic"
  7578. Frame106.Parent = Frame104
  7579. Frame106.Position = UDim2.new(0.5, 0, 0.25, 0)
  7580. Frame106.Transparency = 0.69999998807907
  7581. Frame106.Size = UDim2.new(0.125, 0, 0.5, 0)
  7582. Frame106.BackgroundColor = BrickColor.new("Sand violet metallic")
  7583. Frame106.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7584. Frame106.BackgroundTransparency = 0.69999998807907
  7585. Frame106.BorderSizePixel = 0
  7586. Frame107.Name = "Graphic"
  7587. Frame107.Parent = Frame104
  7588. Frame107.Position = UDim2.new(0.375, 0, 0.125, 0)
  7589. Frame107.Transparency = 0.69999998807907
  7590. Frame107.Size = UDim2.new(0.125, 0, 0.75, 0)
  7591. Frame107.BackgroundColor = BrickColor.new("Sand violet metallic")
  7592. Frame107.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7593. Frame107.BackgroundTransparency = 0.69999998807907
  7594. Frame107.BorderSizePixel = 0
  7595. Frame108.Name = "Graphic"
  7596. Frame108.Parent = Frame104
  7597. Frame108.Position = UDim2.new(0.25, 0, 0, 0)
  7598. Frame108.Transparency = 0.69999998807907
  7599. Frame108.Size = UDim2.new(0.125, 0, 1, 0)
  7600. Frame108.BackgroundColor = BrickColor.new("Sand violet metallic")
  7601. Frame108.BackgroundColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7602. Frame108.BackgroundTransparency = 0.69999998807907
  7603. Frame108.BorderSizePixel = 0
  7604. TextButton109.Name = "Clipboard"
  7605. TextButton109.Parent = Frame96
  7606. TextButton109.Position = UDim2.new(0, 0, 0, 20)
  7607. TextButton109.Transparency = 0.5
  7608. TextButton109.Size = UDim2.new(0, 80, 0, 20)
  7609. TextButton109.BackgroundColor = BrickColor.new("Institutional white")
  7610. TextButton109.BackgroundColor3 = Color3.new(1, 1, 1)
  7611. TextButton109.BackgroundTransparency = 0.5
  7612. TextButton109.BorderColor = BrickColor.new("Really black")
  7613. TextButton109.BorderColor3 = Color3.new(0, 0, 0)
  7614. TextButton109.Font = Enum.Font.SourceSans
  7615. TextButton109.FontSize = Enum.FontSize.Size14
  7616. TextButton109.Text = "To Clipboard"
  7617. TextButton109.TextSize = 14
  7618. Frame110.Name = "ScriptBar"
  7619. Frame110.Parent = Frame96
  7620. Frame110.Position = UDim2.new(0, 0, 0, 40)
  7621. Frame110.Size = UDim2.new(1, -32, 0, 20)
  7622. Frame110.BackgroundColor = BrickColor.new("Mid gray")
  7623. Frame110.BackgroundColor3 = Color3.new(0.823529, 0.823529, 0.823529)
  7624. Frame110.BorderColor = BrickColor.new("Sand violet metallic")
  7625. Frame110.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  7626. Frame110.ClipsDescendants = true
  7627. Frame111.Name = "Entry"
  7628. Frame111.Parent = Frame96
  7629. Frame111.Visible = false
  7630. Frame111.Transparency = 1
  7631. Frame111.Size = UDim2.new(0, 100, 1, 0)
  7632. Frame111.BackgroundColor = BrickColor.new("Institutional white")
  7633. Frame111.BackgroundColor3 = Color3.new(1, 1, 1)
  7634. Frame111.BackgroundTransparency = 1
  7635. TextButton112.Name = "Button"
  7636. TextButton112.Parent = Frame111
  7637. TextButton112.Transparency = 0.60000002384186
  7638. TextButton112.Size = UDim2.new(1, 0, 1, 0)
  7639. TextButton112.BackgroundColor = BrickColor.new("Institutional white")
  7640. TextButton112.BackgroundColor3 = Color3.new(1, 1, 1)
  7641. TextButton112.BackgroundTransparency = 0.60000002384186
  7642. TextButton112.BorderColor = BrickColor.new("Really black")
  7643. TextButton112.BorderColor3 = Color3.new(0, 0, 0)
  7644. TextButton112.ClipsDescendants = true
  7645. TextButton112.ZIndex = 4
  7646. TextButton112.Font = Enum.Font.SourceSans
  7647. TextButton112.FontSize = Enum.FontSize.Size12
  7648. TextButton112.Text = ""
  7649. TextButton112.TextSize = 12
  7650. TextButton112.TextXAlignment = Enum.TextXAlignment.Left
  7651. TextButton113.Name = "Close"
  7652. TextButton113.Parent = Frame111
  7653. TextButton113.Position = UDim2.new(1, -20, 0, 0)
  7654. TextButton113.Transparency = 1
  7655. TextButton113.Size = UDim2.new(0, 20, 0, 20)
  7656. TextButton113.BackgroundColor = BrickColor.new("Institutional white")
  7657. TextButton113.BackgroundColor3 = Color3.new(1, 1, 1)
  7658. TextButton113.BackgroundTransparency = 1
  7659. TextButton113.BorderColor = BrickColor.new("Really black")
  7660. TextButton113.BorderColor3 = Color3.new(0, 0, 0)
  7661. TextButton113.ZIndex = 4
  7662. TextButton113.Font = Enum.Font.SourceSans
  7663. TextButton113.FontSize = Enum.FontSize.Size14
  7664. TextButton113.Text = "X"
  7665. TextButton113.TextSize = 14
  7666. BindableEvent114.Name = "OpenScript"
  7667. BindableEvent114.Parent = Frame92
  7668. LocalScript115.Parent = Frame92
  7669. table.insert(cors,sandbox(LocalScript115,function()
  7670. local top = script.Parent
  7671.  
  7672. local editorGrid = top:WaitForChild("EditorGrid")
  7673.  
  7674. local currentSource = ""
  7675.  
  7676. local currentEditor = {
  7677. x = 0,
  7678. y = 0
  7679. }
  7680.  
  7681. local userInput = game:GetService("UserInputService")
  7682. local mouse = game:GetService("Players").LocalPlayer:GetMouse()
  7683.  
  7684. local topBar = top:WaitForChild("TopBar")
  7685. local scriptBar = topBar:WaitForChild("ScriptBar")
  7686. local scriptBarLeft = topBar:WaitForChild("ScriptBarLeft")
  7687. local scriptBarRight = topBar:WaitForChild("ScriptBarRight")
  7688. local clipboardButton = topBar:WaitForChild("Clipboard")
  7689.  
  7690. local entryTemplate = topBar:WaitForChild("Entry")
  7691.  
  7692. local openEvent = top:WaitForChild("OpenScript")
  7693.  
  7694. local closeButton = top:WaitForChild("Close")
  7695.  
  7696. local memoryScripts = {}
  7697.  
  7698. local editingIndex = 0
  7699.  
  7700. -- Scrollbar
  7701.  
  7702. local ScrollBarWidth = 16
  7703.  
  7704. local ScrollStyles = {
  7705. Background = Color3.new(233/255, 233/255, 233/255);
  7706. Border = Color3.new(149/255, 149/255, 149/255);
  7707. Selected = Color3.new( 63/255, 119/255, 189/255);
  7708. BorderSelected = Color3.new( 55/255, 106/255, 167/255);
  7709. Text = Color3.new( 0/255, 0/255, 0/255);
  7710. TextDisabled = Color3.new(128/255, 128/255, 128/255);
  7711. TextSelected = Color3.new(255/255, 255/255, 255/255);
  7712. Button = Color3.new(221/255, 221/255, 221/255);
  7713. ButtonBorder = Color3.new(149/255, 149/255, 149/255);
  7714. ButtonSelected = Color3.new(255/255, 0/255, 0/255);
  7715. Field = Color3.new(255/255, 255/255, 255/255);
  7716. FieldBorder = Color3.new(191/255, 191/255, 191/255);
  7717. TitleBackground = Color3.new(178/255, 178/255, 178/255);
  7718. }
  7719. do
  7720. local ZIndexLock = {}
  7721. function SetZIndex(object,z)
  7722. if not ZIndexLock[object] then
  7723. ZIndexLock[object] = true
  7724. if object:IsA'GuiObject' then
  7725. object.ZIndex = z
  7726. end
  7727. local children = object:GetChildren()
  7728. for i = 1,#children do
  7729. SetZIndex(children[i],z)
  7730. end
  7731. ZIndexLock[object] = nil
  7732. end
  7733. end
  7734. end
  7735. function SetZIndexOnChanged(object)
  7736. return object.Changed:connect(function(p)
  7737. if p == "ZIndex" then
  7738. SetZIndex(object,object.ZIndex)
  7739. end
  7740. end)
  7741. end
  7742. function Create(ty,data)
  7743. local obj
  7744. if type(ty) == 'string' then
  7745. obj = Instance.new(ty)
  7746. else
  7747. obj = ty
  7748. end
  7749. for k, v in pairs(data) do
  7750. if type(k) == 'number' then
  7751. v.Parent = obj
  7752. else
  7753. obj[k] = v
  7754. end
  7755. end
  7756. return obj
  7757. end
  7758. -- returns the ascendant ScreenGui of an object
  7759. function GetScreen(screen)
  7760. if screen == nil then return nil end
  7761. while not screen:IsA("ScreenGui") do
  7762. screen = screen.Parent
  7763. if screen == nil then return nil end
  7764. end
  7765. return screen
  7766. end
  7767. -- AutoButtonColor doesn't always reset properly
  7768. function ResetButtonColor(button)
  7769. local active = button.Active
  7770. button.Active = not active
  7771. button.Active = active
  7772. end
  7773.  
  7774. function ArrowGraphic(size,dir,scaled,template)
  7775. local Frame = Create('Frame',{
  7776. Name = "Arrow Graphic";
  7777. BorderSizePixel = 0;
  7778. Size = UDim2.new(0,size,0,size);
  7779. Transparency = 1;
  7780. })
  7781. if not template then
  7782. template = Instance.new("Frame")
  7783. template.BorderSizePixel = 0
  7784. end
  7785.  
  7786. local transform
  7787. if dir == nil or dir == 'Up' then
  7788. function transform(p,s) return p,s end
  7789. elseif dir == 'Down' then
  7790. function transform(p,s) return UDim2.new(0,p.X.Offset,0,size-p.Y.Offset-1),s end
  7791. elseif dir == 'Left' then
  7792. function transform(p,s) return UDim2.new(0,p.Y.Offset,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  7793. elseif dir == 'Right' then
  7794. function transform(p,s) return UDim2.new(0,size-p.Y.Offset-1,0,p.X.Offset),UDim2.new(0,s.Y.Offset,0,s.X.Offset) end
  7795. end
  7796.  
  7797. local scale
  7798. if scaled then
  7799. function scale(p,s) return UDim2.new(p.X.Offset/size,0,p.Y.Offset/size,0),UDim2.new(s.X.Offset/size,0,s.Y.Offset/size,0) end
  7800. else
  7801. function scale(p,s) return p,s end
  7802. end
  7803.  
  7804. local o = math.floor(size/4)
  7805. if size%2 == 0 then
  7806. local n = size/2-1
  7807. for i = 0,n do
  7808. local t = template:Clone()
  7809. local p,s = scale(transform(
  7810. UDim2.new(0,n-i,0,o+i),
  7811. UDim2.new(0,(i+1)*2,0,1)
  7812. ))
  7813. t.Position = p
  7814. t.Size = s
  7815. t.Parent = Frame
  7816. end
  7817. else
  7818. local n = (size-1)/2
  7819. for i = 0,n do
  7820. local t = template:Clone()
  7821. local p,s = scale(transform(
  7822. UDim2.new(0,n-i,0,o+i),
  7823. UDim2.new(0,i*2+1,0,1)
  7824. ))
  7825. t.Position = p
  7826. t.Size = s
  7827. t.Parent = Frame
  7828. end
  7829. end
  7830. if size%4 > 1 then
  7831. local t = template:Clone()
  7832. local p,s = scale(transform(
  7833. UDim2.new(0,0,0,size-o-1),
  7834. UDim2.new(0,size,0,1)
  7835. ))
  7836. t.Position = p
  7837. t.Size = s
  7838. t.Parent = Frame
  7839. end
  7840. return Frame
  7841. end
  7842.  
  7843. function GripGraphic(size,dir,spacing,scaled,template)
  7844. local Frame = Create('Frame',{
  7845. Name = "Grip Graphic";
  7846. BorderSizePixel = 0;
  7847. Size = UDim2.new(0,size.x,0,size.y);
  7848. Transparency = 1;
  7849. })
  7850. if not template then
  7851. template = Instance.new("Frame")
  7852. template.BorderSizePixel = 0
  7853. end
  7854.  
  7855. spacing = spacing or 2
  7856.  
  7857. local scale
  7858. if scaled then
  7859. function scale(p) return UDim2.new(p.X.Offset/size.x,0,p.Y.Offset/size.y,0) end
  7860. else
  7861. function scale(p) return p end
  7862. end
  7863.  
  7864. if dir == 'Vertical' then
  7865. for i=0,size.x-1,spacing do
  7866. local t = template:Clone()
  7867. t.Size = scale(UDim2.new(0,1,0,size.y))
  7868. t.Position = scale(UDim2.new(0,i,0,0))
  7869. t.Parent = Frame
  7870. end
  7871. elseif dir == nil or dir == 'Horizontal' then
  7872. for i=0,size.y-1,spacing do
  7873. local t = template:Clone()
  7874. t.Size = scale(UDim2.new(0,size.x,0,1))
  7875. t.Position = scale(UDim2.new(0,0,0,i))
  7876. t.Parent = Frame
  7877. end
  7878. end
  7879.  
  7880. return Frame
  7881. end
  7882.  
  7883. do
  7884. local mt = {
  7885. __index = {
  7886. GetScrollPercent = function(self)
  7887. return self.ScrollIndex/(self.TotalSpace-self.VisibleSpace)
  7888. end;
  7889. CanScrollDown = function(self)
  7890. return self.ScrollIndex + self.VisibleSpace < self.TotalSpace
  7891. end;
  7892. CanScrollUp = function(self)
  7893. return self.ScrollIndex > 0
  7894. end;
  7895. ScrollDown = function(self)
  7896. self.ScrollIndex = self.ScrollIndex + self.PageIncrement
  7897. self:Update()
  7898. end;
  7899. ScrollUp = function(self)
  7900. self.ScrollIndex = self.ScrollIndex - self.PageIncrement
  7901. self:Update()
  7902. end;
  7903. ScrollTo = function(self,index)
  7904. self.ScrollIndex = index
  7905. self:Update()
  7906. end;
  7907. SetScrollPercent = function(self,percent)
  7908. self.ScrollIndex = math.floor((self.TotalSpace - self.VisibleSpace)*percent + 0.5)
  7909. self:Update()
  7910. end;
  7911. };
  7912. }
  7913. mt.__index.CanScrollRight = mt.__index.CanScrollDown
  7914. mt.__index.CanScrollLeft = mt.__index.CanScrollUp
  7915. mt.__index.ScrollLeft = mt.__index.ScrollUp
  7916. mt.__index.ScrollRight = mt.__index.ScrollDown
  7917.  
  7918. function ScrollBar(horizontal)
  7919. -- create row scroll bar
  7920. local ScrollFrame = Create('Frame',{
  7921. Name = "ScrollFrame";
  7922. Position = horizontal and UDim2.new(0,0,1,-ScrollBarWidth) or UDim2.new(1,-ScrollBarWidth,0,0);
  7923. Size = horizontal and UDim2.new(1,0,0,ScrollBarWidth) or UDim2.new(0,ScrollBarWidth,1,0);
  7924. BackgroundTransparency = 1;
  7925. Create('ImageButton',{
  7926. Name = "ScrollDown";
  7927. Position = horizontal and UDim2.new(1,-ScrollBarWidth,0,0) or UDim2.new(0,0,1,-ScrollBarWidth);
  7928. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  7929. BackgroundColor3 = ScrollStyles.Button;
  7930. BorderColor3 = ScrollStyles.Border;
  7931. --BorderSizePixel = 0;
  7932. });
  7933. Create('ImageButton',{
  7934. Name = "ScrollUp";
  7935. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  7936. BackgroundColor3 = ScrollStyles.Button;
  7937. BorderColor3 = ScrollStyles.Border;
  7938. --BorderSizePixel = 0;
  7939. });
  7940. Create('ImageButton',{
  7941. Name = "ScrollBar";
  7942. Size = horizontal and UDim2.new(1,-ScrollBarWidth*2,1,0) or UDim2.new(1,0,1,-ScrollBarWidth*2);
  7943. Position = horizontal and UDim2.new(0,ScrollBarWidth,0,0) or UDim2.new(0,0,0,ScrollBarWidth);
  7944. AutoButtonColor = false;
  7945. BackgroundColor3 = Color3.new(0.94902, 0.94902, 0.94902);
  7946. BorderColor3 = ScrollStyles.Border;
  7947. --BorderSizePixel = 0;
  7948. Create('ImageButton',{
  7949. Name = "ScrollThumb";
  7950. AutoButtonColor = false;
  7951. Size = UDim2.new(0, ScrollBarWidth, 0, ScrollBarWidth);
  7952. BackgroundColor3 = ScrollStyles.Button;
  7953. BorderColor3 = ScrollStyles.Border;
  7954. --BorderSizePixel = 0;
  7955. });
  7956. });
  7957. })
  7958.  
  7959. local graphicTemplate = Create('Frame',{
  7960. Name="Graphic";
  7961. BorderSizePixel = 0;
  7962. BackgroundColor3 = ScrollStyles.Border;
  7963. })
  7964. local graphicSize = ScrollBarWidth/2
  7965.  
  7966. local ScrollDownFrame = ScrollFrame.ScrollDown
  7967. local ScrollDownGraphic = ArrowGraphic(graphicSize,horizontal and 'Right' or 'Down',true,graphicTemplate)
  7968. ScrollDownGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  7969. ScrollDownGraphic.Parent = ScrollDownFrame
  7970. local ScrollUpFrame = ScrollFrame.ScrollUp
  7971. local ScrollUpGraphic = ArrowGraphic(graphicSize,horizontal and 'Left' or 'Up',true,graphicTemplate)
  7972. ScrollUpGraphic.Position = UDim2.new(0.5,-graphicSize/2,0.5,-graphicSize/2)
  7973. ScrollUpGraphic.Parent = ScrollUpFrame
  7974. local ScrollBarFrame = ScrollFrame.ScrollBar
  7975. local ScrollThumbFrame = ScrollBarFrame.ScrollThumb
  7976. do
  7977. local size = ScrollBarWidth*3/8
  7978. local Decal = GripGraphic(Vector2.new(size,size),horizontal and 'Vertical' or 'Horizontal',2,graphicTemplate)
  7979. Decal.Position = UDim2.new(0.5,-size/2,0.5,-size/2)
  7980. Decal.Parent = ScrollThumbFrame
  7981. end
  7982.  
  7983. local MouseDrag = Create('ImageButton',{
  7984. Name = "MouseDrag";
  7985. Position = UDim2.new(-0.25,0,-0.25,0);
  7986. Size = UDim2.new(1.5,0,1.5,0);
  7987. Transparency = 1;
  7988. AutoButtonColor = false;
  7989. Active = true;
  7990. ZIndex = 10;
  7991. })
  7992.  
  7993. local Class = setmetatable({
  7994. GUI = ScrollFrame;
  7995. ScrollIndex = 0;
  7996. VisibleSpace = 0;
  7997. TotalSpace = 0;
  7998. PageIncrement = 1;
  7999. },mt)
  8000.  
  8001. local UpdateScrollThumb
  8002. if horizontal then
  8003. function UpdateScrollThumb()
  8004. ScrollThumbFrame.Size = UDim2.new(Class.VisibleSpace/Class.TotalSpace,0,0,ScrollBarWidth)
  8005. if ScrollThumbFrame.AbsoluteSize.x < ScrollBarWidth then
  8006. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,0,ScrollBarWidth)
  8007. end
  8008. local barSize = ScrollBarFrame.AbsoluteSize.x
  8009. ScrollThumbFrame.Position = UDim2.new(Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.x)/barSize,0,0,0)
  8010. end
  8011. else
  8012. function UpdateScrollThumb()
  8013. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,Class.VisibleSpace/Class.TotalSpace,0)
  8014. if ScrollThumbFrame.AbsoluteSize.y < ScrollBarWidth then
  8015. ScrollThumbFrame.Size = UDim2.new(0,ScrollBarWidth,0,ScrollBarWidth)
  8016. end
  8017. local barSize = ScrollBarFrame.AbsoluteSize.y
  8018. ScrollThumbFrame.Position = UDim2.new(0,0,Class:GetScrollPercent()*(barSize - ScrollThumbFrame.AbsoluteSize.y)/barSize,0)
  8019. end
  8020. end
  8021.  
  8022. local lastDown
  8023. local lastUp
  8024. local scrollStyle = {BackgroundColor3=ScrollStyles.Border,BackgroundTransparency=0}
  8025. local scrollStyle_ds = {BackgroundColor3=ScrollStyles.Border,BackgroundTransparency=0.7}
  8026.  
  8027. local function Update()
  8028. local t = Class.TotalSpace
  8029. local v = Class.VisibleSpace
  8030. local s = Class.ScrollIndex
  8031. if v <= t then
  8032. if s > 0 then
  8033. if s + v > t then
  8034. Class.ScrollIndex = t - v
  8035. end
  8036. else
  8037. Class.ScrollIndex = 0
  8038. end
  8039. else
  8040. Class.ScrollIndex = 0
  8041. end
  8042.  
  8043. if Class.UpdateCallback then
  8044. if Class.UpdateCallback(Class) == false then
  8045. return
  8046. end
  8047. end
  8048.  
  8049. local down = Class:CanScrollDown()
  8050. local up = Class:CanScrollUp()
  8051. if down ~= lastDown then
  8052. lastDown = down
  8053. ScrollDownFrame.Active = down
  8054. ScrollDownFrame.AutoButtonColor = down
  8055. local children = ScrollDownGraphic:GetChildren()
  8056. local style = down and scrollStyle or scrollStyle_ds
  8057. for i = 1,#children do
  8058. Create(children[i],style)
  8059. end
  8060. end
  8061. if up ~= lastUp then
  8062. lastUp = up
  8063. ScrollUpFrame.Active = up
  8064. ScrollUpFrame.AutoButtonColor = up
  8065. local children = ScrollUpGraphic:GetChildren()
  8066. local style = up and scrollStyle or scrollStyle_ds
  8067. for i = 1,#children do
  8068. Create(children[i],style)
  8069. end
  8070. end
  8071. ScrollThumbFrame.Visible = down or up
  8072. UpdateScrollThumb()
  8073. end
  8074. Class.Update = Update
  8075.  
  8076. SetZIndexOnChanged(ScrollFrame)
  8077.  
  8078. local scrollEventID = 0
  8079. ScrollDownFrame.MouseButton1Down:connect(function()
  8080. scrollEventID = tick()
  8081. local current = scrollEventID
  8082. local up_con
  8083. up_con = MouseDrag.MouseButton1Up:connect(function()
  8084. scrollEventID = tick()
  8085. MouseDrag.Parent = nil
  8086. ResetButtonColor(ScrollDownFrame)
  8087. up_con:disconnect(); drag = nil
  8088. end)
  8089. MouseDrag.Parent = GetScreen(ScrollFrame)
  8090. Class:ScrollDown()
  8091. wait(0.2) -- delay before auto scroll
  8092. while scrollEventID == current do
  8093. Class:ScrollDown()
  8094. if not Class:CanScrollDown() then break end
  8095. wait()
  8096. end
  8097. end)
  8098.  
  8099. ScrollDownFrame.MouseButton1Up:connect(function()
  8100. scrollEventID = tick()
  8101. end)
  8102.  
  8103. ScrollUpFrame.MouseButton1Down:connect(function()
  8104. scrollEventID = tick()
  8105. local current = scrollEventID
  8106. local up_con
  8107. up_con = MouseDrag.MouseButton1Up:connect(function()
  8108. scrollEventID = tick()
  8109. MouseDrag.Parent = nil
  8110. ResetButtonColor(ScrollUpFrame)
  8111. up_con:disconnect(); drag = nil
  8112. end)
  8113. MouseDrag.Parent = GetScreen(ScrollFrame)
  8114. Class:ScrollUp()
  8115. wait(0.2)
  8116. while scrollEventID == current do
  8117. Class:ScrollUp()
  8118. if not Class:CanScrollUp() then break end
  8119. wait()
  8120. end
  8121. end)
  8122.  
  8123. ScrollUpFrame.MouseButton1Up:connect(function()
  8124. scrollEventID = tick()
  8125. end)
  8126.  
  8127. if horizontal then
  8128. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  8129. scrollEventID = tick()
  8130. local current = scrollEventID
  8131. local up_con
  8132. up_con = MouseDrag.MouseButton1Up:connect(function()
  8133. scrollEventID = tick()
  8134. MouseDrag.Parent = nil
  8135. ResetButtonColor(ScrollUpFrame)
  8136. up_con:disconnect(); drag = nil
  8137. end)
  8138. MouseDrag.Parent = GetScreen(ScrollFrame)
  8139. if x > ScrollThumbFrame.AbsolutePosition.x then
  8140. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  8141. wait(0.2)
  8142. while scrollEventID == current do
  8143. if x < ScrollThumbFrame.AbsolutePosition.x + ScrollThumbFrame.AbsoluteSize.x then break end
  8144. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  8145. wait()
  8146. end
  8147. else
  8148. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  8149. wait(0.2)
  8150. while scrollEventID == current do
  8151. if x > ScrollThumbFrame.AbsolutePosition.x then break end
  8152. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  8153. wait()
  8154. end
  8155. end
  8156. end)
  8157. else
  8158. ScrollBarFrame.MouseButton1Down:connect(function(x,y)
  8159. scrollEventID = tick()
  8160. local current = scrollEventID
  8161. local up_con
  8162. up_con = MouseDrag.MouseButton1Up:connect(function()
  8163. scrollEventID = tick()
  8164. MouseDrag.Parent = nil
  8165. ResetButtonColor(ScrollUpFrame)
  8166. up_con:disconnect(); drag = nil
  8167. end)
  8168. MouseDrag.Parent = GetScreen(ScrollFrame)
  8169. if y > ScrollThumbFrame.AbsolutePosition.y then
  8170. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  8171. wait(0.2)
  8172. while scrollEventID == current do
  8173. if y < ScrollThumbFrame.AbsolutePosition.y + ScrollThumbFrame.AbsoluteSize.y then break end
  8174. Class:ScrollTo(Class.ScrollIndex + Class.VisibleSpace)
  8175. wait()
  8176. end
  8177. else
  8178. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  8179. wait(0.2)
  8180. while scrollEventID == current do
  8181. if y > ScrollThumbFrame.AbsolutePosition.y then break end
  8182. Class:ScrollTo(Class.ScrollIndex - Class.VisibleSpace)
  8183. wait()
  8184. end
  8185. end
  8186. end)
  8187. end
  8188.  
  8189. if horizontal then
  8190. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  8191. scrollEventID = tick()
  8192. local mouse_offset = x - ScrollThumbFrame.AbsolutePosition.x
  8193. local drag_con
  8194. local up_con
  8195. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  8196. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.x
  8197. local bar_drag = ScrollBarFrame.AbsoluteSize.x - ScrollThumbFrame.AbsoluteSize.x
  8198. local bar_abs_one = bar_abs_pos + bar_drag
  8199. x = x - mouse_offset
  8200. x = x < bar_abs_pos and bar_abs_pos or x > bar_abs_one and bar_abs_one or x
  8201. x = x - bar_abs_pos
  8202. Class:SetScrollPercent(x/(bar_drag))
  8203. end)
  8204. up_con = MouseDrag.MouseButton1Up:connect(function()
  8205. scrollEventID = tick()
  8206. MouseDrag.Parent = nil
  8207. ResetButtonColor(ScrollThumbFrame)
  8208. drag_con:disconnect(); drag_con = nil
  8209. up_con:disconnect(); drag = nil
  8210. end)
  8211. MouseDrag.Parent = GetScreen(ScrollFrame)
  8212. end)
  8213. else
  8214. ScrollThumbFrame.MouseButton1Down:connect(function(x,y)
  8215. scrollEventID = tick()
  8216. local mouse_offset = y - ScrollThumbFrame.AbsolutePosition.y
  8217. local drag_con
  8218. local up_con
  8219. drag_con = MouseDrag.MouseMoved:connect(function(x,y)
  8220. local bar_abs_pos = ScrollBarFrame.AbsolutePosition.y
  8221. local bar_drag = ScrollBarFrame.AbsoluteSize.y - ScrollThumbFrame.AbsoluteSize.y
  8222. local bar_abs_one = bar_abs_pos + bar_drag
  8223. y = y - mouse_offset
  8224. y = y < bar_abs_pos and bar_abs_pos or y > bar_abs_one and bar_abs_one or y
  8225. y = y - bar_abs_pos
  8226. Class:SetScrollPercent(y/(bar_drag))
  8227. end)
  8228. up_con = MouseDrag.MouseButton1Up:connect(function()
  8229. scrollEventID = tick()
  8230. MouseDrag.Parent = nil
  8231. ResetButtonColor(ScrollThumbFrame)
  8232. drag_con:disconnect(); drag_con = nil
  8233. up_con:disconnect(); drag = nil
  8234. end)
  8235. MouseDrag.Parent = GetScreen(ScrollFrame)
  8236. end)
  8237. end
  8238.  
  8239. function Class:Destroy()
  8240. ScrollFrame:Destroy()
  8241. MouseDrag:Destroy()
  8242. for k in pairs(Class) do
  8243. Class[k] = nil
  8244. end
  8245. setmetatable(Class,nil)
  8246. end
  8247.  
  8248. Update()
  8249.  
  8250. return Class
  8251. end
  8252. end
  8253.  
  8254. -- End Scrollbar
  8255.  
  8256. local scrollBar = ScrollBar(false)
  8257. scrollBar.PageIncrement = 16
  8258. Create(scrollBar.GUI,{
  8259. Position = UDim2.new(1,0,0,0);
  8260. Size = UDim2.new(0,ScrollBarWidth,1,0);
  8261. Parent = editorGrid;
  8262. })
  8263.  
  8264. local scrollBarH = ScrollBar(true)
  8265. scrollBarH.PageIncrement = 8
  8266. Create(scrollBarH.GUI,{
  8267. Position = UDim2.new(0,0,1,0);
  8268. Size = UDim2.new(1,0,0,ScrollBarWidth);
  8269. Parent = editorGrid;
  8270. })
  8271.  
  8272. local entries = {}
  8273.  
  8274. local grid = {}
  8275.  
  8276. local count = 1
  8277. local xCount = 1
  8278.  
  8279. local lineSpan = 0
  8280.  
  8281. for i = 0,490,8 do
  8282. local newRow = {}
  8283. for j = 0,390,16 do
  8284. local cellText = Instance.new("TextLabel",editorGrid)
  8285. cellText.BackgroundTransparency = 1
  8286. cellText.BorderSizePixel = 0
  8287. cellText.Text = ""
  8288. cellText.Position = UDim2.new(0,i,0,j)
  8289. cellText.Size = UDim2.new(0,8,0,16)
  8290. cellText.Font = Enum.Font.SourceSans
  8291. cellText.FontSize = Enum.FontSize.Size18
  8292. table.insert(newRow,cellText)
  8293. xCount = xCount + 1
  8294. end
  8295. table.insert(grid,newRow)
  8296. count = count + 1
  8297. xCount = 1
  8298. end
  8299.  
  8300. local syntaxHighlightList = {
  8301. {["Keyword"] = "for", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8302. {["Keyword"] = "local", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8303. {["Keyword"] = "if", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8304. {["Keyword"] = "then", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8305. {["Keyword"] = "do", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8306. {["Keyword"] = "while", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8307. {["Keyword"] = "end", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8308. {["Keyword"] = "function", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8309. {["Keyword"] = "string", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8310. {["Keyword"] = "table", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8311. {["Keyword"] = "game", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8312. {["Keyword"] = "workspace", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8313. {["Keyword"] = "return", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8314. {["Keyword"] = "break", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8315. {["Keyword"] = "elseif", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8316. {["Keyword"] = "in", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8317. {["Keyword"] = "pairs", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true},
  8318. {["Keyword"] = "ipairs", ["Color"] = Color3.new(0, 0, 127/255), ["Independent"] = true}
  8319. }
  8320.  
  8321. function checkMouseInGui(gui)
  8322. if gui == nil then return false end
  8323. local plrMouse = game:GetService("Players").LocalPlayer:GetMouse()
  8324. local guiPosition = gui.AbsolutePosition
  8325. local guiSize = gui.AbsoluteSize
  8326.  
  8327. if plrMouse.X >= guiPosition.x and plrMouse.X <= guiPosition.x + guiSize.x and plrMouse.Y >= guiPosition.y and plrMouse.Y <= guiPosition.y + guiSize.y then
  8328. return true
  8329. else
  8330. return false
  8331. end
  8332. end
  8333.  
  8334. function AddZeros(num,reach)
  8335. local toConvert = tostring(num)
  8336. while #toConvert < reach do
  8337. toConvert = " "..toConvert
  8338. end
  8339. return toConvert
  8340. end
  8341.  
  8342. function buildScript(source,xOff,yOff,override)
  8343. local buildingRows = true
  8344. local buildScr = source
  8345.  
  8346. local totalLines = 0
  8347.  
  8348. --print(xOff,yOff)
  8349.  
  8350. if currentSource ~= source then
  8351. currentSource = source
  8352. end
  8353.  
  8354. if override then
  8355. currentSource = source
  8356. entries = {}
  8357. while buildingRows do
  8358. local x,y = string.find(buildScr,"\n")
  8359. if x and y then
  8360. table.insert(entries,string.sub(buildScr,1,y))
  8361. buildScr = string.sub(buildScr,y+1,string.len(buildScr))
  8362. else
  8363. buildingRows = false
  8364. table.insert(entries,buildScr)
  8365. end
  8366. end
  8367. end
  8368.  
  8369. totalLines = #entries
  8370. lineSpan = #tostring(totalLines)
  8371.  
  8372. if lineSpan == 1 then lineSpan = 2 end
  8373.  
  8374. local currentRow = 1
  8375. local currentColumn = 2 + lineSpan
  8376.  
  8377. local colorTime = 0
  8378. local colorReplace = nil
  8379.  
  8380. local inString = false
  8381.  
  8382. local workingEntries = entries
  8383.  
  8384. --[[
  8385. for i,v in pairs(entries) do
  8386. table.insert(workingEntries,v)
  8387. end
  8388.  
  8389. for i = 1,yOff do
  8390. table.remove(workingEntries,1)
  8391. end
  8392. --]]
  8393.  
  8394. local delayance = xOff
  8395.  
  8396. for i = 1,#grid do
  8397. for j = 1,#grid[i] do
  8398. if i <= lineSpan then
  8399. local newNum = AddZeros(yOff + j,lineSpan)
  8400. local newDigit = string.sub(newNum,i,i)
  8401. if newDigit == " " then
  8402. grid[i][j].Text = ""
  8403. else
  8404. grid[i][j].Text = newDigit
  8405. end
  8406. grid[i][j].BackgroundTransparency = 0
  8407. grid[i][j].BackgroundColor3 = Color3.new(163/255, 162/255, 165/255)
  8408. --grid[i][j].Font = Enum.Font.SourceSansBold
  8409. elseif i == lineSpan + 1 then
  8410. grid[i][j].Text = ""
  8411. grid[i][j].BackgroundTransparency = 0
  8412. grid[i][j].BackgroundColor3 = Color3.new(200/255, 200/255, 200/255)
  8413. --grid[i][j].Font = Enum.Font.SourceSans
  8414. else
  8415. grid[i][j].Text = ""
  8416. grid[i][j].BackgroundTransparency = 1
  8417. --grid[i][j].Font = Enum.Font.SourceSans
  8418. end
  8419. end
  8420. end
  8421.  
  8422. while true do
  8423. if currentRow > #workingEntries or currentRow > #grid[1] then break end
  8424. local entry = workingEntries[currentRow+yOff]
  8425. while string.len(entry) > 0 do
  8426. if string.sub(entry,1,1) == "\t" then entry = " "..string.sub(entry,2) end
  8427.  
  8428. if currentColumn > #grid then break end
  8429.  
  8430. if delayance == 0 then
  8431. grid[currentColumn][currentRow].Text = string.sub(entry,1,1)
  8432. end
  8433.  
  8434. -- Coloring
  8435.  
  8436. if not inString then
  8437. for i,v in pairs(syntaxHighlightList) do
  8438. if string.sub(entry,1,string.len(v["Keyword"])) == v["Keyword"] then
  8439. if v["Independent"] then
  8440. local outCheck = string.len(v["Keyword"])+1
  8441. local outEntry = string.sub(entry,outCheck,outCheck)
  8442. if not string.find(outEntry,"%w") then
  8443. colorTime = string.len(v["Keyword"])
  8444. colorReplace = v["Color"]
  8445. end
  8446. else
  8447. colorTime = string.len(v["Keyword"])
  8448. colorReplace = v["Color"]
  8449. end
  8450. end
  8451. end
  8452. end
  8453.  
  8454. if string.sub(entry,1,1) == "\"" and string.match(entry,"\".+\"") then
  8455. inString = true
  8456. colorTime = string.len(string.match(entry,"\".+\""))
  8457. colorReplace = Color3.new(170/255, 0, 1)
  8458. end
  8459.  
  8460. if colorTime > 0 then
  8461. colorTime = colorTime - 1
  8462. grid[currentColumn][currentRow].TextColor3 = colorReplace
  8463. if colorTime == 0 then inString = false end
  8464. else
  8465. grid[currentColumn][currentRow].TextColor3 = Color3.new(0,0,0)
  8466. inString = false
  8467. end
  8468.  
  8469. if delayance == 0 then
  8470. currentColumn = currentColumn + 1
  8471. else
  8472. delayance = delayance - 1
  8473. end
  8474. entry = string.sub(entry,2,string.len(entry))
  8475. end
  8476. currentRow = currentRow + 1
  8477. currentColumn = 2 + lineSpan
  8478. colorTime = 0
  8479. delayance = xOff
  8480. inString = false
  8481. end
  8482. end
  8483.  
  8484. function scrollBar.UpdateCallback(self)
  8485. scrollBar.TotalSpace = #entries * 16
  8486. scrollBar.VisibleSpace = editorGrid.AbsoluteSize.Y
  8487. buildScript(currentSource,math.floor(scrollBarH.ScrollIndex/8),math.floor(scrollBar.ScrollIndex/16))
  8488. end
  8489.  
  8490. function scrollBarH.UpdateCallback(self)
  8491. scrollBarH.TotalSpace = (getLongestEntry(entries) + 1 + lineSpan) * 8
  8492. scrollBarH.VisibleSpace = editorGrid.AbsoluteSize.X
  8493. buildScript(currentSource,math.floor(scrollBarH.ScrollIndex/8),math.floor(scrollBar.ScrollIndex/16))
  8494. end
  8495.  
  8496. function getLongestEntry(tab)
  8497. local longest = 0
  8498. for i,v in pairs(tab) do
  8499. if string.len(v) > longest then
  8500. longest = string.len(v)
  8501. end
  8502. end
  8503. return longest
  8504. end
  8505.  
  8506. function decompileS(obj)
  8507. local src = "print(\"Hello world!\")"
  8508. pcall(function()
  8509. if obj.Source ~= "" then
  8510. src = obj.Source
  8511. else
  8512. src = decompile(obj)
  8513. end
  8514. end)
  8515. return src
  8516. end
  8517.  
  8518. function openScript(scrObj)
  8519. if scrObj:IsA("LocalScript") then
  8520. scrObj.Archivable = true
  8521. scrObj = scrObj:Clone()
  8522. scrObj.Disabled = true
  8523. end
  8524.  
  8525. local scrName = scrObj.Name
  8526. local scrSource = decompileS(scrObj)
  8527.  
  8528. table.insert(memoryScripts,{Name = scrName,Source = scrSource})
  8529.  
  8530. local newTab = entryTemplate:Clone()
  8531. newTab.Button.Text = scrName
  8532. newTab.Position = UDim2.new(0,#scriptBar:GetChildren() * 100,0,0)
  8533. newTab.Visible = true
  8534.  
  8535. newTab.Button.MouseButton1Down:connect(function()
  8536. for i,v in pairs(scriptBar:GetChildren()) do
  8537. if v == newTab then
  8538. editingIndex = i
  8539. buildScript(memoryScripts[i].Source,0,0,true)
  8540. scrollBar:ScrollTo(1)
  8541. scrollBar:Update()
  8542. scrollBarH:ScrollTo(1)
  8543. scrollBarH:Update()
  8544. end
  8545. end
  8546. end)
  8547.  
  8548. newTab.Close.MouseButton1Click:connect(function()
  8549. for i,v in pairs(scriptBar:GetChildren()) do
  8550. if v == newTab then
  8551. table.remove(memoryScripts,i)
  8552. if editingIndex == i then
  8553. editingIndex = #memoryScripts
  8554. if editingIndex > 0 then
  8555. buildScript(memoryScripts[#memoryScripts].Source,0,0,true)
  8556. else
  8557. buildScript("",0,0,true)
  8558. end
  8559. end
  8560.  
  8561. scrollBar:ScrollTo(1)
  8562. scrollBar:Update()
  8563. scrollBarH:ScrollTo(1)
  8564. scrollBarH:Update()
  8565.  
  8566. for i2 = i,#scriptBar:GetChildren() do
  8567. scriptBar:GetChildren()[i2].Position = scriptBar:GetChildren()[i2].Position + UDim2.new(0,-100,0,0)
  8568. end
  8569. if editingIndex > i then
  8570. editingIndex = editingIndex - 1
  8571. end
  8572. newTab:Destroy()
  8573. end
  8574. end
  8575. end)
  8576.  
  8577. editingIndex = #memoryScripts
  8578. buildScript(scrSource,0,0,true)
  8579.  
  8580. newTab.Parent = scriptBar
  8581. end
  8582.  
  8583. function updateScriptBar()
  8584. local entryCount = 0
  8585.  
  8586. scriptBarLeft.Active = false
  8587. scriptBarLeft.AutoButtonColor = false
  8588. for i,v in pairs(scriptBarLeft["Arrow Graphic"]:GetChildren()) do
  8589. v.BackgroundTransparency = 0.7
  8590. end
  8591. scriptBarRight.Active = false
  8592. scriptBarRight.AutoButtonColor = false
  8593. for i,v in pairs(scriptBarRight["Arrow Graphic"]:GetChildren()) do
  8594. v.BackgroundTransparency = 0.7
  8595. end
  8596. for i,v in pairs(scriptBar:GetChildren()) do
  8597. if v.Position.X.Offset < 0 then
  8598. scriptBarLeft.Active = true
  8599. scriptBarLeft.AutoButtonColor = true
  8600. for i,v in pairs(scriptBarLeft["Arrow Graphic"]:GetChildren()) do
  8601. v.BackgroundTransparency = 0
  8602. end
  8603. elseif v.Position.X.Offset >= 0 then
  8604. entryCount = entryCount + 1
  8605. if entryCount == 5 then
  8606. scriptBarRight.Active = true
  8607. scriptBarRight.AutoButtonColor = true
  8608. for i,v in pairs(scriptBarRight["Arrow Graphic"]:GetChildren()) do
  8609. v.BackgroundTransparency = 0
  8610. end
  8611. end
  8612. end
  8613. end
  8614. end
  8615.  
  8616. scriptBar.ChildAdded:connect(updateScriptBar)
  8617. scriptBar.ChildRemoved:connect(updateScriptBar)
  8618.  
  8619. scriptBarLeft.MouseButton1Click:connect(function()
  8620. if scriptBarLeft.Active == false then return end
  8621. for i,v in pairs(scriptBar:GetChildren()) do
  8622. v.Position = v.Position + UDim2.new(0,100,0,0)
  8623. end
  8624. updateScriptBar()
  8625. end)
  8626.  
  8627. scriptBarRight.MouseButton1Click:connect(function()
  8628. if scriptBarRight.Active == false then return end
  8629. for i,v in pairs(scriptBar:GetChildren()) do
  8630. v.Position = v.Position + UDim2.new(0,-100,0,0)
  8631. end
  8632. updateScriptBar()
  8633. end)
  8634.  
  8635. mouse.Button1Down:connect(function()
  8636. if checkMouseInGui(editorGrid) then
  8637. --print("LETS EDIT!")
  8638. end
  8639. end)
  8640.  
  8641. openEvent.Event:connect(function(...)
  8642. top.Visible = true
  8643. local args = {...}
  8644. if #args > 0 then
  8645. openScript(args[1])
  8646. end
  8647. end)
  8648.  
  8649. clipboardButton.MouseButton1Click:connect(function()
  8650. if Clipboard and Clipboard.set then
  8651. Clipboard.set(currentSource)
  8652. elseif CopyString then
  8653. CopyString(currentSource)
  8654. end
  8655. end)
  8656.  
  8657. closeButton.MouseButton1Click:connect(function()
  8658. top.Visible = false
  8659. end)
  8660.  
  8661. --[[
  8662. local scr = script.Parent:WaitForChild("Scr")
  8663. local scr2 = script.Parent:WaitForChild("Scr2")
  8664. local scr3 = script.Parent:WaitForChild("Scr3")
  8665. local scr4 = script.Parent:WaitForChild("TOS")
  8666. local scr5 = script.Parent:WaitForChild("HW")
  8667. --]]
  8668.  
  8669. buildScript("",0,0,true)
  8670. --[[
  8671. openScript(scr)
  8672. openScript(scr2)
  8673. openScript(scr3)
  8674. openScript(scr4)
  8675. openScript(scr5)
  8676. --]]
  8677.  
  8678. scrollBar:Update()
  8679. scrollBarH:Update()
  8680. end))
  8681. TextButton116.Name = "Close"
  8682. TextButton116.Parent = Frame92
  8683. TextButton116.Position = UDim2.new(1, -20, 0, 0)
  8684. TextButton116.Transparency = 1
  8685. TextButton116.Size = UDim2.new(0, 20, 0, 20)
  8686. TextButton116.BackgroundColor = BrickColor.new("Institutional white")
  8687. TextButton116.BackgroundColor3 = Color3.new(1, 1, 1)
  8688. TextButton116.BackgroundTransparency = 1
  8689. TextButton116.BorderColor = BrickColor.new("Really black")
  8690. TextButton116.BorderColor3 = Color3.new(0, 0, 0)
  8691. TextButton116.ZIndex = 5
  8692. TextButton116.Font = Enum.Font.SourceSans
  8693. TextButton116.FontSize = Enum.FontSize.Size14
  8694. TextButton116.Text = "X"
  8695. TextButton116.TextSize = 14
  8696. Frame117.Name = "IntroFrame"
  8697. Frame117.Parent = ScreenGui0
  8698. Frame117.Position = UDim2.new(1, 30, 0, 0)
  8699. Frame117.Size = UDim2.new(0, 301, 1, 0)
  8700. Frame117.BackgroundColor = BrickColor.new("White")
  8701. Frame117.BackgroundColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  8702. Frame117.BorderSizePixel = 0
  8703. Frame117.ZIndex = 2
  8704. Frame118.Name = "Main"
  8705. Frame118.Parent = Frame117
  8706. Frame118.Position = UDim2.new(0, -30, 0, 0)
  8707. Frame118.Size = UDim2.new(0, 30, 0, 90)
  8708. Frame118.BackgroundColor = BrickColor.new("White")
  8709. Frame118.BackgroundColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  8710. Frame118.BorderSizePixel = 0
  8711. Frame118.ZIndex = 2
  8712. ImageLabel119.Name = "Slant"
  8713. ImageLabel119.Parent = Frame117
  8714. ImageLabel119.Position = UDim2.new(0, -30, 0, 90)
  8715. ImageLabel119.Rotation = 180
  8716. ImageLabel119.Transparency = 1
  8717. ImageLabel119.Size = UDim2.new(0, 30, 0, 30)
  8718. ImageLabel119.BackgroundColor = BrickColor.new("Institutional white")
  8719. ImageLabel119.BackgroundColor3 = Color3.new(1, 1, 1)
  8720. ImageLabel119.BackgroundTransparency = 1
  8721. ImageLabel119.ZIndex = 2
  8722. ImageLabel119.Image = "rbxassetid://1513966937"
  8723. ImageLabel119.ImageColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  8724. Frame120.Name = "Main"
  8725. Frame120.Parent = Frame117
  8726. Frame120.Position = UDim2.new(0, -30, 0, 0)
  8727. Frame120.Size = UDim2.new(0, 30, 0, 90)
  8728. Frame120.BackgroundColor = BrickColor.new("White")
  8729. Frame120.BackgroundColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  8730. Frame120.BorderSizePixel = 0
  8731. Frame120.ZIndex = 2
  8732. ImageLabel121.Name = "Sad"
  8733. ImageLabel121.Parent = Frame117
  8734. ImageLabel121.Position = UDim2.new(0, 50, 1, -250)
  8735. ImageLabel121.Transparency = 1
  8736. ImageLabel121.Size = UDim2.new(0, 200, 0, 200)
  8737. ImageLabel121.BackgroundColor = BrickColor.new("Institutional white")
  8738. ImageLabel121.BackgroundColor3 = Color3.new(1, 1, 1)
  8739. ImageLabel121.BackgroundTransparency = 1
  8740. ImageLabel121.ZIndex = 2
  8741. ImageLabel121.Image = "rbxassetid://483437370"
  8742. ImageLabel121.ImageColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  8743. TextLabel122.Name = "Creator"
  8744. TextLabel122.Parent = Frame117
  8745. TextLabel122.Position = UDim2.new(0, 80, 0, 300)
  8746. TextLabel122.Transparency = 1
  8747. TextLabel122.Size = UDim2.new(0, 140, 0, 30)
  8748. TextLabel122.BackgroundColor = BrickColor.new("Institutional white")
  8749. TextLabel122.BackgroundColor3 = Color3.new(1, 1, 1)
  8750. TextLabel122.BackgroundTransparency = 1
  8751. TextLabel122.ZIndex = 2
  8752. TextLabel122.Font = Enum.Font.SourceSansBold
  8753. TextLabel122.FontSize = Enum.FontSize.Size28
  8754. TextLabel122.Text = "By Moon"
  8755. TextLabel122.TextSize = 28
  8756. TextLabel122.TextWrap = true
  8757. TextLabel122.TextWrapped = true
  8758. TextLabel123.Name = "Title"
  8759. TextLabel123.Parent = Frame117
  8760. TextLabel123.Position = UDim2.new(0, 100, 0, 150)
  8761. TextLabel123.Transparency = 1
  8762. TextLabel123.Size = UDim2.new(0, 100, 0, 60)
  8763. TextLabel123.BackgroundColor = BrickColor.new("Institutional white")
  8764. TextLabel123.BackgroundColor3 = Color3.new(1, 1, 1)
  8765. TextLabel123.BackgroundTransparency = 1
  8766. TextLabel123.ZIndex = 2
  8767. TextLabel123.Font = Enum.Font.SourceSansBold
  8768. TextLabel123.FontSize = Enum.FontSize.Size60
  8769. TextLabel123.Text = "DEX"
  8770. TextLabel123.TextSize = 60
  8771. TextLabel123.TextWrap = true
  8772. TextLabel123.TextWrapped = true
  8773. TextLabel124.Name = "Version"
  8774. TextLabel124.Parent = Frame117
  8775. TextLabel124.Position = UDim2.new(0, 100, 0, 210)
  8776. TextLabel124.Transparency = 1
  8777. TextLabel124.Size = UDim2.new(0, 100, 0, 30)
  8778. TextLabel124.BackgroundColor = BrickColor.new("Institutional white")
  8779. TextLabel124.BackgroundColor3 = Color3.new(1, 1, 1)
  8780. TextLabel124.BackgroundTransparency = 1
  8781. TextLabel124.ZIndex = 2
  8782. TextLabel124.Font = Enum.Font.SourceSansBold
  8783. TextLabel124.FontSize = Enum.FontSize.Size28
  8784. TextLabel124.Text = "v3"
  8785. TextLabel124.TextSize = 28
  8786. TextLabel124.TextWrap = true
  8787. TextLabel124.TextWrapped = true
  8788. Frame125.Name = "SaveMapWindow"
  8789. Frame125.Parent = ScreenGui0
  8790. Frame125.Position = UDim2.new(1, 0, 0, 0)
  8791. Frame125.Transparency = 0.10000000149012
  8792. Frame125.Size = UDim2.new(0, 300, 1, 0)
  8793. Frame125.BackgroundColor = BrickColor.new("Institutional white")
  8794. Frame125.BackgroundColor3 = Color3.new(1, 1, 1)
  8795. Frame125.BackgroundTransparency = 0.10000000149012
  8796. Frame125.BorderColor = BrickColor.new("Light grey")
  8797. Frame125.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  8798. Frame125.BorderSizePixel = 0
  8799. Frame126.Name = "Header"
  8800. Frame126.Parent = Frame125
  8801. Frame126.Size = UDim2.new(1, 0, 0, 17)
  8802. Frame126.BackgroundColor = BrickColor.new("Lily white")
  8803. Frame126.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  8804. Frame126.BorderColor = BrickColor.new("Sand violet metallic")
  8805. Frame126.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  8806. Frame126.BorderSizePixel = 0
  8807. TextLabel127.Parent = Frame126
  8808. TextLabel127.Position = UDim2.new(0, 4, 0, 0)
  8809. TextLabel127.Transparency = 1
  8810. TextLabel127.Size = UDim2.new(1, -4, 1, 0)
  8811. TextLabel127.BackgroundTransparency = 1
  8812. TextLabel127.BorderSizePixel = 0
  8813. TextLabel127.Font = Enum.Font.SourceSans
  8814. TextLabel127.FontSize = Enum.FontSize.Size14
  8815. TextLabel127.Text = "Map Downloader"
  8816. TextLabel127.TextColor = BrickColor.new("Really black")
  8817. TextLabel127.TextColor3 = Color3.new(0, 0, 0)
  8818. TextLabel127.TextSize = 14
  8819. TextLabel127.TextXAlignment = Enum.TextXAlignment.Left
  8820. Frame128.Name = "MapSettings"
  8821. Frame128.Parent = Frame125
  8822. Frame128.Position = UDim2.new(0, 0, 0, 200)
  8823. Frame128.Transparency = 1
  8824. Frame128.Size = UDim2.new(1, 0, 0, 240)
  8825. Frame128.BackgroundColor = BrickColor.new("Institutional white")
  8826. Frame128.BackgroundColor3 = Color3.new(1, 1, 1)
  8827. Frame128.BackgroundTransparency = 1
  8828. Frame129.Name = "Terrain"
  8829. Frame129.Parent = Frame128
  8830. Frame129.Position = UDim2.new(0, 0, 0, 60)
  8831. Frame129.Transparency = 1
  8832. Frame129.Size = UDim2.new(1, 0, 0, 60)
  8833. Frame129.BackgroundColor = BrickColor.new("Institutional white")
  8834. Frame129.BackgroundColor3 = Color3.new(1, 1, 1)
  8835. Frame129.BackgroundTransparency = 1
  8836. TextLabel130.Name = "SName"
  8837. TextLabel130.Parent = Frame129
  8838. TextLabel130.Position = UDim2.new(0, 10, 0, 0)
  8839. TextLabel130.Transparency = 1
  8840. TextLabel130.Size = UDim2.new(1, -20, 0, 30)
  8841. TextLabel130.BackgroundColor = BrickColor.new("Institutional white")
  8842. TextLabel130.BackgroundColor3 = Color3.new(1, 1, 1)
  8843. TextLabel130.BackgroundTransparency = 1
  8844. TextLabel130.Font = Enum.Font.SourceSans
  8845. TextLabel130.FontSize = Enum.FontSize.Size18
  8846. TextLabel130.Text = "Save Terrain"
  8847. TextLabel130.TextSize = 18
  8848. TextLabel130.TextXAlignment = Enum.TextXAlignment.Left
  8849. TextLabel131.Name = "Status"
  8850. TextLabel131.Parent = Frame129
  8851. TextLabel131.Position = UDim2.new(0, 60, 0, 30)
  8852. TextLabel131.Transparency = 1
  8853. TextLabel131.Size = UDim2.new(0, 50, 0, 15)
  8854. TextLabel131.BackgroundColor = BrickColor.new("Institutional white")
  8855. TextLabel131.BackgroundColor3 = Color3.new(1, 1, 1)
  8856. TextLabel131.BackgroundTransparency = 1
  8857. TextLabel131.Font = Enum.Font.SourceSans
  8858. TextLabel131.FontSize = Enum.FontSize.Size18
  8859. TextLabel131.Text = "Off"
  8860. TextLabel131.TextSize = 18
  8861. TextLabel131.TextXAlignment = Enum.TextXAlignment.Left
  8862. TextButton132.Name = "Change"
  8863. TextButton132.Parent = Frame129
  8864. TextButton132.Position = UDim2.new(0, 10, 0, 30)
  8865. TextButton132.Size = UDim2.new(0, 40, 0, 15)
  8866. TextButton132.BackgroundColor = BrickColor.new("Quill grey")
  8867. TextButton132.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  8868. TextButton132.BorderSizePixel = 0
  8869. TextButton132.Font = Enum.Font.SourceSans
  8870. TextButton132.FontSize = Enum.FontSize.Size14
  8871. TextButton132.Text = ""
  8872. TextButton132.TextSize = 14
  8873. TextLabel133.Name = "OnBar"
  8874. TextLabel133.Parent = TextButton132
  8875. TextLabel133.Size = UDim2.new(0, 0, 0, 15)
  8876. TextLabel133.BackgroundColor = BrickColor.new("Electric blue")
  8877. TextLabel133.BackgroundColor3 = Color3.new(0, 0.576471, 0.862745)
  8878. TextLabel133.BorderSizePixel = 0
  8879. TextLabel133.Font = Enum.Font.SourceSans
  8880. TextLabel133.FontSize = Enum.FontSize.Size14
  8881. TextLabel133.Text = ""
  8882. TextLabel133.TextSize = 14
  8883. TextLabel134.Name = "Bar"
  8884. TextLabel134.Parent = TextButton132
  8885. TextLabel134.Position = UDim2.new(0, -2, 0, -2)
  8886. TextLabel134.Size = UDim2.new(0, 10, 0, 19)
  8887. TextLabel134.BackgroundColor = BrickColor.new("Really black")
  8888. TextLabel134.BackgroundColor3 = Color3.new(0, 0, 0)
  8889. TextLabel134.BorderSizePixel = 0
  8890. TextLabel134.ClipsDescendants = true
  8891. TextLabel134.Font = Enum.Font.SourceSans
  8892. TextLabel134.FontSize = Enum.FontSize.Size14
  8893. TextLabel134.Text = ""
  8894. TextLabel134.TextSize = 14
  8895. Frame135.Name = "Lighting"
  8896. Frame135.Parent = Frame128
  8897. Frame135.Position = UDim2.new(0, 0, 0, 120)
  8898. Frame135.Transparency = 1
  8899. Frame135.Size = UDim2.new(1, 0, 0, 60)
  8900. Frame135.BackgroundColor = BrickColor.new("Institutional white")
  8901. Frame135.BackgroundColor3 = Color3.new(1, 1, 1)
  8902. Frame135.BackgroundTransparency = 1
  8903. TextLabel136.Name = "SName"
  8904. TextLabel136.Parent = Frame135
  8905. TextLabel136.Position = UDim2.new(0, 10, 0, 0)
  8906. TextLabel136.Transparency = 1
  8907. TextLabel136.Size = UDim2.new(1, -20, 0, 30)
  8908. TextLabel136.BackgroundColor = BrickColor.new("Institutional white")
  8909. TextLabel136.BackgroundColor3 = Color3.new(1, 1, 1)
  8910. TextLabel136.BackgroundTransparency = 1
  8911. TextLabel136.Font = Enum.Font.SourceSans
  8912. TextLabel136.FontSize = Enum.FontSize.Size18
  8913. TextLabel136.Text = "Lighting Properties"
  8914. TextLabel136.TextSize = 18
  8915. TextLabel136.TextXAlignment = Enum.TextXAlignment.Left
  8916. TextLabel137.Name = "Status"
  8917. TextLabel137.Parent = Frame135
  8918. TextLabel137.Position = UDim2.new(0, 60, 0, 30)
  8919. TextLabel137.Transparency = 1
  8920. TextLabel137.Size = UDim2.new(0, 50, 0, 15)
  8921. TextLabel137.BackgroundColor = BrickColor.new("Institutional white")
  8922. TextLabel137.BackgroundColor3 = Color3.new(1, 1, 1)
  8923. TextLabel137.BackgroundTransparency = 1
  8924. TextLabel137.Font = Enum.Font.SourceSans
  8925. TextLabel137.FontSize = Enum.FontSize.Size18
  8926. TextLabel137.Text = "Off"
  8927. TextLabel137.TextSize = 18
  8928. TextLabel137.TextXAlignment = Enum.TextXAlignment.Left
  8929. TextButton138.Name = "Change"
  8930. TextButton138.Parent = Frame135
  8931. TextButton138.Position = UDim2.new(0, 10, 0, 30)
  8932. TextButton138.Size = UDim2.new(0, 40, 0, 15)
  8933. TextButton138.BackgroundColor = BrickColor.new("Quill grey")
  8934. TextButton138.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  8935. TextButton138.BorderSizePixel = 0
  8936. TextButton138.Font = Enum.Font.SourceSans
  8937. TextButton138.FontSize = Enum.FontSize.Size14
  8938. TextButton138.Text = ""
  8939. TextButton138.TextSize = 14
  8940. TextLabel139.Name = "OnBar"
  8941. TextLabel139.Parent = TextButton138
  8942. TextLabel139.Size = UDim2.new(0, 0, 0, 15)
  8943. TextLabel139.BackgroundColor = BrickColor.new("Electric blue")
  8944. TextLabel139.BackgroundColor3 = Color3.new(0, 0.576471, 0.862745)
  8945. TextLabel139.BorderSizePixel = 0
  8946. TextLabel139.Font = Enum.Font.SourceSans
  8947. TextLabel139.FontSize = Enum.FontSize.Size14
  8948. TextLabel139.Text = ""
  8949. TextLabel139.TextSize = 14
  8950. TextLabel140.Name = "Bar"
  8951. TextLabel140.Parent = TextButton138
  8952. TextLabel140.Position = UDim2.new(0, -2, 0, -2)
  8953. TextLabel140.Size = UDim2.new(0, 10, 0, 19)
  8954. TextLabel140.BackgroundColor = BrickColor.new("Really black")
  8955. TextLabel140.BackgroundColor3 = Color3.new(0, 0, 0)
  8956. TextLabel140.BorderSizePixel = 0
  8957. TextLabel140.ClipsDescendants = true
  8958. TextLabel140.Font = Enum.Font.SourceSans
  8959. TextLabel140.FontSize = Enum.FontSize.Size14
  8960. TextLabel140.Text = ""
  8961. TextLabel140.TextSize = 14
  8962. Frame141.Name = "CameraInstances"
  8963. Frame141.Parent = Frame128
  8964. Frame141.Position = UDim2.new(0, 0, 0, 180)
  8965. Frame141.Transparency = 1
  8966. Frame141.Size = UDim2.new(1, 0, 0, 60)
  8967. Frame141.BackgroundColor = BrickColor.new("Institutional white")
  8968. Frame141.BackgroundColor3 = Color3.new(1, 1, 1)
  8969. Frame141.BackgroundTransparency = 1
  8970. TextLabel142.Name = "SName"
  8971. TextLabel142.Parent = Frame141
  8972. TextLabel142.Position = UDim2.new(0, 10, 0, 0)
  8973. TextLabel142.Transparency = 1
  8974. TextLabel142.Size = UDim2.new(1, -20, 0, 30)
  8975. TextLabel142.BackgroundColor = BrickColor.new("Institutional white")
  8976. TextLabel142.BackgroundColor3 = Color3.new(1, 1, 1)
  8977. TextLabel142.BackgroundTransparency = 1
  8978. TextLabel142.Font = Enum.Font.SourceSans
  8979. TextLabel142.FontSize = Enum.FontSize.Size18
  8980. TextLabel142.Text = "Camera Instances"
  8981. TextLabel142.TextSize = 18
  8982. TextLabel142.TextXAlignment = Enum.TextXAlignment.Left
  8983. TextLabel143.Name = "Status"
  8984. TextLabel143.Parent = Frame141
  8985. TextLabel143.Position = UDim2.new(0, 60, 0, 30)
  8986. TextLabel143.Transparency = 1
  8987. TextLabel143.Size = UDim2.new(0, 50, 0, 15)
  8988. TextLabel143.BackgroundColor = BrickColor.new("Institutional white")
  8989. TextLabel143.BackgroundColor3 = Color3.new(1, 1, 1)
  8990. TextLabel143.BackgroundTransparency = 1
  8991. TextLabel143.Font = Enum.Font.SourceSans
  8992. TextLabel143.FontSize = Enum.FontSize.Size18
  8993. TextLabel143.Text = "Off"
  8994. TextLabel143.TextSize = 18
  8995. TextLabel143.TextXAlignment = Enum.TextXAlignment.Left
  8996. TextButton144.Name = "Change"
  8997. TextButton144.Parent = Frame141
  8998. TextButton144.Position = UDim2.new(0, 10, 0, 30)
  8999. TextButton144.Size = UDim2.new(0, 40, 0, 15)
  9000. TextButton144.BackgroundColor = BrickColor.new("Quill grey")
  9001. TextButton144.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  9002. TextButton144.BorderSizePixel = 0
  9003. TextButton144.Font = Enum.Font.SourceSans
  9004. TextButton144.FontSize = Enum.FontSize.Size14
  9005. TextButton144.Text = ""
  9006. TextButton144.TextSize = 14
  9007. TextLabel145.Name = "OnBar"
  9008. TextLabel145.Parent = TextButton144
  9009. TextLabel145.Size = UDim2.new(0, 0, 0, 15)
  9010. TextLabel145.BackgroundColor = BrickColor.new("Electric blue")
  9011. TextLabel145.BackgroundColor3 = Color3.new(0, 0.576471, 0.862745)
  9012. TextLabel145.BorderSizePixel = 0
  9013. TextLabel145.Font = Enum.Font.SourceSans
  9014. TextLabel145.FontSize = Enum.FontSize.Size14
  9015. TextLabel145.Text = ""
  9016. TextLabel145.TextSize = 14
  9017. TextLabel146.Name = "Bar"
  9018. TextLabel146.Parent = TextButton144
  9019. TextLabel146.Position = UDim2.new(0, -2, 0, -2)
  9020. TextLabel146.Size = UDim2.new(0, 10, 0, 19)
  9021. TextLabel146.BackgroundColor = BrickColor.new("Really black")
  9022. TextLabel146.BackgroundColor3 = Color3.new(0, 0, 0)
  9023. TextLabel146.BorderSizePixel = 0
  9024. TextLabel146.ClipsDescendants = true
  9025. TextLabel146.Font = Enum.Font.SourceSans
  9026. TextLabel146.FontSize = Enum.FontSize.Size14
  9027. TextLabel146.Text = ""
  9028. TextLabel146.TextSize = 14
  9029. Frame147.Name = "Scripts"
  9030. Frame147.Parent = Frame128
  9031. Frame147.Transparency = 1
  9032. Frame147.Size = UDim2.new(1, 0, 0, 60)
  9033. Frame147.BackgroundColor = BrickColor.new("Institutional white")
  9034. Frame147.BackgroundColor3 = Color3.new(1, 1, 1)
  9035. Frame147.BackgroundTransparency = 1
  9036. TextLabel148.Name = "SName"
  9037. TextLabel148.Parent = Frame147
  9038. TextLabel148.Position = UDim2.new(0, 10, 0, 0)
  9039. TextLabel148.Transparency = 1
  9040. TextLabel148.Size = UDim2.new(1, -20, 0, 30)
  9041. TextLabel148.BackgroundColor = BrickColor.new("Institutional white")
  9042. TextLabel148.BackgroundColor3 = Color3.new(1, 1, 1)
  9043. TextLabel148.BackgroundTransparency = 1
  9044. TextLabel148.Font = Enum.Font.SourceSans
  9045. TextLabel148.FontSize = Enum.FontSize.Size18
  9046. TextLabel148.Text = "Save Scripts"
  9047. TextLabel148.TextSize = 18
  9048. TextLabel148.TextXAlignment = Enum.TextXAlignment.Left
  9049. TextLabel149.Name = "Status"
  9050. TextLabel149.Parent = Frame147
  9051. TextLabel149.Position = UDim2.new(0, 60, 0, 30)
  9052. TextLabel149.Transparency = 1
  9053. TextLabel149.Size = UDim2.new(0, 50, 0, 15)
  9054. TextLabel149.BackgroundColor = BrickColor.new("Institutional white")
  9055. TextLabel149.BackgroundColor3 = Color3.new(1, 1, 1)
  9056. TextLabel149.BackgroundTransparency = 1
  9057. TextLabel149.Font = Enum.Font.SourceSans
  9058. TextLabel149.FontSize = Enum.FontSize.Size18
  9059. TextLabel149.Text = "Off"
  9060. TextLabel149.TextSize = 18
  9061. TextLabel149.TextXAlignment = Enum.TextXAlignment.Left
  9062. TextButton150.Name = "Change"
  9063. TextButton150.Parent = Frame147
  9064. TextButton150.Position = UDim2.new(0, 10, 0, 30)
  9065. TextButton150.Size = UDim2.new(0, 40, 0, 15)
  9066. TextButton150.BackgroundColor = BrickColor.new("Quill grey")
  9067. TextButton150.BackgroundColor3 = Color3.new(0.862745, 0.862745, 0.862745)
  9068. TextButton150.BorderSizePixel = 0
  9069. TextButton150.Font = Enum.Font.SourceSans
  9070. TextButton150.FontSize = Enum.FontSize.Size14
  9071. TextButton150.Text = ""
  9072. TextButton150.TextSize = 14
  9073. TextLabel151.Name = "OnBar"
  9074. TextLabel151.Parent = TextButton150
  9075. TextLabel151.Size = UDim2.new(0, 0, 0, 15)
  9076. TextLabel151.BackgroundColor = BrickColor.new("Electric blue")
  9077. TextLabel151.BackgroundColor3 = Color3.new(0, 0.576471, 0.862745)
  9078. TextLabel151.BorderSizePixel = 0
  9079. TextLabel151.Font = Enum.Font.SourceSans
  9080. TextLabel151.FontSize = Enum.FontSize.Size14
  9081. TextLabel151.Text = ""
  9082. TextLabel151.TextSize = 14
  9083. TextLabel152.Name = "Bar"
  9084. TextLabel152.Parent = TextButton150
  9085. TextLabel152.Position = UDim2.new(0, -2, 0, -2)
  9086. TextLabel152.Size = UDim2.new(0, 10, 0, 19)
  9087. TextLabel152.BackgroundColor = BrickColor.new("Really black")
  9088. TextLabel152.BackgroundColor3 = Color3.new(0, 0, 0)
  9089. TextLabel152.BorderSizePixel = 0
  9090. TextLabel152.ClipsDescendants = true
  9091. TextLabel152.Font = Enum.Font.SourceSans
  9092. TextLabel152.FontSize = Enum.FontSize.Size14
  9093. TextLabel152.Text = ""
  9094. TextLabel152.TextSize = 14
  9095. TextLabel153.Name = "ToSave"
  9096. TextLabel153.Parent = Frame125
  9097. TextLabel153.Position = UDim2.new(0, 0, 0, 17)
  9098. TextLabel153.Transparency = 1
  9099. TextLabel153.Size = UDim2.new(1, 0, 0, 20)
  9100. TextLabel153.BackgroundTransparency = 1
  9101. TextLabel153.Font = Enum.Font.SourceSans
  9102. TextLabel153.FontSize = Enum.FontSize.Size18
  9103. TextLabel153.Text = "To Save"
  9104. TextLabel153.TextColor = BrickColor.new("Really black")
  9105. TextLabel153.TextColor3 = Color3.new(0, 0, 0)
  9106. TextLabel153.TextSize = 18
  9107. Frame154.Name = "CopyList"
  9108. Frame154.Parent = Frame125
  9109. Frame154.Position = UDim2.new(0, 0, 0, 37)
  9110. Frame154.Transparency = 0.80000001192093
  9111. Frame154.Size = UDim2.new(1, 0, 0, 163)
  9112. Frame154.BackgroundColor = BrickColor.new("Institutional white")
  9113. Frame154.BackgroundColor3 = Color3.new(1, 1, 1)
  9114. Frame154.BackgroundTransparency = 0.80000001192093
  9115. Frame155.Name = "Bottom"
  9116. Frame155.Parent = Frame125
  9117. Frame155.Position = UDim2.new(0, 0, 1, -50)
  9118. Frame155.Size = UDim2.new(1, 0, 0, 50)
  9119. Frame155.BackgroundColor = BrickColor.new("Lily white")
  9120. Frame155.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  9121. Frame155.BorderColor = BrickColor.new("Sand violet metallic")
  9122. Frame155.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  9123. TextLabel156.Parent = Frame155
  9124. TextLabel156.Position = UDim2.new(0, 4, 0, 0)
  9125. TextLabel156.Transparency = 1
  9126. TextLabel156.Size = UDim2.new(1, -4, 1, 0)
  9127. TextLabel156.BackgroundTransparency = 1
  9128. TextLabel156.Font = Enum.Font.SourceSans
  9129. TextLabel156.FontSize = Enum.FontSize.Size14
  9130. TextLabel156.Text = "After the map saves, open a new place on studio, then right click Lighting and Insert from file, then select your file and run the unpacker script inside the folder."
  9131. TextLabel156.TextColor = BrickColor.new("Really black")
  9132. TextLabel156.TextColor3 = Color3.new(0, 0, 0)
  9133. TextLabel156.TextSize = 14
  9134. TextLabel156.TextWrap = true
  9135. TextLabel156.TextWrapped = true
  9136. TextLabel156.TextXAlignment = Enum.TextXAlignment.Left
  9137. TextLabel156.TextYAlignment = Enum.TextYAlignment.Top
  9138. TextButton157.Name = "Save"
  9139. TextButton157.Parent = Frame125
  9140. TextButton157.Position = UDim2.new(0, 0, 1, -80)
  9141. TextButton157.Transparency = 0.80000001192093
  9142. TextButton157.Size = UDim2.new(1, 0, 0, 30)
  9143. TextButton157.BackgroundColor = BrickColor.new("White")
  9144. TextButton157.BackgroundColor3 = Color3.new(0.941177, 0.941177, 0.941177)
  9145. TextButton157.BackgroundTransparency = 0.80000001192093
  9146. TextButton157.BorderColor = BrickColor.new("Really black")
  9147. TextButton157.BorderColor3 = Color3.new(0, 0, 0)
  9148. TextButton157.Font = Enum.Font.SourceSans
  9149. TextButton157.FontSize = Enum.FontSize.Size18
  9150. TextButton157.Text = "Save"
  9151. TextButton157.TextSize = 18
  9152. TextBox158.Name = "FileName"
  9153. TextBox158.Parent = Frame125
  9154. TextBox158.Position = UDim2.new(0, 0, 1, -105)
  9155. TextBox158.Transparency = 0.60000002384186
  9156. TextBox158.Size = UDim2.new(1, 0, 0, 25)
  9157. TextBox158.BackgroundColor = BrickColor.new("White")
  9158. TextBox158.BackgroundColor3 = Color3.new(0.941177, 0.941177, 0.941177)
  9159. TextBox158.BackgroundTransparency = 0.60000002384186
  9160. TextBox158.Font = Enum.Font.SourceSans
  9161. TextBox158.FontSize = Enum.FontSize.Size18
  9162. TextBox158.Text = "PlaceName"
  9163. TextBox158.TextSize = 18
  9164. TextBox158.TextXAlignment = Enum.TextXAlignment.Left
  9165. Frame159.Name = "Entry"
  9166. Frame159.Parent = Frame125
  9167. Frame159.Visible = false
  9168. Frame159.Transparency = 1
  9169. Frame159.Size = UDim2.new(1, 0, 0, 22)
  9170. Frame159.BackgroundColor = BrickColor.new("Institutional white")
  9171. Frame159.BackgroundColor3 = Color3.new(1, 1, 1)
  9172. Frame159.BackgroundTransparency = 1
  9173. TextButton160.Name = "Change"
  9174. TextButton160.Parent = Frame159
  9175. TextButton160.Position = UDim2.new(0, 10, 0, 1)
  9176. TextButton160.Transparency = 0.60000002384186
  9177. TextButton160.Size = UDim2.new(0, 20, 0, 20)
  9178. TextButton160.BackgroundColor = BrickColor.new("Institutional white")
  9179. TextButton160.BackgroundColor3 = Color3.new(1, 1, 1)
  9180. TextButton160.BackgroundTransparency = 0.60000002384186
  9181. TextButton160.ZIndex = 2
  9182. TextButton160.Font = Enum.Font.SourceSans
  9183. TextButton160.FontSize = Enum.FontSize.Size18
  9184. TextButton160.Text = ""
  9185. TextButton160.TextColor = BrickColor.new("Institutional white")
  9186. TextButton160.TextColor3 = Color3.new(1, 1, 1)
  9187. TextButton160.TextSize = 18
  9188. TextLabel161.Name = "enabled"
  9189. TextLabel161.Parent = TextButton160
  9190. TextLabel161.Position = UDim2.new(0, 3, 0, 3)
  9191. TextLabel161.Transparency = 0.40000000596046
  9192. TextLabel161.Size = UDim2.new(0, 14, 0, 14)
  9193. TextLabel161.BackgroundColor = BrickColor.new("Dark stone grey")
  9194. TextLabel161.BackgroundColor3 = Color3.new(0.380392, 0.380392, 0.380392)
  9195. TextLabel161.BackgroundTransparency = 0.40000000596046
  9196. TextLabel161.BorderSizePixel = 0
  9197. TextLabel161.Font = Enum.Font.SourceSans
  9198. TextLabel161.FontSize = Enum.FontSize.Size14
  9199. TextLabel161.Text = ""
  9200. TextLabel161.TextSize = 14
  9201. TextLabel162.Name = "Info"
  9202. TextLabel162.Parent = Frame159
  9203. TextLabel162.Position = UDim2.new(0, 40, 0, 0)
  9204. TextLabel162.Transparency = 1
  9205. TextLabel162.Size = UDim2.new(1, -40, 0, 22)
  9206. TextLabel162.BackgroundTransparency = 1
  9207. TextLabel162.Font = Enum.Font.SourceSans
  9208. TextLabel162.FontSize = Enum.FontSize.Size18
  9209. TextLabel162.Text = "Workspace"
  9210. TextLabel162.TextColor = BrickColor.new("Really black")
  9211. TextLabel162.TextColor3 = Color3.new(0, 0, 0)
  9212. TextLabel162.TextSize = 18
  9213. TextLabel162.TextXAlignment = Enum.TextXAlignment.Left
  9214. Frame163.Name = "RemoteDebugWindow"
  9215. Frame163.Parent = ScreenGui0
  9216. Frame163.Position = UDim2.new(1, 0, 0, 0)
  9217. Frame163.Transparency = 0.10000000149012
  9218. Frame163.Size = UDim2.new(0, 300, 1, 0)
  9219. Frame163.BackgroundColor = BrickColor.new("Institutional white")
  9220. Frame163.BackgroundColor3 = Color3.new(1, 1, 1)
  9221. Frame163.BackgroundTransparency = 0.10000000149012
  9222. Frame163.BorderColor = BrickColor.new("Light grey")
  9223. Frame163.BorderColor3 = Color3.new(0.74902, 0.74902, 0.74902)
  9224. Frame163.BorderSizePixel = 0
  9225. Frame164.Name = "Header"
  9226. Frame164.Parent = Frame163
  9227. Frame164.Size = UDim2.new(1, 0, 0, 17)
  9228. Frame164.BackgroundColor = BrickColor.new("Lily white")
  9229. Frame164.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  9230. Frame164.BorderColor = BrickColor.new("Sand violet metallic")
  9231. Frame164.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  9232. TextLabel165.Parent = Frame164
  9233. TextLabel165.Position = UDim2.new(0, 4, 0, 0)
  9234. TextLabel165.Transparency = 1
  9235. TextLabel165.Size = UDim2.new(1, -4, 1, 0)
  9236. TextLabel165.BackgroundTransparency = 1
  9237. TextLabel165.Font = Enum.Font.SourceSans
  9238. TextLabel165.FontSize = Enum.FontSize.Size14
  9239. TextLabel165.Text = "Remote Debugger"
  9240. TextLabel165.TextColor = BrickColor.new("Really black")
  9241. TextLabel165.TextColor3 = Color3.new(0, 0, 0)
  9242. TextLabel165.TextSize = 14
  9243. TextLabel165.TextXAlignment = Enum.TextXAlignment.Left
  9244. BindableFunction166.Name = "GetSetting"
  9245. BindableFunction166.Parent = Frame163
  9246. TextLabel167.Name = "Desc"
  9247. TextLabel167.Parent = Frame163
  9248. TextLabel167.Position = UDim2.new(0, 0, 0, 20)
  9249. TextLabel167.Transparency = 1
  9250. TextLabel167.Size = UDim2.new(1, 0, 0, 40)
  9251. TextLabel167.BackgroundColor = BrickColor.new("Institutional white")
  9252. TextLabel167.BackgroundColor3 = Color3.new(1, 1, 1)
  9253. TextLabel167.BackgroundTransparency = 1
  9254. TextLabel167.Font = Enum.Font.SourceSans
  9255. TextLabel167.FontSize = Enum.FontSize.Size32
  9256. TextLabel167.Text = "Have fun with remotes"
  9257. TextLabel167.TextSize = 32
  9258. TextLabel167.TextWrap = true
  9259. TextLabel167.TextWrapped = true
  9260. Frame168.Name = "About"
  9261. Frame168.Parent = ScreenGui0
  9262. Frame168.Position = UDim2.new(1, 0, 0, 0)
  9263. Frame168.Size = UDim2.new(0, 300, 1, 0)
  9264. Frame168.Active = true
  9265. Frame168.BackgroundColor = BrickColor.new("Lily white")
  9266. Frame168.BackgroundColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  9267. Frame168.BorderColor = BrickColor.new("Sand violet metallic")
  9268. Frame168.BorderColor3 = Color3.new(0.584314, 0.584314, 0.584314)
  9269. Frame168.BorderSizePixel = 0
  9270. Frame168.Draggable = true
  9271. Frame168.ZIndex = 2
  9272. ImageLabel169.Name = "Sad"
  9273. ImageLabel169.Parent = Frame168
  9274. ImageLabel169.Position = UDim2.new(0, 50, 1, -250)
  9275. ImageLabel169.Transparency = 1
  9276. ImageLabel169.Size = UDim2.new(0, 200, 0, 200)
  9277. ImageLabel169.BackgroundColor = BrickColor.new("Institutional white")
  9278. ImageLabel169.BackgroundColor3 = Color3.new(1, 1, 1)
  9279. ImageLabel169.BackgroundTransparency = 1
  9280. ImageLabel169.ZIndex = 2
  9281. ImageLabel169.Image = "rbxassetid://483437370"
  9282. ImageLabel169.ImageColor3 = Color3.new(0.960784, 0.960784, 0.960784)
  9283. TextLabel170.Name = "Creator"
  9284. TextLabel170.Parent = Frame168
  9285. TextLabel170.Position = UDim2.new(0, 80, 0, 300)
  9286. TextLabel170.Transparency = 1
  9287. TextLabel170.Size = UDim2.new(0, 140, 0, 30)
  9288. TextLabel170.BackgroundColor = BrickColor.new("Institutional white")
  9289. TextLabel170.BackgroundColor3 = Color3.new(1, 1, 1)
  9290. TextLabel170.BackgroundTransparency = 1
  9291. TextLabel170.ZIndex = 2
  9292. TextLabel170.Font = Enum.Font.SourceSansBold
  9293. TextLabel170.FontSize = Enum.FontSize.Size28
  9294. TextLabel170.Text = "By Moon"
  9295. TextLabel170.TextSize = 28
  9296. TextLabel170.TextWrap = true
  9297. TextLabel170.TextWrapped = true
  9298. TextLabel171.Name = "Title"
  9299. TextLabel171.Parent = Frame168
  9300. TextLabel171.Position = UDim2.new(0, 100, 0, 150)
  9301. TextLabel171.Transparency = 1
  9302. TextLabel171.Size = UDim2.new(0, 100, 0, 60)
  9303. TextLabel171.BackgroundColor = BrickColor.new("Institutional white")
  9304. TextLabel171.BackgroundColor3 = Color3.new(1, 1, 1)
  9305. TextLabel171.BackgroundTransparency = 1
  9306. TextLabel171.ZIndex = 2
  9307. TextLabel171.Font = Enum.Font.SourceSansBold
  9308. TextLabel171.FontSize = Enum.FontSize.Size60
  9309. TextLabel171.Text = "DEX"
  9310. TextLabel171.TextSize = 60
  9311. TextLabel171.TextWrap = true
  9312. TextLabel171.TextWrapped = true
  9313. TextLabel172.Name = "Version"
  9314. TextLabel172.Parent = Frame168
  9315. TextLabel172.Position = UDim2.new(0, 100, 0, 210)
  9316. TextLabel172.Transparency = 1
  9317. TextLabel172.Size = UDim2.new(0, 100, 0, 30)
  9318. TextLabel172.BackgroundColor = BrickColor.new("Institutional white")
  9319. TextLabel172.BackgroundColor3 = Color3.new(1, 1, 1)
  9320. TextLabel172.BackgroundTransparency = 1
  9321. TextLabel172.ZIndex = 2
  9322. TextLabel172.Font = Enum.Font.SourceSansBold
  9323. TextLabel172.FontSize = Enum.FontSize.Size28
  9324. TextLabel172.Text = "v3"
  9325. TextLabel172.TextSize = 28
  9326. TextLabel172.TextWrap = true
  9327. TextLabel172.TextWrapped = true
  9328. ImageButton173.Name = "Toggle"
  9329. ImageButton173.Parent = ScreenGui0
  9330. ImageButton173.Position = UDim2.new(1, 0, 0, 0)
  9331. ImageButton173.Rotation = 180
  9332. ImageButton173.Transparency = 1
  9333. ImageButton173.Size = UDim2.new(0, 40, 0, 40)
  9334. ImageButton173.BackgroundColor = BrickColor.new("Institutional white")
  9335. ImageButton173.BackgroundColor3 = Color3.new(1, 1, 1)
  9336. ImageButton173.BackgroundTransparency = 1
  9337. ImageButton173.Image = "rbxassetid://1513966937"
  9338. ImageButton173.ImageColor3 = Color3.new(0.913726, 0.913726, 0.913726)
  9339. TextLabel174.Parent = ImageButton173
  9340. TextLabel174.Position = UDim2.new(0, 2, 0, 10)
  9341. TextLabel174.Rotation = 180
  9342. TextLabel174.Transparency = 1
  9343. TextLabel174.Size = UDim2.new(0, 30, 0, 30)
  9344. TextLabel174.BackgroundColor = BrickColor.new("Institutional white")
  9345. TextLabel174.BackgroundColor3 = Color3.new(1, 1, 1)
  9346. TextLabel174.BackgroundTransparency = 1
  9347. TextLabel174.Font = Enum.Font.SourceSans
  9348. TextLabel174.FontSize = Enum.FontSize.Size24
  9349. TextLabel174.Text = "<"
  9350. TextLabel174.TextSize = 24
  9351. TextLabel174.TextWrap = true
  9352. TextLabel174.TextWrapped = true
  9353. for i,v in pairs(mas:GetChildren()) do
  9354. v.Parent = game:GetService("Players").LocalPlayer.PlayerGui
  9355. pcall(function() v:MakeJoints() end)
  9356. end
  9357. mas:Destroy()
  9358. for i,v in pairs(cors) do
  9359. spawn(function()
  9360. pcall(v)
  9361. end)
  9362. end
Add Comment
Please, Sign In to add comment