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)