Syn's Explorer

Run Settings
LanguageLua
Language Version
Run Command
local Player = owner local Root = {} local Listeners = {} local TweenService = game:GetService("TweenService") local TextService = game:GetService("TextService") local Classes = game:GetService("HttpService"):JSONDecode(game:GetService("HttpService"):GetAsync("https://glot.io/snippets/gl4wl6n10q/raw/main.txt")) local Serialize local MtS3Serialize function GetClassIconRect(Inst) local ReturnValue = Classes[Inst.ClassName] if not ReturnValue then for Name, Offset in Classes do if Inst:IsA(Name) then ReturnValue = Vector2.new(Offset[1], Offset[2]) break end end else ReturnValue = Vector2.new(ReturnValue[1], ReturnValue[2]) end return ReturnValue end do Children = "_Children" Ref = "_Ref" Attribute = "_Attr" local Val = {} Val.__index = Val function Val:get() return self._value end function Val:set(v) self._value = v end Value = function(v) local self = setmetatable({ _value = v }, Val) return self end New = function(ClassName) local Object if typeof(ClassName) == "string" then Object = Instance.new(ClassName) end return function(Properties : {[string] : any}?) if not Properties then return end if typeof(ClassName) == "function"then return ClassName(Properties) else local Parent = Properties.Parent Properties.Parent = nil for Name, Value in Properties do if Name:sub(1,1) ~= "_" then Object[Name] = Value end if Name == Attribute then Object:SetAttribute(Value[1], Value[2]) end end if Properties[Children] then for _, Child in Properties[Children] do Child.Parent = Object end end if Properties[Ref] then Properties[Ref]:set(Object) end Object.Parent = Parent return Object end end end end function RGBA(R,G,B,A) return Color3.fromRGB(R * A, G * A, B * A) end function Padding(Properties) return New "UIPadding" { PaddingBottom = Properties.Padding, PaddingLeft = Properties.Padding, PaddingRight = Properties.Padding, PaddingTop = Properties.Padding, } end local Width, Height, Scale = 3.5 * 2, 7, 1.8 local PPS = 300 local PixelScale = PPS / 50 local DisplayRef = Value() local HolderRef = Value() local DesktopRootRef = Value() local DesktopRef = Value() local Part = New "Part" { Size = Vector3.new(Width * Scale, Height * Scale, 0), CanTouch = false, CanCollide = false, Color = Color3.new(), Material = Enum.Material.SmoothPlastic, [Children] = { New "SurfaceGui" { SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud, PixelsPerStud = PPS, Face = Enum.NormalId.Back, [Ref] = DisplayRef }, New "Attachment" {}, } } function UD(X, Y) return UDim.new(X * PixelScale, Y * PixelScale) end local UD2 = {} function UD2.new(SX, OX, SY, OY) return UDim2.new(SX, OX * PixelScale, SY, OY * PixelScale) end UD2.fromScale = UDim2.fromScale function UD2.fromOffset(X, Y) return UDim2.fromOffset(X * PixelScale, Y * PixelScale) end local UDim2 = UD2 local OpenTInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local TabHeight = 12 local Selected local PropertiesList = Value() local Dump = {} do local HttpService = game:GetService("HttpService") local URL = "https://raw.githubusercontent.com/CloneTrooper1019/Roblox-Client-Tracker/roblox/API-Dump.json" -- Based from "ApiDump" module from Reclass. Dump.fetchCache = nil Dump.ignoredTags = { ReadOnly = true, Hidden = true, Deprecated = true, } Dump.fromClassCache = {} Dump.subclassesFromCache = {} Dump.membersFromCache = {} Dump.propertiesFromCache = {} Dump.instanceCache = {} function Dump:fetch(reload) if not reload then if self.fetchCache then return self.fetchCache end end local Success, Return = pcall(function() return HttpService:JSONDecode(HttpService:GetAsync(URL)) end) if not Success then warn(Return) return end self.fetchCache = Return table.clear(self.fromClassCache) table.clear(self.subclassesFromCache) table.clear(self.membersFromCache) table.clear(self.propertiesFromCache) table.clear(self.instanceCache) return Return end --Dump:fromClass(classname : string) --Returns raw info of class. function Dump:fromClass(classname) local cache = self.fromClassCache[classname] if cache then return cache end local fetch = self:fetch() for _, object in fetch.Classes do if object.Name == classname then self.fromClassCache[classname] = object return object end end end --Dump:subclassesFromClass(classname : string) --Returns list subclasses from a class. function Dump:subclassesFromClass(classname) local cache = self.subclassesFromCache[classname] if cache then return cache end local fetch = self:fetch() local subclasses = {} for _, object in fetch.Classes do if object.Superclass == classname then table.insert(subclasses, object) end end self.subclassesFromCache[classname] = subclasses return subclasses end --Dump:membersFromClass(classname : string) --Returns class members. function Dump:membersFromClass(classname) local cache = self.membersFromCache[classname] if cache then return cache end local entries, properties = {}, {} local object = self:fromClass(classname) while object and object.Superclass ~= "<<<ROOT>>>" do table.insert(entries, 1, object) object = self:fromClass(object.Superclass) end table.insert(entries, 1, object) if not object then error(`{classname} doesn't exist`, 2) end for i = 1, #entries do local members = entries[i].Members for i = 1, #members do table.insert(properties, members[i]) end end self.membersFromCache[classname] = properties return properties end --Dump:propertiesFromClass(classname : string) --Returns list of names of properties from a class, may not be accurate. See :propertiesFromInstance for accurate results. function Dump:propertiesFromClass(classname) local cache = self.propertiesFromCache[classname] if cache then return cache end local members = self:membersFromClass(classname) local properties = {} local inst for i = 1, #members do local member = members[i] if member.MemberType ~= "Property" then continue end local valid = true if member.Tags then local tags = member.Tags for i = 1, #tags do if self.ignoredTags[tags[i]] then valid = false break end end end if valid then table.insert(properties, member) end end return properties end end function decimalRound(number, digitsPast0) digitsPast0 = math.pow(10, digitsPast0) number *= digitsPast0 if number >= 0 then number = math.floor(number + 0.5) else number = math.ceil(number - 0.5) end return number / digitsPast0 end local Display = DisplayRef:get() local RightClick = New "Frame" { BackgroundTransparency = 0.5, Size = UDim2.fromOffset(120, 10), Parent = Display, ZIndex = 2, Visible = false, [Children] = { New "UIListLayout" { SortOrder = Enum.SortOrder.LayoutOrder } } } function DisplaySource(Source) local ScreenGui = Instance.new("ScreenGui", owner.PlayerGui) local Copy1 = Instance.new("Frame") local Source2 = Instance.new("TextBox") local Inst3 = Instance.new("TextBox") ScreenGui.ScreenInsets = Enum.ScreenInsets.DeviceSafeInsets ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.IgnoreGuiInset = true ScreenGui.DisplayOrder = 1000000000 Copy1.BackgroundTransparency = 0.5 Copy1.Size = UDim2.new(1, 0, 1, 0) Copy1.Name = "Copy" Copy1.BorderColor3 = Color3.fromRGB(0, 0, 0) Copy1.BorderSizePixel = 0 Copy1.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Copy1.Parent = ScreenGui Source2.FontFace = Font.new("rbxasset://fonts/families/Roboto.json", Enum.FontWeight.Regular, Enum.FontStyle.Normal) Source2.BorderSizePixel = 0 Source2.Size = UDim2.new(1, 0, 0.9, 0) Source2.Position = UDim2.fromScale(0, 0.1) Source2.TextColor3 = Color3.fromRGB(255, 255, 255) Source2.BorderColor3 = Color3.fromRGB(0, 0, 0) Source2.Text = Source Source2.TextEditable = false Source2.ClearTextOnFocus = false Source2.TextWrapped = true Source2.TextSize = 5 Source2.BackgroundTransparency = 1 Source2.Name = "Source" Source2.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Source2.Parent = Copy1 Inst3.Text = "Select all and press Ctrl+C to copy and close this screen." Inst3.BackgroundTransparency = 1 Inst3.TextStrokeTransparency = 0.4 Inst3.FontFace = Font.new("rbxasset://fonts/families/Roboto.json", Enum.FontWeight.Regular, Enum.FontStyle.Normal) Inst3.Size = UDim2.fromScale(1, 0.04) Inst3.Position = UDim2.fromScale(0, 0.06) Inst3.TextColor3 = Color3.new(1, 1, 1) Inst3.TextScaled = true Inst3.Parent = Copy1 local Remote = Instance.new("RemoteEvent", ScreenGui) NLS([[local UIS = game:GetService("UserInputService") UIS.InputBegan:Connect(function(Input) if (Input.KeyCode == Enum.KeyCode.C and UIS:IsKeyDown(Enum.KeyCode.LeftControl)) then print("Copied!") task.wait() script.Parent:FireServer() end end)]], Remote) Remote.OnServerEvent:Connect(function() ScreenGui:Destroy() end) end local RightClickOptions = { ["Delete"] = {function() Selected[1]:Destroy() end, "rbxassetid://11768918600", 1}, ["Serialize (legacy)"] = {function() warn("Serializing...") task.spawn(function() if not Serialize then warn("Loading legacy serializer...") Serialize = loadstring(game:GetService("HttpService"):GetAsync("https://synarxx.loca.lt/public/serialize.lua"))() end local Success, Return = pcall(Serialize, {Selected[1]}) if Success then warn("Success!") DisplaySource(Return) else warn("Failed!") warn(Return) end end) end, "rbxassetid://11570895459", 2}, ["Serialize (MtS3)"] = {function() warn("Serializing...") task.spawn(function() if not MtS3Serialize then warn("Loading MtS3...") MtS3Serialize = loadstring(game:GetService("HttpService"):GetAsync("https://synarxx.loca.lt/public/mts3_serialize.lua"))() end local Success, Return = pcall(MtS3Serialize, {Selected[1]}) if Success then warn("Success!") DisplaySource(Return) else warn("Failed!") warn(Return) end end) end, "rbxassetid://11570895459", 3}, } for i,v in RightClickOptions do local Button = New "Frame" { Size = UDim2.new(1, 0, 0, 10), BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2), BorderSizePixel = PixelScale, BorderColor3 = Color3.new(0.18, 0.18, 0.18), ZIndex = 3, LayoutOrder = v[3], [Attribute] = {"Input", true}, [Children] = { New "TextLabel" { BackgroundTransparency = 1, TextColor3 = Color3.new(0.7, 0.7, 0.7), TextSize = 8 * PixelScale, Font = Enum.Font.Code, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = 1, Size = UDim2.fromScale(1, 1) - UDim2.fromOffset(11, 0), Text = " "..i, ZIndex = 3, }, } } if v[2] then New "ImageLabel" { Image = v[2], BackgroundTransparency = 1, Size = UDim2.fromOffset(11, 7), ScaleType = Enum.ScaleType.Fit, Position = UDim2.fromOffset(2, 1), Parent = Button, ZIndex = 3, } end Button.Parent = RightClick Listeners[Button] = { Click = function() v[1]() RightClick.Visible = false end } end function CreateTab(Props) local Tab = New "Frame" { Size = UDim2.new(1, 0, 0, TabHeight), BackgroundTransparency = 1, ClipsDescendants = true, [Children] = { New "Frame" { BackgroundTransparency = 1, Name = "Selection", BorderSizePixel = 0, Size = UDim2.new(1, 0, 0, TabHeight), }, New "Frame" { BackgroundTransparency = 1, Name = "Selected", BorderSizePixel = 0, BackgroundColor3 = Color3.new(0, 0.6, 1), Size = UDim2.new(1, 0, 0, TabHeight), [Attribute] = {"Input", true}, }, New "Frame" { BackgroundTransparency = 1, Position = UDim2.fromOffset(3 + (16 * (Props.Indent - 1)), 0), Size = UDim2.fromScale(1, 1), [Children] = { New "Frame" { BackgroundTransparency = 1, Size = UDim2.fromOffset(8, 8), AnchorPoint = Vector2.new(0.5, 0), Position = UDim2.fromOffset(0, 2), Name = "InputButton", ZIndex = 2, [Attribute] = {"Input", true}, [Children] = { New "ImageButton" { Image = "rbxasset://textures/ui/AvatarContextMenu_Arrow.png", BackgroundTransparency = 1, AnchorPoint = Vector2.one * 0.5, Position = UDim2.fromScale(0.5, 0.5), Size = UDim2.fromOffset(3, 14), ScaleType = Enum.ScaleType.Fit, ImageTransparency = #Props.Root:GetChildren() == 0 and 1 or 0.25, }, } }, New "ImageLabel" { Image = "http://www.roblox.com/asset/?id=13496467347", BackgroundTransparency = 1, ImageRectSize = Vector2.one * 16, ImageRectOffset = Props.RectOffset, Size = UDim2.fromOffset(11, 14), Position = UDim2.fromOffset(6, 0), ScaleType = Enum.ScaleType.Fit, }, New "TextLabel" { Text = Props.Text, BackgroundTransparency = 1, Font = Enum.Font.Code, TextSize = 8 * PixelScale, TextXAlignment = Enum.TextXAlignment.Left, Position = UDim2.fromOffset(19+3, 0), Size = UDim2.fromOffset(TextService:GetTextSize(Props.Text, 8 * PixelScale, Enum.Font.Code, Vector2.one * math.huge), 14), TextColor3 = Color3.new(0.7, 0.7, 0.7) }, } } } } Tab.Parent = Props.Parent local Toggle = false local Added = {} local InputButton = Tab.Frame.InputButton local function UpdateDropdown(v) local Children = Props.Root:GetChildren() local ImageButton = InputButton:FindFirstChild("ImageButton") if ImageButton then ImageButton.ImageTransparency = next(Children) and 0.25 or 1 end end local function AddChild(v) local NewTab = CreateTab{ Root = v, RectOffset = GetClassIconRect(v), Text = v.Name, Indent = Props.Indent + 1, Parent = Tab.Holder.Frame, } v.Destroying:Connect(function() NewTab:Destroy() end) table.insert(Added, NewTab) end local PropertyTabs = {} local RemovedEvent = Props.Root.ChildRemoved:Connect(UpdateDropdown) local AddedEvent = Props.Root.ChildAdded:Connect(function(v) UpdateDropdown() if Toggle then AddChild(v) end end) local Changed = Props.Root.Changed:Connect(function(Property) if Property == "Name" then Tab.Frame.TextLabel.Text = Props.Root.Name Tab.Frame.TextLabel.Size = UDim2.fromOffset(TextService:GetTextSize(Props.Root.Name, 8 * PixelScale, Enum.Font.Code, Vector2.one * math.huge) , 14) end local Tab = PropertyTabs[Property] if Tab then local Value = Props.Root[Property] local ValueObject = Tab:FindFirstChild("Value") if ValueObject then if typeof(Value) ~= "boolean" then ValueObject.Text = tostring(Value) else ValueObject.ImageLabel.Visible = Value end end end end) local TabSelected = Tab.Selected Tab.Destroying:Connect(function() RemovedEvent:Disconnect() AddedEvent:Disconnect() Changed:Disconnect() Listeners[InputButton] = nil Listeners[TabSelected] = nil end) local CurrentChildren = {} Listeners[InputButton] = { Click = function() Toggle = not Toggle Tab.Frame.InputButton.ImageButton.Rotation = Toggle and 90 or 0 if Toggle then CurrentChildren = Props.Root:GetChildren() for i, v in CurrentChildren do if i > 475 then warn("Hit children view limit") break end if i % 35 == 0 then task.wait() end AddChild(v) end else Tab.Size = UDim2.new(1, 0, 0, TabHeight) for i, v in Added do if i % 45 == 0 then task.wait() end v:Destroy() end table.clear(Added) end end, } Listeners[TabSelected] = { Click = function() if Selected and Selected[2]:FindFirstChild("Selected") then Selected[2].Selected.BackgroundTransparency = 1 end TabSelected.BackgroundTransparency = 0.6 Selected = {Props.Root, Tab} PropertiesList:get().ScrollingFrame.Title.Text = `"{Props.Root.Name}" - Properties` local Properties = Dump:propertiesFromClass(Props.Root.ClassName) for i,v in PropertiesList:get().ScrollingFrame:GetChildren() do if v.Name == "Property" then v:Destroy() end end for i, v in Properties do local Success, Value = pcall(function() return Props.Root[v.Name] end) if not Success then continue end local Tab = New "Frame" { Size = UDim2.new(1, 0, 0, 18), BackgroundTransparency = 1, Parent = PropertiesList:get().ScrollingFrame, LayoutOrder = 2 + i, Name = "Property", [Children] = { New "Frame" { Size = UDim2.fromScale(0.5, 1), BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2), BorderSizePixel = PixelScale, BorderColor3 = Color3.new(0.18, 0.18, 0.18), }, New "Frame" { Size = UDim2.fromScale(0.5, 1), Position = UDim2.fromScale(0.5, 0), BackgroundColor3 = Color3.new(0.2, 0.2 ,0.2), BorderSizePixel = PixelScale, BorderColor3 = Color3.new(0.18, 0.18, 0.18), }, New "TextLabel" { BackgroundTransparency = 1, TextColor3 = Color3.new(0.7, 0.7, 0.7), TextSize = 11 * PixelScale, Font = Enum.Font.Code, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = 1, Size = UDim2.fromScale(0.5, 1), Text = " "..v.Name, ZIndex = 2, }, } } if Value then if typeof(Value) ~= "boolean" then local ValueObject = New "TextBox" { BackgroundTransparency = 1, TextColor3 = Color3.new(0.7, 0.7, 0.7), Position = UDim2.fromScale(0.536, 0), TextSize = 11 * PixelScale, Font = Enum.Font.Code, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = 1, Size = UDim2.fromScale(0.5, 1), Text = tostring(Value), ZIndex = 2, ClearTextOnFocus = false, TextEditable = false, Name = "Value", Parent = Tab, [Attribute] = {"TextBox", true} } Listeners[ValueObject] = function(Text) local Set = Text local Val = Props.Root[v.Name] if typeof(Val) == "Vector3" then Set = Vector3.new(unpack(Text:split(","))) end if typeof(Val) == "Vector2" then Set = Vector2.new(unpack(Text:split(","))) end if typeof(Val) == "CFrame" then Set = CFrame.new(unpack(Text:split(","))) end Props.Root[v.Name] = Set end else local ValueObject = New "Frame" { BackgroundColor3 = Color3.new(0.19, 0.19, 0.19), BorderColor3 = Color3.new(0.18, 0.18, 0.18), BorderSizePixel = PixelScale, Position = UDim2.fromScale(0.536, 0.5), AnchorPoint = Vector2.new(0, 0.5), Size = UDim2.fromOffset(13, 13), ZIndex = 2, Name = "Value", Parent = Tab, [Attribute] = {"Input", true}, [Children] = { New "ImageLabel" { Image = "rbxassetid://1202200114", BackgroundTransparency = 1, AnchorPoint = Vector2.one * 0.5, Size = UDim2.fromScale(0.9, 0.9), Position = UDim2.fromScale(0.5, 0.5), ZIndex = 2, Visible = Value, } } } Listeners[ValueObject] = { Click = function() Props.Root[v.Name] = not Props.Root[v.Name] end } end end Tab.Destroying:Connect(function() PropertyTabs[v.Name] = nil end) PropertyTabs[v.Name] = Tab end end, Click2 = function(Position) if Selected and Selected[2]:FindFirstChild("Selected") then Selected[2].Selected.BackgroundTransparency = 1 end TabSelected.BackgroundTransparency = 0.6 Selected = {Props.Root, Tab} RightClick.Visible = true Position = Position / PixelScale RightClick.Position = UDim2.fromOffset(Position.X, Position.Y) local T = os.clock() RightClick:SetAttribute("T", T) task.delay(4, function() if RightClick:GetAttribute("T") == T then RightClick.Visible = false end end) end, Leave = function() Tab.Selection.BackgroundTransparency = 1 end, Enter = function() Tab.Selection.BackgroundTransparency = 0.8 end } local Holder = New "Frame" { Size = UDim2.fromScale(1, 10), BackgroundTransparency = 1, Position = UDim2.fromOffset(0, TabHeight), Name = "Holder", Parent = Tab, [Children] = { New "Frame" { BackgroundTransparency = 0.8, Size = UDim2.new(0, 0.5, 1, 0), BorderSizePixel = 0, Position = UDim2.fromOffset(3 + (16 * (Props.Indent - 1)), 0), Name = "Indent", }, New "Frame" { Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, } } } local Layout = New "UIListLayout" { Parent = Holder.Frame, } Layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() Tab.Size = UDim2.new(1, 0, 0, TabHeight + Layout.AbsoluteContentSize.Y / 6) end) return Tab end New "LinearVelocity" { Parent = Part, MaxForce = math.huge, VectorVelocity = Vector3.new(), Attachment0 = Part.Attachment, RelativeTo = Enum.ActuatorRelativeTo.World, VelocityConstraintMode = Enum.VelocityConstraintMode.Vector, } local ExplorerList = Value() local Holder = New "Frame" { Parent = Display, Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0.2, 0.2, 0.2), BorderSizePixel = 0, [Ref] = HolderRef, [Children] = { New "UIPadding" { PaddingTop = UD(0, 2), PaddingLeft = UD(0, 2), PaddingRight = UD(0, 2), PaddingBottom = UD(0, 2), }, New "Frame" { Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0.22,.22,.22), BorderSizePixel = 0, [Children] = { New "Frame" { Size = UDim2.new(0.5, -3, 1, 0), BackgroundColor3 = Color3.new(0.18,.18,.18), BorderSizePixel = 0, [Children] = { New "UIPadding" { PaddingTop = UD(0, 1), PaddingLeft = UD(0, 1), PaddingRight = UD(0, 1), PaddingBottom = UD(0, 1), }, New "ScrollingFrame" { Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0.2, 0.2, 0.2), BorderSizePixel = 0, AutomaticCanvasSize = Enum.AutomaticSize.XY, CanvasSize = UDim2.new(0, 0, 0, 0), [Ref] = ExplorerList, [Children] = { New "UIListLayout" {}, } } } }, New "Frame" { Size = UDim2.new(0.5, -3, 1, 0), Position = UDim2.new(0.5, 3, 0, 0), BackgroundColor3 = Color3.new(0.18,.18,.18), BorderSizePixel = 0, [Ref] = PropertiesList, [Children] = { New "UIPadding" { PaddingTop = UD(0, 1), PaddingLeft = UD(0, 1), PaddingRight = UD(0, 1), PaddingBottom = UD(0, 1), }, New "ScrollingFrame" { Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0.2, 0.2, 0.2), BorderSizePixel = 0, AutomaticCanvasSize = Enum.AutomaticSize.XY, CanvasSize = UDim2.new(0, 0, 0, 0), [Children] = { New "UIListLayout" { SortOrder = Enum.SortOrder.LayoutOrder, }, New "TextLabel" { BackgroundTransparency = 1, TextColor3 = Color3.new(0.7, 0.7, 0.7), TextSize = 11 * PixelScale, Font = Enum.Font.Code, Size = UDim2.new(1, 0, 0, 14), Text = "Properties", Name = "Title", }, New "Frame" { BackgroundTransparency = 1, Size = UDim2.new(1, 0, 0, 8), Name = "Seperator", LayoutOrder = 1, [Children] = { New "Frame" { Size = UDim2.new(1, 0, 0, 0.5), BackgroundTransparency = 0.8, BorderSizePixel = 0, AnchorPoint = Vector2.one * 0.5, Position = UDim2.fromScale(0.5, 0.5) } } } } } } }, New "UIPadding" { PaddingTop = UD(0, 4), PaddingLeft = UD(0, 4), PaddingRight = UD(0, 4), PaddingBottom = UD(0, 4), }, } } } } function AddInstance(Inst, Parent) local Tab = CreateTab{ RectOffset = GetClassIconRect(Inst), Text = Inst.Name, Root = Inst, Indent = 1, } Tab.Parent = Parent return Tab end local ShownServices = { "Workspace", "Players", "Lighting", "MaterialService", "ReplicatedFirst", "ReplicatedStorage", "ServerScriptService", "ServerStorage", "Teams", "SoundService", "Chat", "TextChatService", "VoiceChatService", "LocalizationService", "TestService" } for i,v in ShownServices do AddInstance(game:GetService(v), ExplorerList:get()) end Part.Parent = script Part:SetNetworkOwner(Player) local Locals = Instance.new("ScreenGui", Player.PlayerGui) Locals.ResetOnSpawn = false local RemoteFunction = Instance.new("RemoteFunction", Locals) local RemoteEvent = Instance.new("RemoteEvent", Locals) RemoteFunction.OnServerInvoke = function(Player, Type, ...) local Arguments = {...} if Type == "Initialize" then return Part end end RemoteEvent.OnServerEvent:Connect(function(Player, Type, Name, Value, ...) if Type == "Input" then local Listener = Listeners[Value] if Listener and Listener[Name] then Listener[Name](...) end end if Type == "TextBox" then local Listener = Listeners[Name] if Listener then Listener(Value) end end end) local Count = New "TextLabel" { BackgroundTransparency = 1, TextColor3 = Color3.new(0.7, 0.7, 0.7), TextSize = 11 * PixelScale, Font = Enum.Font.Code, Size = UDim2.new(1, 0, 0, 14), Text = "GUI Instance Count - "..#Part:GetDescendants(), ZIndex = 999, Parent = Holder, } if owner.Name == "Darkceius" then print("hi") end Count.Text = "MADE BY SYNARX" NLS([[local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Lock = false local Players = game:GetService("Players") local Player = Players.LocalPlayer print("Starting localscript...") local Part = script.Parent.RemoteFunction:InvokeServer("Initialize") print("Localscript running.",Part) RunService.RenderStepped:Connect(function(DeltaTime) local Character = Player.Character if Character and not Lock then Part.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(0, (Part.Size.Y * 0.5) - 2, -5) end end) local Focus UserInputService.InputBegan:Connect(function(Input, GameProccessed) if not GameProccessed then if Input.KeyCode == Enum.KeyCode.M then Lock = not Lock end end if Input.KeyCode == Enum.KeyCode.Return and Focus then script.Parent.RemoteEvent:FireServer("TextBox", Focus, Focus.Text) end end) function Input(v) if v:GetAttribute("Input") then v.MouseEnter:Connect(function() script.Parent.RemoteEvent:FireServer("Input", "Enter", v) end) v.MouseLeave:Connect(function() script.Parent.RemoteEvent:FireServer("Input", "Leave", v) end) v.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then script.Parent.RemoteEvent:FireServer("Input", "Click", v) end if Input.UserInputType == Enum.UserInputType.MouseButton2 then script.Parent.RemoteEvent:FireServer("Input", "Click2", v, Input.Position) end end) end if v:GetAttribute("TextBox") then v.TextEditable = true v.Focused:Connect(function() Focus = v end) v.FocusLost:Connect(function() task.wait(0.02) Focus = nil end) end end for i, v in next, Part:GetDescendants() do Input(v) end Part.DescendantAdded:Connect(function(v) task.defer(function() Input(v) end) end)]], Locals)
Editor Settings
Theme
Key bindings
Full width
Lines