Advertisement
scriptingtales

Dex Explorer by Synarx

Apr 13th, 2024
1,045
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 24.64 KB | None | 0 0
  1. -- https://glot.io/snippets/gl52rc0bsm
  2. -- CREDITS TO SYNARX -- roblox.com/users/3742966329/profile
  3.  
  4. local Player = owner
  5. local Root = {}
  6.  
  7. local Listeners = {}
  8. local TweenService = game:GetService("TweenService")
  9. local TextService = game:GetService("TextService")
  10.  
  11. local Classes = game:GetService("HttpService"):JSONDecode(game:GetService("HttpService"):GetAsync("https://glot.io/snippets/gl4wl6n10q/raw/main.txt"))
  12.  
  13. function GetClassIconRect(Inst)
  14.     local ReturnValue = Classes[Inst.ClassName]
  15.     if not ReturnValue then
  16.         for Name, Offset in Classes do
  17.             if Inst:IsA(Name) then
  18.                 ReturnValue = Vector2.new(Offset[1], Offset[2])
  19.                 break
  20.             end
  21.         end
  22.     else
  23.         ReturnValue = Vector2.new(ReturnValue[1], ReturnValue[2])
  24.     end
  25.     return ReturnValue
  26. end
  27.  
  28. do
  29.     Children = "_Children"
  30.     Ref = "_Ref"
  31.     Attribute = "_Attr"
  32.  
  33.     local Val = {}
  34.     Val.__index = Val
  35.  
  36.     function Val:get()
  37.         return self._value
  38.     end
  39.  
  40.     function Val:set(v)
  41.         self._value = v
  42.     end
  43.  
  44.     Value = function(v)
  45.         local self = setmetatable({
  46.             _value = v
  47.         }, Val)
  48.         return self
  49.     end
  50.  
  51.     New = function(ClassName)
  52.         local Object
  53.         if typeof(ClassName) == "string" then
  54.             Object = Instance.new(ClassName)
  55.         end
  56.         return function(Properties : {[string] : any}?)
  57.             if not Properties then return end
  58.  
  59.             if typeof(ClassName) == "function"then
  60.                 return ClassName(Properties)
  61.             else
  62.                 local Parent = Properties.Parent
  63.                 Properties.Parent = nil
  64.  
  65.                 for Name, Value in Properties do
  66.                     if Name:sub(1,1) ~= "_" then
  67.                         Object[Name] = Value
  68.                     end
  69.                     if Name == Attribute then
  70.                         Object:SetAttribute(Value[1], Value[2])
  71.                     end
  72.                 end
  73.  
  74.  
  75.                 if Properties[Children] then
  76.                     for _, Child in Properties[Children] do
  77.                         Child.Parent = Object
  78.                     end
  79.                 end
  80.  
  81.                 if Properties[Ref] then
  82.                     Properties[Ref]:set(Object)
  83.                 end
  84.  
  85.                 Object.Parent = Parent
  86.                 return Object
  87.             end
  88.         end
  89.     end
  90. end
  91.  
  92. function RGBA(R,G,B,A)
  93.     return Color3.fromRGB(R * A, G * A, B * A)
  94. end
  95.  
  96. function Padding(Properties)
  97.     return New "UIPadding" {
  98.         PaddingBottom = Properties.Padding,
  99.         PaddingLeft = Properties.Padding,
  100.         PaddingRight = Properties.Padding,
  101.         PaddingTop = Properties.Padding,
  102.     }
  103. end
  104.  
  105. local Width, Height, Scale = 3.5 * 2, 7, 1.8
  106. local PPS = 300
  107. local PixelScale = PPS / 50
  108.  
  109. local DisplayRef = Value()
  110. local HolderRef = Value()
  111. local DesktopRootRef = Value()
  112. local DesktopRef = Value()
  113.  
  114. local Part = New "Part" {
  115.     Size = Vector3.new(Width * Scale, Height * Scale, 0),
  116.     CanTouch = false,
  117.     CanCollide = false,
  118.     Color = Color3.new(),
  119.     Material = Enum.Material.SmoothPlastic,
  120.  
  121.     [Children] = {
  122.         New "SurfaceGui" {
  123.             SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud,
  124.             PixelsPerStud = PPS,
  125.             Face = Enum.NormalId.Back,
  126.  
  127.  
  128.             [Ref] = DisplayRef
  129.         },
  130.         New "Attachment" {},
  131.     }
  132. }
  133.  
  134. function UD(X, Y)
  135.     return UDim.new(X * PixelScale, Y * PixelScale)
  136. end
  137.  
  138. local UD2 = {}
  139.  
  140. function UD2.new(SX, OX, SY, OY)
  141.     return UDim2.new(SX, OX * PixelScale, SY, OY * PixelScale)
  142. end
  143. UD2.fromScale = UDim2.fromScale
  144. function UD2.fromOffset(X, Y)
  145.     return UDim2.fromOffset(X * PixelScale, Y * PixelScale)
  146. end
  147.  
  148. local UDim2 = UD2
  149. local OpenTInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
  150.  
  151. local TabHeight = 12
  152. local Selected
  153. local PropertiesList = Value()
  154.  
  155. local Dump = {}
  156. do
  157.     local HttpService = game:GetService("HttpService")
  158.  
  159.     local URL = "https://raw.githubusercontent.com/CloneTrooper1019/Roblox-Client-Tracker/roblox/API-Dump.json"
  160.  
  161.     -- Based from "ApiDump" module from Reclass.
  162.  
  163.     Dump.fetchCache = nil
  164.     Dump.ignoredTags = {
  165.         ReadOnly = true,
  166.         Hidden = true,
  167.         Deprecated = true,
  168.     }
  169.     Dump.fromClassCache = {}
  170.     Dump.subclassesFromCache = {}
  171.     Dump.membersFromCache = {}
  172.     Dump.propertiesFromCache = {}
  173.     Dump.instanceCache = {}
  174.  
  175.     function Dump:fetch(reload)
  176.         if not reload then
  177.             if self.fetchCache then
  178.                 return self.fetchCache
  179.             end
  180.         end
  181.         local Success, Return = pcall(function()
  182.             return HttpService:JSONDecode(HttpService:GetAsync(URL))
  183.         end)
  184.         if not Success then
  185.             warn(Return)
  186.             return
  187.         end
  188.         self.fetchCache = Return
  189.  
  190.         table.clear(self.fromClassCache)
  191.         table.clear(self.subclassesFromCache)
  192.         table.clear(self.membersFromCache)
  193.         table.clear(self.propertiesFromCache)
  194.         table.clear(self.instanceCache)
  195.  
  196.         return Return
  197.     end
  198.  
  199.  
  200.     --Dump:fromClass(classname : string)
  201.     --Returns raw info of class.
  202.  
  203.     function Dump:fromClass(classname)
  204.         local cache = self.fromClassCache[classname]
  205.         if cache then return cache end
  206.  
  207.         local fetch = self:fetch()
  208.  
  209.         for _, object in fetch.Classes do
  210.             if object.Name == classname then
  211.                 self.fromClassCache[classname] = object
  212.                 return object
  213.             end
  214.         end
  215.     end
  216.  
  217.     --Dump:subclassesFromClass(classname : string)
  218.     --Returns list subclasses from a class.
  219.  
  220.     function Dump:subclassesFromClass(classname)
  221.         local cache = self.subclassesFromCache[classname]
  222.         if cache then return cache end
  223.  
  224.         local fetch = self:fetch()
  225.  
  226.         local subclasses = {}
  227.         for _, object in fetch.Classes do
  228.             if object.Superclass == classname then
  229.                 table.insert(subclasses, object)
  230.             end
  231.         end
  232.  
  233.         self.subclassesFromCache[classname] = subclasses
  234.  
  235.         return subclasses
  236.     end
  237.  
  238.     --Dump:membersFromClass(classname : string)
  239.     --Returns class members.
  240.  
  241.     function Dump:membersFromClass(classname)
  242.         local cache = self.membersFromCache[classname]
  243.         if cache then return cache end
  244.  
  245.         local entries, properties = {}, {}
  246.  
  247.         local object = self:fromClass(classname)
  248.         while object and object.Superclass ~= "<<<ROOT>>>" do
  249.             table.insert(entries, 1, object)
  250.             object = self:fromClass(object.Superclass)
  251.         end
  252.         table.insert(entries, 1, object)
  253.         if not object then error(`{classname} doesn't exist`, 2) end
  254.  
  255.         for i = 1, #entries do
  256.             local members = entries[i].Members
  257.             for i = 1, #members do
  258.                 table.insert(properties, members[i])
  259.             end
  260.         end
  261.  
  262.         self.membersFromCache[classname] = properties
  263.         return properties
  264.     end
  265.  
  266.     --Dump:propertiesFromClass(classname : string)
  267.     --Returns list of names of properties from a class, may not be accurate. See :propertiesFromInstance for accurate results.
  268.  
  269.     function Dump:propertiesFromClass(classname)
  270.         local cache = self.propertiesFromCache[classname]
  271.         if cache then return cache end
  272.         local members = self:membersFromClass(classname)
  273.         local properties = {}
  274.         local inst
  275.  
  276.         for i = 1, #members do
  277.             local member = members[i]
  278.             if member.MemberType ~= "Property" then
  279.                 continue
  280.             end
  281.  
  282.             local valid = true
  283.             if member.Tags then
  284.                 local tags = member.Tags
  285.                 for i = 1, #tags do
  286.                     if self.ignoredTags[tags[i]] then
  287.                         valid = false
  288.                         break
  289.                     end
  290.                 end
  291.             end
  292.  
  293.             if valid then
  294.                 table.insert(properties, member)
  295.             end
  296.         end
  297.  
  298.         return properties
  299.     end
  300. end
  301.  
  302. function decimalRound(number, digitsPast0)
  303.     digitsPast0 = math.pow(10, digitsPast0)
  304.     number *= digitsPast0
  305.     if number >= 0 then
  306.         number = math.floor(number + 0.5)
  307.     else
  308.         number = math.ceil(number - 0.5)
  309.     end
  310.     return number / digitsPast0
  311. end
  312.  
  313. local Display = DisplayRef:get()
  314. local RightClick = New "Frame" {
  315.     BackgroundTransparency = 0.5,
  316.     Size = UDim2.fromOffset(120, 10),
  317.     Parent = Display,
  318.     ZIndex = 2,
  319.     Visible = false,
  320.  
  321.     [Children] = {
  322.         New "UIListLayout" {}
  323.     }
  324. }
  325.  
  326. local RightClickOptions = {
  327.     ["Delete"] = {function()
  328.         Selected[1]:Destroy()
  329.     end, "rbxassetid://11768918600"}
  330. }
  331.  
  332. for i,v in RightClickOptions do
  333.     local Button = New "Frame" {
  334.         Size = UDim2.new(1, 0, 0, 10),
  335.         BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2),
  336.         BorderSizePixel = PixelScale,
  337.         BorderColor3 = Color3.new(0.18, 0.18, 0.18),
  338.         ZIndex = 3,
  339.  
  340.         [Attribute] = {"Input", true},
  341.         [Children] = {
  342.             New "TextLabel" {
  343.                 BackgroundTransparency = 1,
  344.                 TextColor3 = Color3.new(0.7, 0.7, 0.7),
  345.                 TextSize = 8 * PixelScale,
  346.                 Font = Enum.Font.Code,
  347.                 TextXAlignment = Enum.TextXAlignment.Left,
  348.                 TextTruncate = 1,
  349.                 Size = UDim2.fromScale(0.5, 1),
  350.                 Text = "   "..i,
  351.                 ZIndex = 3,
  352.             },
  353.         }
  354.     }
  355.  
  356.     if v[2] then
  357.         New "ImageLabel" {
  358.             Image = v[2],
  359.             BackgroundTransparency = 1,
  360.             Size = UDim2.fromOffset(11, 8),
  361.             ScaleType = Enum.ScaleType.Fit,
  362.             Position = UDim2.fromOffset(2, 0),
  363.             Parent = Button,
  364.             ZIndex = 3,
  365.         }
  366.     end
  367.    
  368.     Button.Parent = RightClick
  369.  
  370.     Listeners[Button] = {
  371.         Click = function()
  372.             v[1]()
  373.         end
  374.     }
  375. end
  376.  
  377. function CreateTab(Props)
  378.     local Tab = New "Frame" {
  379.         Size = UDim2.new(1, 0, 0, TabHeight),
  380.         BackgroundTransparency = 1,
  381.         ClipsDescendants = true,
  382.  
  383.         [Children] = {
  384.             New "Frame" {
  385.                 BackgroundTransparency = 1,
  386.                 Name = "Selection",
  387.                 BorderSizePixel = 0,
  388.                 Size = UDim2.new(1, 0, 0, TabHeight),
  389.             },
  390.             New "Frame" {
  391.                 BackgroundTransparency = 1,
  392.                 Name = "Selected",
  393.                 BorderSizePixel = 0,
  394.                 BackgroundColor3 = Color3.new(0, 0.6, 1),
  395.                 Size = UDim2.new(1, 0, 0, TabHeight),
  396.  
  397.                 [Attribute] = {"Input", true},
  398.             },
  399.             New "Frame" {
  400.                 BackgroundTransparency = 1,
  401.                 Position = UDim2.fromOffset(3 + (16 * (Props.Indent - 1)), 0),
  402.                 Size = UDim2.fromScale(1, 1),
  403.  
  404.                 [Children] = {
  405.                     New "Frame" {
  406.                         BackgroundTransparency = 1,
  407.                         Size = UDim2.fromOffset(8, 8),
  408.                         AnchorPoint = Vector2.new(0.5, 0),
  409.                         Position = UDim2.fromOffset(0, 2),
  410.                         Name = "InputButton",
  411.                         ZIndex = 2,
  412.  
  413.                         [Attribute] = {"Input", true},
  414.                         [Children] = {
  415.                             New "ImageButton" {
  416.                                 Image = "rbxasset://textures/ui/AvatarContextMenu_Arrow.png",
  417.                                 BackgroundTransparency = 1,
  418.                                 AnchorPoint = Vector2.one * 0.5,
  419.                                 Position = UDim2.fromScale(0.5, 0.5),
  420.                                 Size = UDim2.fromOffset(3, 14),
  421.                                 ScaleType = Enum.ScaleType.Fit,
  422.                                 ImageTransparency = next(Props.Root:GetChildren()) and 0.25 or 1,
  423.                             },
  424.                         }
  425.                     },
  426.                     New "ImageLabel" {
  427.                         Image = "http://www.roblox.com/asset/?id=13496467347",
  428.                         BackgroundTransparency = 1,
  429.                         ImageRectSize = Vector2.one * 16,
  430.                         ImageRectOffset = Props.RectOffset,
  431.                         Size = UDim2.fromOffset(11, 14),
  432.                         Position = UDim2.fromOffset(6, 0),
  433.                         ScaleType = Enum.ScaleType.Fit,
  434.                     },
  435.                     New "TextLabel" {
  436.                         Text = Props.Text,
  437.                         BackgroundTransparency = 1,
  438.                         Font = Enum.Font.Code,
  439.                         TextSize = 8 * PixelScale,
  440.                         TextXAlignment = Enum.TextXAlignment.Left,
  441.                         Position = UDim2.fromOffset(19+3, 0),
  442.                         Size = UDim2.fromOffset(TextService:GetTextSize(Props.Text, 8 * PixelScale, Enum.Font.Code, Vector2.one * math.huge), 14),
  443.                         TextColor3 = Color3.new(0.7, 0.7, 0.7)
  444.                     },
  445.                 }
  446.             }
  447.         }
  448.     }
  449.  
  450.     Tab.Parent = Props.Parent
  451.  
  452.     local Toggle = false
  453.     local Added = {}
  454.  
  455.     local InputButton = Tab.Frame.InputButton
  456.  
  457.  
  458.     local function UpdateDropdown(v)
  459.         local Children = Props.Root:GetChildren()
  460.  
  461.         local ImageButton = InputButton:FindFirstChild("ImageButton")
  462.         if ImageButton then
  463.             ImageButton.ImageTransparency = next(Children) and 0.25 or 1
  464.         end
  465.     end
  466.  
  467.     local function AddChild(v)
  468.         local NewTab = CreateTab{
  469.             Root = v,
  470.             RectOffset = GetClassIconRect(v),
  471.             Text = v.Name,
  472.             Indent = Props.Indent + 1,
  473.             Parent = Tab.Holder.Frame,
  474.         }
  475.  
  476.         v.Destroying:Connect(function()
  477.             NewTab:Destroy()
  478.         end)
  479.  
  480.         table.insert(Added, NewTab)
  481.     end
  482.  
  483.     local PropertyTabs = {}
  484.  
  485.     local RemovedEvent = Props.Root.ChildRemoved:Connect(UpdateDropdown)
  486.     local AddedEvent = Props.Root.ChildAdded:Connect(function(v)
  487.         UpdateDropdown()
  488.         if Toggle then
  489.             AddChild(v)    
  490.         end
  491.     end)
  492.     local Changed = Props.Root.Changed:Connect(function(Property)
  493.         if Property == "Name" then
  494.             Tab.Frame.TextLabel.Text = Props.Root.Name
  495.             Tab.Frame.TextLabel.Size = UDim2.fromOffset(TextService:GetTextSize(Props.Root.Name, 8 * PixelScale, Enum.Font.Code, Vector2.one * math.huge) , 14)
  496.         end
  497.         local Tab = PropertyTabs[Property]
  498.         if Tab then
  499.             local Value = Props.Root[Property]
  500.             local ValueObject = Tab:FindFirstChild("Value")
  501.             if ValueObject then
  502.                 if typeof(Value) ~= "boolean" then
  503.                     ValueObject.Text = tostring(Value)
  504.                 else
  505.                     ValueObject.ImageLabel.Visible = Value
  506.                 end
  507.             end
  508.         end
  509.     end)
  510.  
  511.     local TabSelected = Tab.Selected
  512.     Tab.Destroying:Connect(function()
  513.         RemovedEvent:Disconnect()
  514.         AddedEvent:Disconnect()
  515.         Changed:Disconnect()
  516.         Listeners[InputButton] = nil
  517.         Listeners[TabSelected] = nil
  518.     end)
  519.  
  520.     local CurrentChildren = {}
  521.  
  522.     Listeners[InputButton] = {
  523.         Click = function()
  524.             Toggle = not Toggle
  525.             Tab.Frame.InputButton.ImageButton.Rotation = Toggle and 90 or 0
  526.  
  527.             if Toggle then
  528.                 CurrentChildren = Props.Root:GetChildren()
  529.  
  530.                 for i, v in CurrentChildren do
  531.                     if i > 475 then warn("Hit children view limit") break end
  532.                     if i % 35 == 0 then
  533.                         task.wait()
  534.                     end
  535.                     AddChild(v)
  536.                 end
  537.             else
  538.                 Tab.Size = UDim2.new(1, 0, 0, TabHeight)
  539.  
  540.  
  541.                 for i, v in Added do
  542.                     if i % 45 == 0 then
  543.                         task.wait()
  544.                     end
  545.                     v:Destroy()
  546.                 end
  547.  
  548.                 table.clear(Added)
  549.             end
  550.         end,
  551.     }
  552.     Listeners[TabSelected] = {
  553.         Click = function()
  554.             if Selected and Selected[2]:FindFirstChild("Selected") then
  555.                 Selected[2].Selected.BackgroundTransparency = 1
  556.             end
  557.             TabSelected.BackgroundTransparency = 0.6
  558.             Selected = {Props.Root, Tab}
  559.             PropertiesList:get().ScrollingFrame.Title.Text = `"{Props.Root.Name}" - Properties`
  560.             local Properties = Dump:propertiesFromClass(Props.Root.ClassName)
  561.  
  562.             for i,v in PropertiesList:get().ScrollingFrame:GetChildren() do
  563.                 if v.Name == "Property" then
  564.                     v:Destroy()
  565.                 end
  566.             end
  567.  
  568.             for i, v in Properties do
  569.                 local Success, Value = pcall(function()
  570.                     return Props.Root[v.Name]
  571.                 end)
  572.                 if not Success then continue end
  573.  
  574.                 local Tab = New "Frame" {
  575.                     Size = UDim2.new(1, 0, 0, 18),
  576.                     BackgroundTransparency = 1,
  577.                     Parent = PropertiesList:get().ScrollingFrame,
  578.                     LayoutOrder = 2 + i,
  579.                     Name = "Property",
  580.  
  581.                     [Children] = {
  582.                         New "Frame" {
  583.                             Size = UDim2.fromScale(0.5, 1),
  584.                             BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2),
  585.                             BorderSizePixel = PixelScale,
  586.                             BorderColor3 = Color3.new(0.18, 0.18, 0.18),
  587.                         },
  588.                         New "Frame" {
  589.                             Size = UDim2.fromScale(0.5, 1),
  590.                             Position = UDim2.fromScale(0.5, 0),
  591.                             BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2),
  592.                             BorderSizePixel = PixelScale,
  593.                             BorderColor3 = Color3.new(0.18, 0.18, 0.18),
  594.                         },
  595.                         New "TextLabel" {
  596.                             BackgroundTransparency = 1,
  597.                             TextColor3 = Color3.new(0.7, 0.7, 0.7),
  598.                             TextSize = 11 * PixelScale,
  599.                             Font = Enum.Font.Code,
  600.                             TextXAlignment = Enum.TextXAlignment.Left,
  601.                             TextTruncate = 1,
  602.                             Size = UDim2.fromScale(0.5, 1),
  603.                             Text = "   "..v.Name,
  604.                             ZIndex = 2,
  605.                         },
  606.                        
  607.                     }
  608.                 }
  609.                 if Value then
  610.                     if typeof(Value) ~= "boolean"  then
  611.                         local ValueObject = New "TextBox" {
  612.                             BackgroundTransparency = 1,
  613.                             TextColor3 = Color3.new(0.7, 0.7, 0.7),
  614.                             Position = UDim2.fromScale(0.536, 0),
  615.                             TextSize = 11 * PixelScale,
  616.                             Font = Enum.Font.Code,
  617.                             TextXAlignment = Enum.TextXAlignment.Left,
  618.                             TextTruncate = 1,
  619.                             Size = UDim2.fromScale(0.5, 1),
  620.                             Text = tostring(Value),
  621.                             ZIndex = 2,
  622.                             ClearTextOnFocus = false,
  623.                             TextEditable = false,
  624.                             Name = "Value",
  625.                             Parent = Tab,
  626.  
  627.                             [Attribute] = {"TextBox", true}
  628.                         }
  629.                         Listeners[ValueObject] = function(Text)
  630.                             local Set = Text
  631.                             local Val = Props.Root[v.Name]
  632.                             if typeof(Val) == "Vector3" then
  633.                                 Set = Vector3.new(unpack(Text:split(",")))
  634.                             end
  635.                             if typeof(Val) == "Vector2" then
  636.                                 Set = Vector2.new(unpack(Text:split(",")))
  637.                             end
  638.                             if typeof(Val) == "CFrame" then
  639.                                 Set = CFrame.new(unpack(Text:split(",")))
  640.                             end
  641.                             Props.Root[v.Name] = Set
  642.                         end
  643.                     else
  644.                         local ValueObject = New "Frame" {
  645.                             BackgroundColor3 = Color3.new(0.19, 0.19, 0.19),
  646.                             BorderColor3 = Color3.new(0.18, 0.18, 0.18),
  647.                             BorderSizePixel = PixelScale,
  648.                             Position = UDim2.fromScale(0.536, 0.5),
  649.                             AnchorPoint = Vector2.new(0, 0.5),
  650.                             Size = UDim2.fromOffset(13, 13),
  651.                             ZIndex = 2,
  652.                             Name = "Value",
  653.                             Parent = Tab,
  654.  
  655.                             [Attribute] = {"Input", true},
  656.                             [Children] = {
  657.                                 New "ImageLabel" {
  658.                                     Image = "rbxassetid://1202200114",
  659.                                     BackgroundTransparency = 1,
  660.                                     AnchorPoint = Vector2.one * 0.5,
  661.                                     Size = UDim2.fromScale(0.9, 0.9),
  662.                                     Position = UDim2.fromScale(0.5, 0.5),
  663.                                     ZIndex = 2,
  664.                                     Visible = Value,
  665.                                 }
  666.                             }
  667.                         }
  668.  
  669.                         Listeners[ValueObject] = {
  670.                             Click = function()
  671.                                 Props.Root[v.Name] = not Props.Root[v.Name]
  672.                             end
  673.                         }
  674.                     end
  675.                 end
  676.                 Tab.Destroying:Connect(function()
  677.                     PropertyTabs[v.Name] = nil
  678.                 end)
  679.                 PropertyTabs[v.Name] = Tab
  680.             end
  681.         end,
  682.         Click2 = function(Position)
  683.             if Selected and Selected[2]:FindFirstChild("Selected") then
  684.                 Selected[2].Selected.BackgroundTransparency = 1
  685.             end
  686.             TabSelected.BackgroundTransparency = 0.6
  687.             Selected = {Props.Root, Tab}
  688.             RightClick.Visible = true
  689.             Position = Position / PixelScale
  690.             RightClick.Position = UDim2.fromOffset(Position.X, Position.Y)
  691.         end,
  692.         Leave = function()
  693.             Tab.Selection.BackgroundTransparency = 1
  694.         end,
  695.         Enter = function()
  696.             Tab.Selection.BackgroundTransparency = 0.8
  697.         end
  698.     }
  699.  
  700.     local Holder = New "Frame" {
  701.         Size = UDim2.fromScale(1, 10),
  702.         BackgroundTransparency = 1,
  703.         Position = UDim2.fromOffset(0, TabHeight),
  704.         Name = "Holder",
  705.         Parent = Tab,
  706.  
  707.         [Children] = {
  708.             New "Frame" {
  709.                 BackgroundTransparency = 0.8,
  710.                 Size = UDim2.new(0, 0.5, 1, 0),
  711.                 BorderSizePixel = 0,
  712.                 Position = UDim2.fromOffset(3 + (16 * (Props.Indent - 1)), 0),
  713.                 Name = "Indent",
  714.             },
  715.             New "Frame" {
  716.                 Size = UDim2.fromScale(1, 1),
  717.                 BackgroundTransparency = 1,
  718.             }
  719.         }
  720.     }
  721.  
  722.     local Layout = New "UIListLayout" {
  723.         Parent = Holder.Frame,
  724.     }
  725.  
  726.     Layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
  727.         Tab.Size = UDim2.new(1, 0, 0, TabHeight + Layout.AbsoluteContentSize.Y / 6)
  728.     end)
  729.  
  730.     return Tab
  731. end
  732.  
  733. New "LinearVelocity" {
  734.     Parent = Part,
  735.     MaxForce = math.huge,
  736.     VectorVelocity = Vector3.new(),
  737.     Attachment0 = Part.Attachment,
  738.     RelativeTo = Enum.ActuatorRelativeTo.World,
  739.     VelocityConstraintMode = Enum.VelocityConstraintMode.Vector,
  740. }
  741.  
  742. local ExplorerList = Value()
  743.  
  744. local Holder = New "Frame" {
  745.     Parent = Display,
  746.  
  747.     Size = UDim2.fromScale(1, 1),
  748.     BackgroundColor3 = Color3.new(0.2, 0.2, 0.2),
  749.     BorderSizePixel = 0,
  750.  
  751.     [Ref] = HolderRef,
  752.     [Children] = {
  753.         New "UIPadding" {
  754.             PaddingTop = UD(0, 2),
  755.             PaddingLeft = UD(0, 2),
  756.             PaddingRight = UD(0, 2),
  757.             PaddingBottom = UD(0, 2),
  758.         },
  759.         New "Frame" {
  760.             Size = UDim2.fromScale(1, 1),
  761.             BackgroundColor3 = Color3.new(0.22,.22,.22),
  762.             BorderSizePixel = 0,
  763.  
  764.             [Children] = {
  765.                 New "Frame" {
  766.                     Size = UDim2.new(0.5, -3, 1, 0),
  767.                     BackgroundColor3 = Color3.new(0.18,.18,.18),
  768.                     BorderSizePixel = 0,
  769.  
  770.                     [Children] = {
  771.                         New "UIPadding" {
  772.                             PaddingTop = UD(0, 1),
  773.                             PaddingLeft = UD(0, 1),
  774.                             PaddingRight = UD(0, 1),
  775.                             PaddingBottom = UD(0, 1),
  776.                         },
  777.                         New "ScrollingFrame" {
  778.                             Size = UDim2.fromScale(1, 1),
  779.                             BackgroundColor3 = Color3.new(0.2, 0.2, 0.2),
  780.                             BorderSizePixel = 0,
  781.                             AutomaticCanvasSize = Enum.AutomaticSize.XY,
  782.                             CanvasSize = UDim2.new(0, 0, 0, 0),
  783.  
  784.                             [Ref] = ExplorerList,
  785.                             [Children] = {
  786.                                 New "UIListLayout" {},
  787.                             }
  788.                         }
  789.                     }
  790.                 },
  791.                 New "Frame" {
  792.                     Size = UDim2.new(0.5, -3, 1, 0),
  793.                     Position = UDim2.new(0.5, 3, 0, 0),
  794.                     BackgroundColor3 = Color3.new(0.18,.18,.18),
  795.                     BorderSizePixel = 0,
  796.  
  797.                     [Ref] = PropertiesList,
  798.                     [Children] = {
  799.                         New "UIPadding" {
  800.                             PaddingTop = UD(0, 1),
  801.                             PaddingLeft = UD(0, 1),
  802.                             PaddingRight = UD(0, 1),
  803.                             PaddingBottom = UD(0, 1),
  804.                         },
  805.                         New "ScrollingFrame" {
  806.                             Size = UDim2.fromScale(1, 1),
  807.                             BackgroundColor3 = Color3.new(0.2, 0.2, 0.2),
  808.                             BorderSizePixel = 0,
  809.                             AutomaticCanvasSize = Enum.AutomaticSize.XY,
  810.                             CanvasSize = UDim2.new(0, 0, 0, 0),
  811.  
  812.                             [Children] = {
  813.                                 New "UIListLayout" {
  814.                                     SortOrder = Enum.SortOrder.LayoutOrder,
  815.                                 },
  816.                                 New "TextLabel" {
  817.                                     BackgroundTransparency = 1,
  818.                                     TextColor3 = Color3.new(0.7, 0.7, 0.7),
  819.                                     TextSize = 11 * PixelScale,
  820.                                     Font = Enum.Font.Code,
  821.                                     Size = UDim2.new(1, 0, 0, 14),
  822.                                     Text = "Properties",
  823.                                     Name = "Title",
  824.                                 },
  825.                                 New "Frame" {
  826.                                     BackgroundTransparency = 1,
  827.                                     Size = UDim2.new(1, 0, 0, 8),
  828.                                     Name = "Seperator",
  829.                                     LayoutOrder = 1,
  830.  
  831.                                     [Children] = {
  832.                                         New "Frame" {
  833.                                             Size = UDim2.new(1, 0, 0, 0.5),
  834.                                             BackgroundTransparency = 0.8,
  835.                                             BorderSizePixel = 0,
  836.                                             AnchorPoint = Vector2.one * 0.5,
  837.                                             Position = UDim2.fromScale(0.5, 0.5)
  838.                                         }
  839.                                     }
  840.                                 }
  841.                             }
  842.                         }
  843.                     }
  844.                 },
  845.                 New "UIPadding" {
  846.                     PaddingTop = UD(0, 4),
  847.                     PaddingLeft = UD(0, 4),
  848.                     PaddingRight = UD(0, 4),
  849.                     PaddingBottom = UD(0, 4),
  850.                 },
  851.             }
  852.         }
  853.     }
  854. }
  855.  
  856. function AddInstance(Inst, Parent)
  857.     local Tab = CreateTab{
  858.         RectOffset = GetClassIconRect(Inst),
  859.         Text = Inst.Name,
  860.         Root = Inst,
  861.         Indent = 1,
  862.     }
  863.     Tab.Parent = Parent
  864.  
  865.     return Tab
  866. end
  867.  
  868.  
  869. local ShownServices = {
  870.     "Workspace",
  871.     "Players",
  872.     "Lighting",
  873.     "MaterialService",
  874.     "ReplicatedFirst",
  875.     "ReplicatedStorage",
  876.     "ServerScriptService",
  877.     "ServerStorage",
  878.     "Teams",
  879.     "SoundService",
  880.     "Chat",
  881.     "TextChatService",
  882.     "VoiceChatService",
  883.     "LocalizationService",
  884.     "TestService"
  885. }
  886.  
  887. for i,v in ShownServices do
  888.     AddInstance(game:GetService(v), ExplorerList:get())
  889. end
  890.  
  891. Part.Parent = script
  892. Part:SetNetworkOwner(Player)
  893.  
  894. local Locals = Instance.new("ScreenGui", Player.PlayerGui)
  895. Locals.ResetOnSpawn = false
  896.  
  897. local RemoteFunction = Instance.new("RemoteFunction", Locals)
  898. local RemoteEvent = Instance.new("RemoteEvent", Locals)
  899.  
  900. RemoteFunction.OnServerInvoke = function(Player, Type, ...)
  901.     local Arguments = {...}
  902.     if Type == "Initialize" then
  903.         return Part
  904.     end
  905. end
  906.  
  907. RemoteEvent.OnServerEvent:Connect(function(Player, Type, Name, Value, ...)
  908.     if Type == "Input" then
  909.         local Listener = Listeners[Value]
  910.         if Listener and Listener[Name] then
  911.             Listener[Name](...)
  912.         end
  913.     end
  914.     if Type == "TextBox" then
  915.         local Listener = Listeners[Name]
  916.         if Listener then
  917.             Listener(Value)
  918.         end
  919.     end
  920. end)
  921.  
  922. local Count = New "TextLabel" {
  923.     BackgroundTransparency = 1,
  924.     TextColor3 = Color3.new(0.7, 0.7, 0.7),
  925.     TextSize = 11 * PixelScale,
  926.     Font = Enum.Font.Code,
  927.     Size = UDim2.new(1, 0, 0, 14),
  928.     Text = "GUI Instance Count - "..#Part:GetDescendants(),
  929.     ZIndex = 999,
  930.     Parent = Holder,
  931. }
  932.  
  933. if owner.Name == "Darkceius" then
  934.    print("hi")
  935. end
  936. Count.Text = "MADE BY SYNARX"
  937.  
  938. NLS([[local RunService = game:GetService("RunService")
  939. local UserInputService = game:GetService("UserInputService")
  940.  
  941. local Lock = false
  942.  
  943. local Players = game:GetService("Players")
  944. local Player = Players.LocalPlayer
  945.  
  946. print("Starting localscript...")
  947.  
  948. local Part = script.Parent.RemoteFunction:InvokeServer("Initialize")
  949.  
  950. print("Localscript running.",Part)
  951.  
  952. RunService.RenderStepped:Connect(function(DeltaTime)
  953.     local Character = Player.Character
  954.     if Character and not Lock then
  955.         Part.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(0, (Part.Size.Y * 0.5) - 2, -5)
  956.     end
  957. end)
  958.  
  959. local Focus
  960.  
  961. UserInputService.InputBegan:Connect(function(Input, GameProccessed)
  962.     if not GameProccessed then
  963.         if Input.KeyCode == Enum.KeyCode.M then
  964.             Lock = not Lock
  965.         end
  966.     end
  967.     if Input.KeyCode == Enum.KeyCode.Return and Focus then
  968.         script.Parent.RemoteEvent:FireServer("TextBox", Focus, Focus.Text)
  969.     end
  970. end)
  971.  
  972. function Input(v)
  973.     if v:GetAttribute("Input") then
  974.         v.MouseEnter:Connect(function()
  975.             script.Parent.RemoteEvent:FireServer("Input", "Enter", v)
  976.         end)
  977.         v.MouseLeave:Connect(function()
  978.             script.Parent.RemoteEvent:FireServer("Input", "Leave", v)
  979.         end)
  980.         v.InputBegan:Connect(function(Input)
  981.             if Input.UserInputType == Enum.UserInputType.MouseButton1 then
  982.                 script.Parent.RemoteEvent:FireServer("Input", "Click", v)
  983.             end
  984.             if Input.UserInputType == Enum.UserInputType.MouseButton2 then
  985.                 script.Parent.RemoteEvent:FireServer("Input", "Click2", v, Input.Position)
  986.             end
  987.         end)
  988.     end
  989.     if v:GetAttribute("TextBox") then
  990.         v.TextEditable = true
  991.         v.Focused:Connect(function()
  992.             Focus = v
  993.         end)
  994.         v.FocusLost:Connect(function()
  995.             task.wait(0.02)
  996.             Focus = nil
  997.         end)
  998.     end
  999. end
  1000.  
  1001. for i, v in next, Part:GetDescendants() do
  1002.     Input(v)
  1003. end
  1004.  
  1005. Part.DescendantAdded:Connect(function(v)
  1006.     task.defer(function()
  1007.         Input(v)
  1008.     end)
  1009. end)]], Locals)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement