xTh3_Hunter

[FE] Sentinel Dex Explorer (Roblox)

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