Run it
Copy the script and paste it into your executor.
Rayfield = (:())()
Players = :()
RunService = :()
UserInputService = :()
TweenService = :()
Workspace = :()
ReplicatedStorage = :()
Lighting = :()
SoundService = :()
CollectionService = :()
HttpService = :()
Player = Players.LocalPlayer
Mouse = Player:()
Camera = Workspace.CurrentCamera
SelectedObject =
IsInspecting =
AutoUpdate =
UpdateInterval =
InspectorData = {}
CopiedData =
HighlightBox =
SelectionEnabled =
LastUpdate =
Settings = {
SelectHotkey = .KeyCode.Q,
InspectHotkey = .KeyCode.E,
ClearHotkey = .KeyCode.X,
AutoRefresh = ,
RefreshRate = ,
ShowHighlight = ,
HighlightColor = .(, , ),
OutlineColor = .(, , ),
DetailLevel = ,
ShowDistanceRealtime = ,
HighlightFillTransparency =
}
(func, ...)
success, result = (func, ...)
success result
(num, decimals)
decimals = decimals
(num) ~= (num)
num == .huge
num ~= num
.( .. decimals .. , num)
(vec, decimals)
decimals = decimals
(vec) ~=
fmt = .. decimals ..
.( .. fmt .. .. fmt .. .. fmt, vec.X, vec.Y, vec.Z)
(vec)
(vec) ~=
.(, vec.X, vec.Y, vec.Z)
(vec)
(vec) ~=
.(, vec.X, vec.Y, vec.Z)
(vec)
(vec) ~=
.(, vec.X, vec.Y)
(cf)
(cf) ~=
x, y, z = cf:()
.(,
cf.Position.X, cf.Position.Y, cf.Position.Z,
.(x), .(y), .(z))
(cf)
(cf) ~=
rx, ry, rz = cf:()
ox, oy, oz = cf:()
{
Position = (cf.Position),
LookVector = (cf.LookVector),
RightVector = (cf.RightVector),
UpVector = (cf.UpVector),
EulerAngles = .(, .(rx), .(ry), .(rz)),
Orientation = .(, .(ox), .(oy), .(oz))
}
(color)
(color) ~=
r, g, b = .(color.R * ), .(color.G * ), .(color.B * )
h, s, v = .(color)
.(,
r, g, b, r, g, b, h * , s * , v * )
(bc)
(bc) ~=
.(, bc.Name, bc.Number)
(udim)
(udim) ~=
.(,
udim.X.Scale, udim.X.Offset, udim.Y.Scale, udim.Y.Offset)
(bool)
(bool) ==
bool
(bool)
(seconds)
(seconds) ~=
hours = .(seconds / )
mins = .((seconds % ) / )
secs = .(seconds % )
hours >
.(, hours, mins, secs)
.(, mins, secs)
(bytes)
(bytes) ~=
bytes < .(, bytes)
bytes < * .(, bytes / )
bytes < * * .(, bytes / ( * ))
.(, bytes / ( * * ))
(obj)
obj
player = Players:(obj)
player
obj:()
obj:()
obj:()
obj:()
obj.PrimaryPart
obj:()
obj:()
obj:()
obj:()
obj.Shape == .PartType.Ball
obj.Shape == .PartType.Cylinder
obj.Shape == .PartType.Block
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:()
obj:() .. obj.ClassName ..
obj:()
obj:()
obj:()
obj:()
.. obj.ClassName
(obj)
Player.Character Player.Character:()
,
playerPos = Player.Character.HumanoidRootPart.Position
objPos
obj:()
objPos = obj.Position
obj:() obj.PrimaryPart
objPos = obj.PrimaryPart.Position
obj:()
success, cf, size = (() obj:() )
success objPos = cf.Position ,
obj:()
objPos = obj.WorldPosition
,
dist = (playerPos - objPos).Magnitude
.(, dist, dist * ), dist
(obj)
Player.Character Player.Character:()
playerPos = Player.Character.HumanoidRootPart.Position
objPos
obj:()
objPos = obj.Position
obj:()
success, cf = (() obj:() )
success objPos = cf.Position
direction = (objPos - playerPos).Unit
angle = .(.(direction.X, direction.Z))
compass =
angle >= - angle < compass =
angle >= angle < compass =
angle >= angle < compass =
angle >= angle < compass =
angle >= angle < - compass =
angle >= - angle < - compass =
angle >= - angle < - compass =
compass =
vertDir =
direction.Y > vertDir =
direction.Y < - vertDir =
.(, compass, vertDir, angle)
(obj, deep)
deep
#obj:()
#obj:()
(obj)
depth =
current = obj
current.Parent
depth = depth +
current = current.Parent
depth
(obj)
baseSize =
descendants = obj:()
total = baseSize
_, child (descendants)
total = total +
child:() total = total +
child:() total = total +
child:() total = total +
child:() child:() total = total +
child:() total = total +
child:() total = total +
child:() child:() total = total +
(total)
(obj)
obj:()
success, owner = (()
obj:()
)
success
owner
owner.Name ..
(obj)
attrs = obj:()
(attrs) == {}
result = {}
name, value (attrs)
.(result, {
Name = name,
Value = (value),
Type = (value)
})
result
(obj)
CollectionService:(obj)
(obj)
classes = {}
_, child (obj:())
className = child.ClassName
classes[className] = (classes[className] ) +
classes
(obj)
HighlightBox
HighlightBox:()
HighlightBox =
Settings.ShowHighlight
obj
highlight = .()
highlight.Name = .. obj.Name
highlight.FillColor = Settings.HighlightColor
highlight.OutlineColor = Settings.OutlineColor
highlight.FillTransparency = Settings.HighlightFillTransparency
highlight.OutlineTransparency =
highlight.DepthMode = .HighlightDepthMode.AlwaysOnTop
obj:() obj:()
highlight.Adornee = obj
highlight.Parent = Player.PlayerGui
HighlightBox = highlight
()
HighlightBox
HighlightBox:()
HighlightBox =
()
HighlightBox Settings.ShowHighlight
HighlightBox.FillColor = Settings.HighlightColor
HighlightBox.OutlineColor = Settings.OutlineColor
HighlightBox.FillTransparency = Settings.HighlightFillTransparency
Window = Rayfield:({
Name = ,
LoadingTitle = ,
LoadingSubtitle = ,
ConfigurationSaving = {
Enabled = ,
FolderName = ,
FileName =
},
Discord = {
Enabled =
},
KeySystem =
})
MainTab = Window:(, )
PlayerTab = Window:(, )
WorldTab = Window:(, )
SettingsTab = Window:(, )
HelpTab = Window:(, )
SelectionSection = MainTab:()
SelectionModeLabel = MainTab:()
MainTab:({
Name = ,
Callback = ()
SelectionEnabled = SelectionEnabled
SelectionModeLabel:( .. (SelectionEnabled ))
Rayfield:({
Title = SelectionEnabled ,
Content = SelectionEnabled ,
Duration =
})
,
})
CurrentSelectionLabel = MainTab:()
ObjectTypeLabel = MainTab:()
DistanceLabel = MainTab:()
DirectionLabel = MainTab:()
MainTab:({
Name = ,
Callback = ()
target = Mouse.Target
target
SelectedObject = target
(target)
CurrentSelectionLabel:( .. target.Name)
ObjectTypeLabel:( .. (target))
dist = (target)
DistanceLabel:( .. dist)
DirectionLabel:( .. (target))
Rayfield:({
Title = ,
Content = target.Name .. .. target.ClassName .. ,
Duration =
})
Rayfield:({
Title = ,
Content = ,
Duration =
})
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject SelectedObject.Parent
SelectedObject = SelectedObject.Parent
(SelectedObject)
CurrentSelectionLabel:( .. SelectedObject.Name)
Rayfield:({
Title = ,
Content = SelectedObject.Name,
Duration =
})
,
})
MainTab:({
Name = ,
Callback = ()
nearestPlayer =
nearestDist = .huge
myPos = Player.Character Player.Character:() Player.Character.HumanoidRootPart.Position
myPos
Rayfield:({Title = , Content = , Duration = })
_, plr (Players:())
plr ~= Player plr.Character plr.Character:()
dist = (plr.Character.HumanoidRootPart.Position - myPos).Magnitude
dist < nearestDist
nearestDist = dist
nearestPlayer = plr
nearestPlayer nearestPlayer.Character
SelectedObject = nearestPlayer.Character
(nearestPlayer.Character)
CurrentSelectionLabel:( .. nearestPlayer.Name .. )
ObjectTypeLabel:()
DistanceLabel:( .. .(, nearestDist))
Rayfield:({
Title = ,
Content = nearestPlayer.Name .. .. .(, nearestDist) .. ,
Duration =
})
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
nearestItem =
nearestDist = .huge
myPos = Player.Character Player.Character:() Player.Character.HumanoidRootPart.Position
myPos
Rayfield:({Title = , Content = , Duration = })
searchLocations = {
Workspace,
Workspace:(),
Workspace:(),
Workspace:(),
Workspace:(),
Workspace:(),
}
_, location (searchLocations)
location
_, item (location:())
item:() (item:() item:())
pos
item:() item:()
pos = item.Handle.Position
item:() item.PrimaryPart
pos = item.PrimaryPart.Position
item:()
success, cf = (() item:() )
success pos = cf.Position
pos
dist = (pos - myPos).Magnitude
dist < nearestDist
nearestDist = dist
nearestItem = item
nearestItem
SelectedObject = nearestItem
(nearestItem)
CurrentSelectionLabel:( .. nearestItem.Name)
Rayfield:({
Title = ,
Content = nearestItem.Name .. .. .(, nearestDist) .. ,
Duration =
})
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject =
()
CurrentSelectionLabel:()
ObjectTypeLabel:()
DistanceLabel:()
DirectionLabel:()
Rayfield:({Title = , Content = , Duration = })
,
})
BasicSection = MainTab:()
NameLabel = MainTab:()
ClassLabel = MainTab:()
FullPathLabel = MainTab:()
ParentLabel = MainTab:()
ChildrenLabel = MainTab:()
DescendantsLabel = MainTab:()
MemoryLabel = MainTab:()
DepthLabel = MainTab:()
TransformSection = MainTab:()
PositionLabel = MainTab:()
RotationLabel = MainTab:()
OrientationLabel = MainTab:()
SizeLabel = MainTab:()
VolumeLabel = MainTab:()
LookVectorLabel = MainTab:()
UpVectorLabel = MainTab:()
RightVectorLabel = MainTab:()
PivotLabel = MainTab:()
PhysicsSection = MainTab:()
AnchoredLabel = MainTab:()
CanCollideLabel = MainTab:()
CanTouchLabel = MainTab:()
CanQueryLabel = MainTab:()
MassLabel = MainTab:()
DensityLabel = MainTab:()
VelocityLabel = MainTab:()
AngularVelocityLabel = MainTab:()
RootPartLabel = MainTab:()
CollisionGroupLabel = MainTab:()
NetworkOwnerLabel = MainTab:()
AppearanceSection = MainTab:()
ColorLabel = MainTab:()
BrickColorLabel = MainTab:()
MaterialLabel = MainTab:()
MaterialVariantLabel = MainTab:()
TransparencyLabel = MainTab:()
ReflectanceLabel = MainTab:()
CastShadowLabel = MainTab:()
SurfaceTypesLabel = MainTab:()
HumanoidSection = MainTab:()
HealthLabel = MainTab:()
MaxHealthLabel = MainTab:()
WalkSpeedLabel = MainTab:()
JumpPowerLabel = MainTab:()
JumpHeightLabel = MainTab:()
HipHeightLabel = MainTab:()
StateLabel = MainTab:()
SitLabel = MainTab:()
DisplayNameLabel = MainTab:()
RigTypeLabel = MainTab:()
AttributesSection = MainTab:()
AttributesLabel = MainTab:()
TagsLabel = MainTab:()
HierarchySection = MainTab:()
ChildClassesLabel = MainTab:()
CopySection = MainTab:()
MainTab:({
Name = ,
Callback = ()
CopiedData ~=
(CopiedData)
Rayfield:({
Title = ,
Content = ,
Duration =
})
Rayfield:({
Title = ,
Content = ,
Duration =
})
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject SelectedObject:()
pos = SelectedObject.Position
((pos))
Rayfield:({Title = , Content = .. (pos), Duration = })
SelectedObject SelectedObject:()
success, cf = (() SelectedObject:() )
success
((cf.Position))
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject SelectedObject:()
cf = SelectedObject.CFrame
x, y, z = cf:()
code = .(,
cf.Position.X, cf.Position.Y, cf.Position.Z, x, y, z)
(code)
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject
path = SelectedObject:()
( .. path)
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject SelectedObject:()
c = SelectedObject.Color
(.(, c.R, c.G, c.B))
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject SelectedObject:()
((SelectedObject.Size))
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
MainTab:({
Name = ,
Callback = ()
SelectedObject
attrs = SelectedObject:()
(attrs)
json = HttpService:(attrs)
(json)
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
Rayfield:({Title = , Content = , Duration = })
,
})
LocalPlayerSection = PlayerTab:()
PNameLabel = PlayerTab:( .. Player.Name)
PDisplayLabel = PlayerTab:( .. Player.DisplayName)
PIdLabel = PlayerTab:( .. Player.UserId)
PAgeLabel = PlayerTab:( .. Player.AccountAge .. )
PTeamLabel = PlayerTab:( .. (Player.Team Player.Team.Name ))
PMembershipLabel = PlayerTab:( .. (Player.MembershipType))
PFollowLabel = PlayerTab:( .. (Player.FollowUserId > (Player.FollowUserId) ))
CharSection = PlayerTab:()
CharPosLabel = PlayerTab:()
CharVelocityLabel = PlayerTab:()
CharSpeedLabel = PlayerTab:()
CharHealthLabel = PlayerTab:()
CharWalkLabel = PlayerTab:()
CharJumpLabel = PlayerTab:()
CharLookLabel = PlayerTab:()
CharMoveLabel = PlayerTab:()
CharStateLabel = PlayerTab:()
CharFloorLabel = PlayerTab:()
CamSection = PlayerTab:()
CamPosLabel = PlayerTab:()
CamLookLabel = PlayerTab:()
CamFOVLabel = PlayerTab:()
CamTypeLabel = PlayerTab:()
CamFocusLabel = PlayerTab:()
CamSubjectLabel = PlayerTab:()
CamDistLabel = PlayerTab:()
ToolsSection = PlayerTab:()
EquippedToolLabel = PlayerTab:()
BackpackLabel = PlayerTab:()
PlayerTab:({
Name = ,
Callback = ()
Player.Character Player.Character:()
pos = Player.Character.HumanoidRootPart.Position
((pos))
Rayfield:({Title = , Content = , Duration = })
,
})
PlayerTab:({
Name = ,
Callback = ()
cf = Camera.CFrame
code = .(,
cf.Position.X, cf.Position.Y, cf.Position.Z,
cf:())
(code)
Rayfield:({Title = , Content = , Duration = })
,
})
GameSection = WorldTab:()
GameIdLabel = WorldTab:( .. .PlaceId)
GameVersionLabel = WorldTab:( .. .PlaceVersion)
JobIdLabel = WorldTab:( .. .JobId)
CreatorLabel = WorldTab:( .. (.CreatorType == .CreatorType.User ) .. .. .CreatorId)
ServerSection = WorldTab:()
PlayerCountLabel = WorldTab:( .. #Players:() .. .. Players.MaxPlayers)
ServerTimeLabel = WorldTab:()
ServerAgeLabel = WorldTab:()
EnvironmentSection = WorldTab:()
LightingTimeLabel = WorldTab:( .. Lighting.TimeOfDay)
AmbientLabel = WorldTab:( .. (Lighting.Ambient))
BrightnessLabel = WorldTab:( .. Lighting.Brightness)
FogLabel = WorldTab:( .. Lighting.FogStart .. .. Lighting.FogEnd)
GravityLabel = WorldTab:( .. Workspace.Gravity)
WorldTab:({
Name = ,
Callback = ()
info = .(, .PlaceId, .PlaceVersion, .JobId, .CreatorId, #Players:(), Players.MaxPlayers)
(info)
Rayfield:({Title = , Content = , Duration = })
,
})
InspectorSettingsSection = SettingsTab:()
SettingsTab:({
Name = ,
CurrentValue = Settings.AutoRefresh,
Flag = ,
Callback = (Value)
Settings.AutoRefresh = Value
,
})
SettingsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = Settings.RefreshRate,
Flag = ,
Callback = (Value)
Settings.RefreshRate = Value
,
})
HighlightSettingsSection = SettingsTab:()
SettingsTab:({
Name = ,
CurrentValue = Settings.ShowHighlight,
Flag = ,
Callback = (Value)
Settings.ShowHighlight = Value
Value
()
SelectedObject
(SelectedObject)
,
})
SettingsTab:({
Name = ,
Color = Settings.HighlightColor,
Flag = ,
Callback = (Value)
Settings.HighlightColor = Value
()
})
SettingsTab:({
Name = ,
Color = Settings.OutlineColor,
Flag = ,
Callback = (Value)
Settings.OutlineColor = Value
()
})
SettingsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = Settings.HighlightFillTransparency,
Flag = ,
Callback = (Value)
Settings.HighlightFillTransparency = Value
()
,
})
HotkeySettingsSection = SettingsTab:()
SettingsTab:({
Name = ,
CurrentKeybind = ,
HoldToInteract = ,
Flag = ,
Callback = (Keybind)
SelectionEnabled Mouse.Target
SelectedObject = Mouse.Target
(Mouse.Target)
CurrentSelectionLabel:( .. Mouse.Target.Name)
ObjectTypeLabel:( .. (Mouse.Target))
Rayfield:({
Title = ,
Content = Mouse.Target.Name,
Duration =
})
,
})
DetailSettingsSection = SettingsTab:()
SettingsTab:({
Name = ,
Options = {, , },
CurrentOption = {Settings.DetailLevel},
MultipleOptions = ,
Flag = ,
Callback = (Options)
Settings.DetailLevel = Options[]
,
})
UsageSection = HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HotkeyHelpSection = HelpTab:()
HelpTab:()
HelpTab:()
InfoTypesSection = HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
TipsSection = HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
HelpTab:()
()
()
()
(obj)
data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:()
data.Parent = obj.Parent obj.Parent.Name
data.ObjectType = (obj)
data.Children = (obj, )
data.Descendants = (obj, )
data.HierarchyDepth = (obj)
data.EstimatedMemory = (obj)
data.Position = (obj.Position)
data.PositionCode = (obj.Position)
data.CFrame = (obj.CFrame)
data.CFrameDetailed = (obj.CFrame)
data.Orientation = (obj.Orientation)
data.Rotation = (obj.Rotation)
data.Size = (obj.Size)
data.SizeCode = (obj.Size)
data.Volume = (obj.Size.X * obj.Size.Y * obj.Size.Z, ) ..
data.LookVector = (obj.CFrame.LookVector)
data.UpVector = (obj.CFrame.UpVector)
data.RightVector = (obj.CFrame.RightVector)
data.PivotOffset = (obj.PivotOffset)
distStr, distNum = (obj)
data.Distance = distStr
data.DistanceRaw = distNum
data.Direction = (obj)
data.Anchored = (obj.Anchored)
data.CanCollide = (obj.CanCollide)
data.CanTouch = (obj.CanTouch)
data.CanQuery = (obj.CanQuery)
data.Massless = (obj.Massless)
success, mass = (() obj:() )
data.Mass = success (mass, ) ..
data.Density = (obj.CustomPhysicalProperties obj.CustomPhysicalProperties.Density )
data.Friction = obj.CustomPhysicalProperties (obj.CustomPhysicalProperties.Friction)
data.Elasticity = obj.CustomPhysicalProperties (obj.CustomPhysicalProperties.Elasticity)
velocity = obj.AssemblyLinearVelocity
data.Velocity = (velocity)
data.Speed = (velocity.Magnitude, ) ..
data.AngularVelocity = (obj.AssemblyAngularVelocity)
data.RootPart = obj.AssemblyRootPart obj.AssemblyRootPart.Name
data.CollisionGroup = obj.CollisionGroup
data.NetworkOwner = (obj)
data.Color = (obj.Color)
data.ColorCode = .(, obj.Color.R, obj.Color.G, obj.Color.B)
data.BrickColor = (obj.BrickColor)
data.Material = (obj.Material):(, )
data.MaterialVariant = obj.MaterialVariant ~= obj.MaterialVariant
data.Transparency = (obj.Transparency, )
data.Reflectance = (obj.Reflectance, )
data.CastShadow = (obj.CastShadow)
data.TopSurface = (obj.TopSurface):(, )
data.BottomSurface = (obj.BottomSurface):(, )
data.FrontSurface = (obj.FrontSurface):(, )
data.BackSurface = (obj.BackSurface):(, )
data.LeftSurface = (obj.LeftSurface):(, )
data.RightSurface = (obj.RightSurface):(, )
obj:()
data.MeshId = obj.MeshId
data.TextureID = obj.TextureID
data.RenderFidelity = (obj.RenderFidelity):(, )
data.CollisionFidelity = (obj.CollisionFidelity):(, )
data.DoubleSided = (obj.DoubleSided)
obj:()
data.UsePartColor = (obj.UsePartColor)
data.SmoothingAngle = (obj.SmoothingAngle, ) ..
obj:()
data.Shape = (obj.Shape):(, )
data.Attributes = (obj)
data.Tags = (obj)
data.ChildClasses = (obj)
data.HasClickDetector = obj:()
data.HasProximityPrompt = obj:()
data.HasSound = obj:()
data.HasParticles = obj:()
data.HasLight = (obj:() obj:() obj:())
data.HasDecal = obj:()
data.HasTexture = obj:()
data.HasScript = (obj:() obj:())
constraints = {}
_, child (obj:())
child:()
.(constraints, child.ClassName .. .. child.Name)
data.Constraints = #constraints > constraints {}
joints = {}
_, child (obj:())
child:()
.(joints, child.ClassName .. .. child.Name)
data.Joints = #joints > joints {}
data
(obj)
data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:()
data.Parent = obj.Parent obj.Parent.Name
data.ObjectType = (obj)
data.Children = (obj, )
data.Descendants = (obj, )
data.HierarchyDepth = (obj)
data.EstimatedMemory = (obj)
data.PrimaryPart = obj.PrimaryPart obj.PrimaryPart.Name
data.ModelStreamingMode = (obj.ModelStreamingMode):(, )
data.LevelOfDetail = (obj.LevelOfDetail):(, )
success, cf, size = (() obj:() )
success
data.BoundingBoxPosition = (cf.Position)
data.BoundingBoxSize = (size)
data.BoundingBoxVolume = (size.X * size.Y * size.Z, ) ..
data.Position = (cf.Position)
data.CFrame = (cf)
distStr, distNum = (obj)
data.Distance = distStr
data.DistanceRaw = distNum
data.Direction = (obj)
data.BoundingBoxPosition =
data.BoundingBoxSize =
data.BoundingBoxVolume =
data.Position =
data.Distance =
data.Direction =
pivotSuccess, pivot = (() obj:() )
pivotSuccess
data.Pivot = (pivot)
data.Pivot =
massSuccess, mass = (()
totalMass =
_, part (obj:())
part:()
totalMass = totalMass + part:()
totalMass
)
data.TotalMass = massSuccess (mass, ) ..
partCount =
meshCount =
unionCount =
_, descendant (obj:())
descendant:() partCount = partCount +
descendant:() meshCount = meshCount +
descendant:() unionCount = unionCount +
data.PartCount = partCount
data.MeshPartCount = meshCount
data.UnionCount = unionCount
data.TotalBaseParts = partCount + meshCount + unionCount
humanoid = obj:()
humanoid
data.HasHumanoid =
data.Health = (humanoid.Health, ) .. .. (humanoid.MaxHealth, )
data.HealthPercent = ((humanoid.Health / humanoid.MaxHealth) * , ) ..
data.WalkSpeed = (humanoid.WalkSpeed, )
data.JumpPower = (humanoid.JumpPower, )
data.JumpHeight = (humanoid.JumpHeight, )
data.HipHeight = (humanoid.HipHeight, )
data.MaxSlopeAngle = (humanoid.MaxSlopeAngle, ) ..
data.HumanoidState = (humanoid:()):(, )
data.MoveDirection = (humanoid.MoveDirection)
data.Sit = (humanoid.Sit)
data.SeatPart = humanoid.SeatPart humanoid.SeatPart.Name
data.PlatformStand = (humanoid.PlatformStand)
data.AutoRotate = (humanoid.AutoRotate)
data.AutoJumpEnabled = (humanoid.AutoJumpEnabled)
data.DisplayName = humanoid.DisplayName
data.RigType = (humanoid.RigType):(, )
data.NameOcclusion = (humanoid.NameOcclusion):(, )
data.HealthDisplayType = (humanoid.HealthDisplayType):(, )
data.FloorMaterial = (humanoid.FloorMaterial):(, )
hrp = obj:()
hrp
data.HumanoidRootPartPos = (hrp.Position)
data.HumanoidRootPartVelocity = (hrp.AssemblyLinearVelocity)
data.CurrentSpeed = (hrp.AssemblyLinearVelocity.Magnitude, ) ..
head = obj:()
head
data.HeadPosition = (head.Position)
data.HasHumanoid =
player = Players:(obj)
player
data.IsPlayerCharacter =
data.PlayerName = player.Name
data.PlayerDisplayName = player.DisplayName
data.PlayerUserId = (player.UserId)
data.PlayerAccountAge = player.AccountAge ..
data.PlayerTeam = player.Team player.Team.Name
data.PlayerMembership = (player.MembershipType):(, )
data.IsPlayerCharacter =
data.Attributes = (obj)
data.Tags = (obj)
data.ChildClasses = (obj)
data
(obj)
data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:()
data.Parent = obj.Parent obj.Parent.Name
data.ObjectType = (obj)
data.Children = (obj, )
data.Descendants = (obj, )
data.ToolTip = obj.ToolTip ~= obj.ToolTip
data.RequiresHandle = (obj.RequiresHandle)
data.CanBeDropped = (obj.CanBeDropped)
data.ManualActivationOnly = (obj.ManualActivationOnly)
data.Enabled = (obj.Enabled)
handle = obj:()
handle
data.HasHandle =
data.HandlePosition = (handle.Position)
data.HandleSize = (handle.Size)
distStr = (handle)
data.Distance = distStr
data.Direction = (handle)
data.HasHandle =
data.Distance =
data.Direction =
data.Grip = (obj.Grip)
data.GripPos = (obj.GripPos)
data.GripForward = (obj.GripForward)
data.GripRight = (obj.GripRight)
data.GripUp = (obj.GripUp)
data.TextureId = obj.TextureId ~= obj.TextureId
obj.Parent obj.Parent:()
owner = obj.Parent.Parent
owner:()
data.Owner = owner.Name ..
obj.Parent obj.Parent:()
player = Players:(obj.Parent)
player
data.Owner = player.Name ..
data.Owner =
data.Owner =
data.Attributes = (obj)
data.Tags = (obj)
data
(obj)
data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:()
data.Parent = obj.Parent obj.Parent.Name
data.ObjectType = (obj)
data.Health = (obj.Health, )
data.MaxHealth = (obj.MaxHealth, )
data.HealthPercent = ((obj.Health / obj.MaxHealth) * , ) ..
data.WalkSpeed = (obj.WalkSpeed, )
data.JumpPower = (obj.JumpPower, )
data.JumpHeight = (obj.JumpHeight, )
data.HipHeight = (obj.HipHeight, )
data.MaxSlopeAngle = (obj.MaxSlopeAngle, ) ..
data.State = (obj:()):(, )
data.MoveDirection = (obj.MoveDirection)
data.MoveSpeed = (obj.MoveDirection.Magnitude * obj.WalkSpeed, ) ..
data.Sit = (obj.Sit)
data.SeatPart = obj.SeatPart obj.SeatPart.Name
data.PlatformStand = (obj.PlatformStand)
data.AutoRotate = (obj.AutoRotate)
data.AutoJumpEnabled = (obj.AutoJumpEnabled)
data.RequiresNeck = (obj.RequiresNeck)
data.BreakJointsOnDeath = (obj.BreakJointsOnDeath)
data.DisplayName = obj.DisplayName
data.DisplayDistanceType = (obj.DisplayDistanceType):(, )
data.HealthDisplayDistance = (obj.HealthDisplayDistance, )
data.NameDisplayDistance = (obj.NameDisplayDistance, )
data.HealthDisplayType = (obj.HealthDisplayType):(, )
data.NameOcclusion = (obj.NameOcclusion):(, )
data.RigType = (obj.RigType):(, )
data.FloorMaterial = (obj.FloorMaterial):(, )
data.UseJumpPower = (obj.UseJumpPower)
data.EvaluateStateMachine = (obj.EvaluateStateMachine)
accessories = {}
obj.Parent
_, child (obj.Parent:())
child:()
.(accessories, child.Name)
data.Accessories = #accessories > accessories {}
data.AccessoryCount = #accessories
bodyColors = obj.Parent obj.Parent:()
bodyColors
data.HasBodyColors =
data.HeadColor = FormatBrickColor(bodyColors.HeadColor)
data.TorsoColor = FormatBrickColor(bodyColors.TorsoColor)
else
data.HasBodyColors = "❌ No"
end
return data
end
local function InspectSound(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.SoundId = obj.SoundId
data.IsPlaying = FormatBoolean(obj.IsPlaying)
data.IsPaused = FormatBoolean(obj.IsPaused)
data.Playing = FormatBoolean(obj.Playing)
data.Looped = FormatBoolean(obj.Looped)
data.Volume = FormatNumber(obj.Volume, 4)
data.Pitch = FormatNumber(obj.Pitch, 4)
data.PlaybackSpeed = FormatNumber(obj.PlaybackSpeed, 4)
data.TimePosition = FormatTime(obj.TimePosition)
data.TimeLength = FormatTime(obj.TimeLength)
data.Progress = obj.TimeLength > 0 and FormatNumber((obj.TimePosition / obj.TimeLength) * 100, 1) .. "%" or "N/A"
data.RollOffMode = tostring(obj.RollOffMode):gsub("Enum.RollOffMode.", "")
data.RollOffMinDistance = FormatNumber(obj.RollOffMinDistance, 2)
data.RollOffMaxDistance = FormatNumber(obj.RollOffMaxDistance, 2)
data.SoundGroup = obj.SoundGroup and obj.SoundGroup.Name or "None"
return data
end
local function InspectLight(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.Enabled = FormatBoolean(obj.Enabled)
data.Color = FormatColor3(obj.Color)
data.Brightness = FormatNumber(obj.Brightness, 4)
data.Shadows = FormatBoolean(obj.Shadows)
if obj:IsA("PointLight") then
data.Range = FormatNumber(obj.Range, 2) .. " studs"
elseif obj:IsA("SpotLight") then
data.Range = FormatNumber(obj.Range, 2) .. " studs"
data.Angle = FormatNumber(obj.Angle, 2) .. "°"
data.Face = tostring(obj.Face):gsub("Enum.NormalId.", "")
elseif obj:IsA("SurfaceLight") then
data.Range = FormatNumber(obj.Range, 2) .. " studs"
data.Angle = FormatNumber(obj.Angle, 2) .. "°"
data.Face = tostring(obj.Face):gsub("Enum.NormalId.", "")
end
return data
end
local function InspectParticleEmitter(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.Enabled = FormatBoolean(obj.Enabled)
data.Texture = obj.Texture
data.Rate = FormatNumber(obj.Rate, 2) .. " particles/sec"
data.Lifetime = FormatNumber(obj.Lifetime.Min, 2) .. " - " .. FormatNumber(obj.Lifetime.Max, 2) .. " sec"
data.Speed = FormatNumber(obj.Speed.Min, 2) .. " - " .. FormatNumber(obj.Speed.Max, 2) .. " studs/s"
data.Rotation = FormatNumber(obj.Rotation.Min, 2) .. " - " .. FormatNumber(obj.Rotation.Max, 2) .. "°"
data.RotSpeed = FormatNumber(obj.RotSpeed.Min, 2) .. " - " .. FormatNumber(obj.RotSpeed.Max, 2) .. "°/s"
data.SpreadAngle = FormatVector2(obj.SpreadAngle)
data.Acceleration = FormatVector3(obj.Acceleration)
data.Drag = FormatNumber(obj.Drag, 4)
data.VelocityInheritance = FormatNumber(obj.VelocityInheritance, 4)
data.ZOffset = FormatNumber(obj.ZOffset, 2)
data.EmissionDirection = tostring(obj.EmissionDirection):gsub("Enum.NormalId.", "")
data.Shape = tostring(obj.Shape):gsub("Enum.ParticleEmitterShape.", "")
data.LightEmission = FormatNumber(obj.LightEmission, 4)
data.LightInfluence = FormatNumber(obj.LightInfluence, 4)
return data
end
local function InspectProximityPrompt(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.Enabled = FormatBoolean(obj.Enabled)
data.ActionText = obj.ActionText
data.ObjectText = obj.ObjectText
data.KeyboardKeyCode = tostring(obj.KeyboardKeyCode):gsub("Enum.KeyCode.", "")
data.GamepadKeyCode = tostring(obj.GamepadKeyCode):gsub("Enum.KeyCode.", "")
data.HoldDuration = FormatNumber(obj.HoldDuration, 2) .. " sec"
data.MaxActivationDistance = FormatNumber(obj.MaxActivationDistance, 2) .. " studs"
data.RequiresLineOfSight = FormatBoolean(obj.RequiresLineOfSight)
data.Exclusivity = tostring(obj.Exclusivity):gsub("Enum.ProximityPromptExclusivity.", "")
data.Style = tostring(obj.Style):gsub("Enum.ProximityPromptStyle.", "")
data.ClickablePrompt = FormatBoolean(obj.ClickablePrompt)
data.AutoLocalize = FormatBoolean(obj.AutoLocalize)
return data
end
local function InspectClickDetector(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.MaxActivationDistance = FormatNumber(obj.MaxActivationDistance, 2) .. " studs"
data.CursorIcon = obj.CursorIcon ~= "" and obj.CursorIcon or "Default"
return data
end
local function InspectGeneric(obj)
local data = {}
data.Name = obj.Name
data.ClassName = obj.ClassName
data.FullPath = obj:GetFullName()
data.Parent = obj.Parent and obj.Parent.Name or "None"
data.ObjectType = GetObjectType(obj)
data.Children = CountChildren(obj, false)
data.Descendants = CountChildren(obj, true)
data.HierarchyDepth = GetHierarchyDepth(obj)
-- Try to get common properties
pcall(function()
if obj:IsA("ValueBase") then
data.Value = tostring(obj.Value)
end
end)
-- Attributes & Tags
data.Attributes = GetAttributes(obj)
data.Tags = GetTags(obj)
-- Child Classes
data.ChildClasses = GetChildrenByClass(obj)
return data
end
-- ═══════════════════════════════════════════════════════════
-- 🔍 MASTER INSPECT FUNCTION
-- ═══════════════════════════════════════════════════════════
local function InspectObject(obj)
if not obj then return nil end
local data
if obj:IsA("BasePart") then
data = InspectBasePart(obj)
elseif obj:IsA("Model") then
data = InspectModel(obj)
elseif obj:IsA("Tool") then
data = InspectTool(obj)
elseif obj:IsA("Humanoid") then
data = InspectHumanoid(obj)
elseif obj:IsA("Sound") then
data = InspectSound(obj)
elseif obj:IsA("Light") then
data = InspectLight(obj)
elseif obj:IsA("ParticleEmitter") then
data = InspectParticleEmitter(obj)
elseif obj:IsA("ProximityPrompt") then
data = InspectProximityPrompt(obj)
elseif obj:IsA("ClickDetector") then
data = InspectClickDetector(obj)
else
data = InspectGeneric(obj)
end
return data
end
-- ═══════════════════════════════════════════════════════════
-- 📋 GENERATE FULL REPORT
-- ═══════════════════════════════════════════════════════════
local function GenerateFullReport(data)
if not data then return "" end
local report = [[
╔══════════════════════════════════════════════════════════════╗
║ 🔍 ULTIMATE OBJECT INSPECTOR - FULL REPORT ║
╚══════════════════════════════════════════════════════════════╝
Generated: ]] .. os.date("%Y-%m-%d %H:%M:%S") .. [[
═══════════════════════════════════════════════════════════════
📋 BASIC INFORMATION
═══════════════════════════════════════════════════════════════
]]
local function addLine(label, value)
if value ~= nil then
report = report .. string.format("%-25s: %s\n", label, tostring(value))
end
end
local function addSection(title)
report = report .. "\n═══════════════════════════════════════════════════════════════\n"
report = report .. title .. "\n"
report = report .. "═══════════════════════════════════════════════════════════════\n"
end
-- Basic Info
addLine("Name", data.Name)
addLine("ClassName", data.ClassName)
addLine("Type", data.ObjectType)
addLine("Full Path", data.FullPath)
addLine("Parent", data.Parent)
addLine("Children", data.Children)
addLine("Descendants", data.Descendants)
addLine("Hierarchy Depth", data.HierarchyDepth)
addLine("Est. Memory", data.EstimatedMemory)
-- Distance
if data.Distance then
addSection("📏 DISTANCE & DIRECTION")
addLine("Distance", data.Distance)
addLine("Direction", data.Direction)
end
-- Transform
if data.Position then
addSection("📐 TRANSFORM & POSITION")
addLine("Position", data.Position)
addLine("Position (Code)", data.PositionCode)
addLine("Rotation", data.Rotation)
addLine("Orientation", data.Orientation)
addLine("Size", data.Size)
addLine("Size (Code)", data.SizeCode)
addLine("Volume", data.Volume)
addLine("CFrame", data.CFrame)
addLine("LookVector", data.LookVector)
addLine("UpVector", data.UpVector)
addLine("RightVector", data.RightVector)
addLine("Pivot", data.Pivot or data.PivotOffset)
end
-- Bounding Box (for Models)
if data.BoundingBoxPosition then
addSection("📦 BOUNDING BOX")
addLine("BB Position", data.BoundingBoxPosition)
addLine("BB Size", data.BoundingBoxSize)
addLine("BB Volume", data.BoundingBoxVolume)
end
-- Physics
if data.Anchored then
addSection("⚡ PHYSICS PROPERTIES")
addLine("Anchored", data.Anchored)
addLine("CanCollide", data.CanCollide)
addLine("CanTouch", data.CanTouch)
addLine("CanQuery", data.CanQuery)
addLine("Massless", data.Massless)
addLine("Mass", data.Mass)
addLine("Density", data.Density)
addLine("Friction", data.Friction)
addLine("Elasticity", data.Elasticity)
addLine("Velocity", data.Velocity)
addLine("Speed", data.Speed)
addLine("Angular Velocity", data.AngularVelocity)
addLine("Root Part", data.RootPart)
addLine("Collision Group", data.CollisionGroup)
addLine("Network Owner", data.NetworkOwner)
end
-- Model Stats
if data.TotalMass then
addSection("📊 MODEL STATISTICS")
addLine("Total Mass", data.TotalMass)
addLine("Part Count", data.PartCount)
addLine("MeshPart Count", data.MeshPartCount)
addLine("Union Count", data.UnionCount)
addLine("Total BaseParts", data.TotalBaseParts)
addLine("Primary Part", data.PrimaryPart)
addLine("Streaming Mode", data.ModelStreamingMode)
addLine("Level of Detail", data.LevelOfDetail)
end
-- Appearance
if data.Color then
addSection("🎨 APPEARANCE")
addLine("Color", data.Color)
addLine("Color (Code)", data.ColorCode)
addLine("BrickColor", data.BrickColor)
addLine("Material", data.Material)
addLine("Material Variant", data.MaterialVariant)
addLine("Transparency", data.Transparency)
addLine("Reflectance", data.Reflectance)
addLine("Cast Shadow", data.CastShadow)
end
-- Surface Types
if data.TopSurface then
addSection("🧱 SURFACE TYPES")
addLine("Top", data.TopSurface)
addLine("Bottom", data.BottomSurface)
addLine("Front", data.FrontSurface)
addLine("Back", data.BackSurface)
addLine("Left", data.LeftSurface)
addLine("Right", data.RightSurface)
end
-- MeshPart
if data.MeshId then
addSection("🔷 MESHPART PROPERTIES")
addLine("MeshId", data.MeshId)
addLine("TextureID", data.TextureID)
addLine("Render Fidelity", data.RenderFidelity)
addLine("Collision Fidelity", data.CollisionFidelity)
addLine("Double Sided", data.DoubleSided)
end
-- Union
if data.UsePartColor then
addSection("🔶 UNION PROPERTIES")
addLine("Use Part Color", data.UsePartColor)
addLine("Smoothing Angle", data.SmoothingAngle)
end
-- Humanoid
if data.Health or data.HasHumanoid == "✅ Yes" then
addSection("🤖 HUMANOID PROPERTIES")
addLine("Has Humanoid", data.HasHumanoid)
addLine("Health", data.Health)
addLine("Max Health", data.MaxHealth)
addLine("Health %", data.HealthPercent)
addLine("WalkSpeed", data.WalkSpeed)
addLine("JumpPower", data.JumpPower)
addLine("JumpHeight", data.JumpHeight)
addLine("HipHeight", data.HipHeight)
addLine("Max Slope Angle", data.MaxSlopeAngle)
addLine("State", data.State or data.HumanoidState)
addLine("Move Direction", data.MoveDirection)
addLine("Move Speed", data.MoveSpeed)
addLine("Sit", data.Sit)
addLine("Seat Part", data.SeatPart)
addLine("Platform Stand", data.PlatformStand)
addLine("Auto Rotate", data.AutoRotate)
addLine("Auto Jump", data.AutoJumpEnabled)
addLine("Display Name", data.DisplayName)
addLine("Rig Type", data.RigType)
addLine("Floor Material", data.FloorMaterial)
addLine("Name Occlusion", data.NameOcclusion)
addLine("Health Display", data.HealthDisplayType)
end
-- Player Info
if data.IsPlayerCharacter == "✅ Yes" then
addSection("👤 PLAYER INFORMATION")
addLine("Is Player", data.IsPlayerCharacter)
addLine("Player Name", data.PlayerName)
addLine("Display Name", data.PlayerDisplayName)
addLine("UserId", data.PlayerUserId)
addLine("Account Age", data.PlayerAccountAge)
addLine("Team", data.PlayerTeam)
addLine("Membership", data.PlayerMembership)
end
-- Tool Properties
if data.ToolTip then
addSection("🔧 TOOL PROPERTIES")
addLine("ToolTip", data.ToolTip)
addLine("Requires Handle", data.RequiresHandle)
addLine("Can Be Dropped", data.CanBeDropped)
addLine("Manual Activation", data.ManualActivationOnly)
addLine("Enabled", data.Enabled)
addLine("Has Handle", data.HasHandle)
addLine("Handle Position", data.HandlePosition)
addLine("Handle Size", data.HandleSize)
addLine("Grip", data.Grip)
addLine("TextureId", data.TextureId)
addLine("Owner", data.Owner)
end
-- Sound Properties
if data.SoundId then
addSection("🔊 SOUND PROPERTIES")
addLine("SoundId", data.SoundId)
addLine("Is Playing", data.IsPlaying)
addLine("Is Paused", data.IsPaused)
addLine("Looped", data.Looped)
addLine("Volume", data.Volume)
addLine("Pitch", data.Pitch)
addLine("Playback Speed", data.PlaybackSpeed)
addLine("Time Position", data.TimePosition)
addLine("Time Length", data.TimeLength)
addLine("Progress", data.Progress)
addLine("RollOff Mode", data.RollOffMode)
addLine("RollOff Min", data.RollOffMinDistance)
addLine("RollOff Max", data.RollOffMaxDistance)
addLine("Sound Group", data.SoundGroup)
end
-- Light Properties
if data.Brightness and data.Shadows then
addSection("💡 LIGHT PROPERTIES")
addLine("Enabled", data.Enabled)
addLine("Color", data.Color)
addLine("Brightness", data.Brightness)
addLine("Shadows", data.Shadows)
addLine("Range", data.Range)
addLine("Angle", data.Angle)
addLine("Face", data.Face)
end
-- Particle Properties
if data.Rate then
addSection("✨ PARTICLE PROPERTIES")
addLine("Enabled", data.Enabled)
addLine("Texture", data.Texture)
addLine("Rate", data.Rate)
addLine("Lifetime", data.Lifetime)
addLine("Speed", data.Speed)
addLine("Rotation", data.Rotation)
addLine("Rot Speed", data.RotSpeed)
addLine("Spread Angle", data.SpreadAngle)
addLine("Acceleration", data.Acceleration)
addLine("Drag", data.Drag)
addLine("Emission Direction", data.EmissionDirection)
addLine("Shape", data.Shape)
addLine("Light Emission", data.LightEmission)
end
-- ProximityPrompt
if data.ActionText then
addSection("💬 PROXIMITY PROMPT")
addLine("Enabled", data.Enabled)
addLine("Action Text", data.ActionText)
addLine("Object Text", data.ObjectText)
addLine("Keyboard Key", data.KeyboardKeyCode)
addLine("Gamepad Key", data.GamepadKeyCode)
addLine("Hold Duration", data.HoldDuration)
addLine("Max Distance", data.MaxActivationDistance)
addLine("Line of Sight", data.RequiresLineOfSight)
addLine("Exclusivity", data.Exclusivity)
addLine("Style", data.Style)
end
-- Special Components
if data.HasClickDetector then
addSection("🔌 SPECIAL COMPONENTS")
addLine("Click Detector", data.HasClickDetector)
addLine("Proximity Prompt", data.HasProximityPrompt)
addLine("Sound", data.HasSound)
addLine("Particles", data.HasParticles)
addLine("Light", data.HasLight)
addLine("Decal", data.HasDecal)
addLine("Texture", data.HasTexture)
addLine("Script", data.HasScript)
end
-- Constraints
if data.Constraints and #data.Constraints > 0 and data.Constraints[1] ~= "None" then
addSection("⛓️ CONSTRAINTS")
for i, constraint in ipairs(data.Constraints) do
report = report .. string.format(" [%d] %s\n", i, constraint)
end
end
-- Joints
if data.Joints and #data.Joints > 0 and data.Joints[1] ~= "None" then
addSection("🔗 JOINTS & WELDS")
for i, joint in ipairs(data.Joints) do
report = report .. string.format(" [%d] %s\n", i, joint)
end
end
-- Accessories
if data.Accessories and #data.Accessories > 0 and data.Accessories[1] ~= "None" then
addSection("👒 ACCESSORIES")
addLine("Count", data.AccessoryCount)
for i, acc in ipairs(data.Accessories) do
report = report .. string.format(" [%d] %s\n", i, acc)
end
end
-- Attributes
if data.Attributes and #data.Attributes > 0 then
addSection("📊 ATTRIBUTES")
for _, attr in ipairs(data.Attributes) do
report = report .. string.format(" %s (%s): %s\n", attr.Name, attr.Type, attr.Value)
end
end
-- Tags
if data.Tags and #data.Tags > 0 then
addSection("🏷️ TAGS")
for i, tag in ipairs(data.Tags) do
report = report .. string.format(" [%d] %s\n", i, tag)
end
end
-- Child Classes
if data.ChildClasses and next(data.ChildClasses) then
addSection("🌳 CHILD CLASSES BREAKDOWN")
for className, count in pairs(data.ChildClasses) do
report = report .. string.format(" %-25s: %d\n", className, count)
end
end
-- Value (for ValueBase)
if data.Value then
addSection("📈 VALUE")
addLine("Value", data.Value)
end
report = report .. [[
═══════════════════════════════════════════════════════════════
END OF REPORT
═══════════════════════════════════════════════════════════════
]]
return report
end
-- ═══════════════════════════════════════════════════════════
-- 🔄 UPDATE GUI FUNCTION
-- ═══════════════════════════════════════════════════════════
local function UpdateInspectorGUI()
if not SelectedObject then
CopiedData = ""
return
end
-- Check if object still exists
local success = pcall(function() local _ = SelectedObject.Parent end)
if not success then
SelectedObject = nil
RemoveHighlight()
CurrentSelectionLabel:Set("📦 Selected: [DELETED]")
ObjectTypeLabel:Set("📁 Type: N/A")
DistanceLabel:Set("📏 Distance: N/A")
DirectionLabel:Set("🧭 Direction: N/A")
CopiedData = ""
return
end
-- Get inspection data
local data = InspectObject(SelectedObject)
if not data then return end
-- Generate full report for copy
CopiedData = GenerateFullReport(data)
-- Update Selection Labels
CurrentSelectionLabel:Set("📦 Selected: " .. (data.Name or "Unknown"))
ObjectTypeLabel:Set("📁 Type: " .. (data.ObjectType or "Unknown"))
-- Update Distance & Direction
if data.Distance then
DistanceLabel:Set("📏 Distance: " .. data.Distance)
DirectionLabel:Set("🧭 Direction: " .. (data.Direction or "N/A"))
end
-- Update Basic Info
NameLabel:Set("Name: " .. (data.Name or "N/A"))
ClassLabel:Set("ClassName: " .. (data.ClassName or "N/A"))
FullPathLabel:Set("Path: " .. (data.FullPath or "N/A"))
ParentLabel:Set("Parent: " .. (data.Parent or "N/A"))
ChildrenLabel:Set("Children: " .. (data.Children or "N/A"))
DescendantsLabel:Set("Descendants: " .. (data.Descendants or "N/A"))
MemoryLabel:Set("Est. Memory: " .. (data.EstimatedMemory or "N/A"))
DepthLabel:Set("Hierarchy Depth: " .. (data.HierarchyDepth or "N/A"))
-- Update Transform
PositionLabel:Set("Position: " .. (data.Position or data.BoundingBoxPosition or "N/A"))
RotationLabel:Set("Rotation: " .. (data.Rotation or "N/A"))
OrientationLabel:Set("Orientation: " .. (data.Orientation or "N/A"))
SizeLabel:Set("Size: " .. (data.Size or data.BoundingBoxSize or "N/A"))
VolumeLabel:Set("Volume: " .. (data.Volume or data.BoundingBoxVolume or "N/A"))
LookVectorLabel:Set("LookVector: " .. (data.LookVector or "N/A"))
UpVectorLabel:Set("UpVector: " .. (data.UpVector or "N/A"))
RightVectorLabel:Set("RightVector: " .. (data.RightVector or "N/A"))
PivotLabel:Set("Pivot Offset: " .. (data.PivotOffset or data.Pivot or "N/A"))
-- Update Physics
AnchoredLabel:Set("Anchored: " .. (data.Anchored or "N/A"))
CanCollideLabel:Set("CanCollide: " .. (data.CanCollide or "N/A"))
CanTouchLabel:Set("CanTouch: " .. (data.CanTouch or "N/A"))
CanQueryLabel:Set("CanQuery: " .. (data.CanQuery or "N/A"))
MassLabel:Set("Mass: " .. (data.Mass or data.TotalMass or "N/A"))
DensityLabel:Set("Density: " .. (data.Density or "N/A"))
VelocityLabel:Set("Velocity: " .. (data.Velocity or data.HumanoidRootPartVelocity or "N/A"))
AngularVelocityLabel:Set("Angular Velocity: " .. (data.AngularVelocity or "N/A"))
RootPartLabel:Set("RootPart: " .. (data.RootPart or data.PrimaryPart or "N/A"))
CollisionGroupLabel:Set("Collision Group: " .. (data.CollisionGroup or "N/A"))
NetworkOwnerLabel:Set("Network Owner: " .. (data.NetworkOwner or "N/A"))
-- Update Appearance
ColorLabel:Set("Color: " .. (data.Color or "N/A"))
BrickColorLabel:Set("BrickColor: " .. (data.BrickColor or "N/A"))
MaterialLabel:Set("Material: " .. (data.Material or "N/A"))
MaterialVariantLabel:Set("Material Variant: " .. (data.MaterialVariant or "N/A"))
TransparencyLabel:Set("Transparency: " .. (data.Transparency or "N/A"))
ReflectanceLabel:Set("Reflectance: " .. (data.Reflectance or "N/A"))
CastShadowLabel:Set("CastShadow: " .. (data.CastShadow or "N/A"))
if data.TopSurface then
SurfaceTypesLabel:Set("Surfaces: T:" .. data.TopSurface .. " B:" .. data.BottomSurface .. " F:" .. data.FrontSurface)
else
SurfaceTypesLabel:Set("Surface Types: N/A")
end
-- Update Humanoid
if data.Health or data.HasHumanoid == "✅ Yes" then
HealthLabel:Set("Health: " .. (data.Health or "N/A"))
MaxHealthLabel:Set("MaxHealth: " .. (data.MaxHealth or "N/A"))
WalkSpeedLabel:Set("WalkSpeed: " .. (data.WalkSpeed or "N/A"))
JumpPowerLabel:Set("JumpPower: " .. (data.JumpPower or "N/A"))
JumpHeightLabel:Set("JumpHeight: " .. (data.JumpHeight or "N/A"))
HipHeightLabel:Set("HipHeight: " .. (data.HipHeight or "N/A"))
StateLabel:Set("State: " .. (data.State or data.HumanoidState or "N/A"))
SitLabel:Set("Sit: " .. (data.Sit or "N/A") .. " | Seat: " .. (data.SeatPart or "N/A"))
DisplayNameLabel:Set("DisplayName: " .. (data.DisplayName or "N/A"))
RigTypeLabel:Set("RigType: " .. (data.RigType or "N/A"))
else
HealthLabel:Set("Health: N/A (No Humanoid)")
MaxHealthLabel:Set("MaxHealth: N/A")
WalkSpeedLabel:Set("WalkSpeed: N/A")
JumpPowerLabel:Set("JumpPower: N/A")
JumpHeightLabel:Set("JumpHeight: N/A")
HipHeightLabel:Set("HipHeight: N/A")
StateLabel:Set("State: N/A")
SitLabel:Set("Sit: N/A")
DisplayNameLabel:Set("DisplayName: N/A")
RigTypeLabel:Set("RigType: N/A")
end
-- Update Attributes
if data.Attributes and #data.Attributes > 0 then
local attrStr = ""
for i, attr in ipairs(data.Attributes) do
if i <= 5 then
attrStr = attrStr .. attr.Name .. "=" .. attr.Value .. "; "
end
end
if #data.Attributes > 5 then
attrStr = attrStr .. "(+" .. (#data.Attributes - 5) .. " more)"
end
AttributesLabel:Set("Attributes: " .. attrStr)
else
AttributesLabel:Set("Attributes: None")
end
-- Update Tags
if data.Tags and #data.Tags > 0 then
TagsLabel:Set("Tags: " .. table.concat(data.Tags, ", "))
else
TagsLabel:Set("Tags: None")
end
-- Update Child Classes
if data.ChildClasses and next(data.ChildClasses) then
local classStr = ""
local count = 0
for className, num in pairs(data.ChildClasses) do
if count < 4 then
classStr = classStr .. className .. "(" .. num .. ") "
count = count + 1
end
end
ChildClassesLabel:Set("Child Classes: " .. classStr)
else
ChildClassesLabel:Set("Child Classes: None")
end
end
-- ═══════════════════════════════════════════════════════════
-- 👤 UPDATE PLAYER INFO FUNCTION
-- ═══════════════════════════════════════════════════════════
local function UpdatePlayerInfo()
-- Team Update
PTeamLabel:Set("Team: " .. (Player.Team and Player.Team.Name or "None"))
-- Character Info
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
local hrp = Player.Character.HumanoidRootPart
local humanoid = Player.Character:FindFirstChildOfClass("Humanoid")
CharPosLabel:Set("Position: " .. FormatVector3Short(hrp.Position))
CharVelocityLabel:Set("Velocity: " .. FormatVector3Short(hrp.AssemblyLinearVelocity))
CharSpeedLabel:Set("Current Speed: " .. FormatNumber(hrp.AssemblyLinearVelocity.Magnitude, 2) .. " studs/s")
if humanoid then
CharHealthLabel:Set("Health: " .. FormatNumber(humanoid.Health, 1) .. "/" .. FormatNumber(humanoid.MaxHealth, 1))
CharWalkLabel:Set("WalkSpeed: " .. FormatNumber(humanoid.WalkSpeed, 2))
CharJumpLabel:Set("JumpPower: " .. FormatNumber(humanoid.JumpPower, 2))
CharLookLabel:Set("Look Direction: " .. FormatVector3Short(hrp.CFrame.LookVector))
CharMoveLabel:Set("Move Direction: " .. FormatVector3Short(humanoid.MoveDirection))
CharStateLabel:Set("State: " .. tostring(humanoid:GetState()):gsub("Enum.HumanoidStateType.", ""))
CharFloorLabel:Set("Floor Material: " .. tostring(humanoid.FloorMaterial):gsub("Enum.Material.", ""))
end
else
CharPosLabel:Set("Position: Character not found")
CharVelocityLabel:Set("Velocity: N/A")
CharSpeedLabel:Set("Current Speed: N/A")
CharHealthLabel:Set("Health: N/A")
end
-- Camera Info
CamPosLabel:Set("Position: " .. FormatVector3Short(Camera.CFrame.Position))
CamLookLabel:Set("Look Vector: " .. FormatVector3Short(Camera.CFrame.LookVector))
CamFOVLabel:Set("FOV: " .. FormatNumber(Camera.FieldOfView, 1) .. "°")
CamTypeLabel:Set("Type: " .. tostring(Camera.CameraType):gsub("Enum.CameraType.", ""))
CamFocusLabel:Set("Focus: " .. FormatVector3Short(Camera.Focus.Position))
CamSubjectLabel:Set("Subject: " .. (Camera.CameraSubject and Camera.CameraSubject.Name or "None"))
if Camera.CameraSubject and Camera.CameraSubject:IsA("Humanoid") then
local subjectPos = Camera.CameraSubject.Parent:FindFirstChild("HumanoidRootPart")
if subjectPos then
local dist = (Camera.CFrame.Position - subjectPos.Position).Magnitude
CamDistLabel:Set("View Distance: " .. FormatNumber(dist, 2) .. " studs")
end
else
CamDistLabel:Set("View Distance: N/A")
end
-- Tools
local equippedTool = Player.Character and Player.Character:FindFirstChildOfClass("Tool")
EquippedToolLabel:Set("Equipped: " .. (equippedTool and equippedTool.Name or "None"))
local backpackItems = {}
for _, item in pairs(Player.Backpack:GetChildren()) do
if item:IsA("Tool") then
table.insert(backpackItems, item.Name)
end
end
BackpackLabel:Set("Backpack: " .. (#backpackItems > 0 and table.concat(backpackItems, ", ") or "Empty"))
end
-- ═══════════════════════════════════════════════════════════
-- 🌍 UPDATE WORLD INFO FUNCTION
-- ═══════════════════════════════════════════════════════════
local function UpdateWorldInfo()
-- Player Count
PlayerCountLabel:Set("Players: " .. #Players:GetPlayers() .. "/" .. Players.MaxPlayers)
-- Server Time
ServerTimeLabel:Set("Server Time: " .. FormatTime(Workspace:GetServerTimeNow()))
-- Lighting
LightingTimeLabel:Set("Time of Day: " .. Lighting.TimeOfDay)
AmbientLabel:Set("Ambient: " .. FormatColor3(Lighting.Ambient))
BrightnessLabel:Set("Brightness: " .. Lighting.Brightness)
FogLabel:Set("Fog: " .. Lighting.FogStart .. " - " .. Lighting.FogEnd)
GravityLabel:Set("Gravity: " .. Workspace.Gravity .. " studs/s²")
end
-- ═══════════════════════════════════════════════════════════
-- ⌨️ INPUT HANDLING
-- ═══════════════════════════════════════════════════════════
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
-- Quick Select (Q)
if input.KeyCode == Settings.SelectHotkey then
if Mouse.Target then
SelectedObject = Mouse.Target
CreateHighlight(Mouse.Target)
CurrentSelectionLabel:Set("📦 Selected: " .. Mouse.Target.Name)
ObjectTypeLabel:Set("📁 Type: " .. GetObjectType(Mouse.Target))
local dist = GetDistance(Mouse.Target)
DistanceLabel:Set("📏 Distance: " .. dist)
DirectionLabel:Set("🧭 Direction: " .. GetDirectionTo(Mouse.Target))
-- Force immediate update
UpdateInspectorGUI()
Rayfield:Notify({
Title = "⚡ Quick Select",
Content = Mouse.Target.Name .. " (" .. Mouse.Target.ClassName .. ")",
Duration = 1.5
})
end
end
-- Clear (X)
if input.KeyCode == Settings.ClearHotkey then
SelectedObject = nil
RemoveHighlight()
CurrentSelectionLabel:Set("📦 Selected: None")
ObjectTypeLabel:Set("📁 Type: N/A")
DistanceLabel:Set("📏 Distance: N/A")
DirectionLabel:Set("🧭 Direction: N/A")
CopiedData = ""
Rayfield:Notify({
Title = "🗑️ Cleared",
Content = "Selection cleared!",
Duration = 1
})
end
end)
-- ═══════════════════════════════════════════════════════════
-- 🔁 MAIN UPDATE LOOP
-- ═══════════════════════════════════════════════════════════
local lastInspectorUpdate = 0
local lastPlayerUpdate = 0
local lastWorldUpdate = 0
RunService.Heartbeat:Connect(function()
local currentTime = tick()
-- Update Inspector (if auto refresh enabled)
if Settings.AutoRefresh and SelectedObject then
if currentTime - lastInspectorUpdate >= Settings.RefreshRate then
lastInspectorUpdate = currentTime
pcall(UpdateInspectorGUI)
end
end
-- Update Player Info every 0.2 seconds
if currentTime - lastPlayerUpdate >= 0.2 then
lastPlayerUpdate = currentTime
pcall(UpdatePlayerInfo)
end
-- Update World Info every 1 second
if currentTime - lastWorldUpdate >= 1 then
lastWorldUpdate = currentTime
pcall(UpdateWorldInfo)
end
end)
-- ═══════════════════════════════════════════════════════════
-- 🧹 CLEANUP ON PLAYER LEAVING
-- ═══════════════════════════════════════════════════════════
Player.AncestryChanged:Connect(function()
RemoveHighlight()
end)
-- ═══════════════════════════════════════════════════════════
-- ✅ INITIALIZATION COMPLETE
-- ═══════════════════════════════════════════════════════════
Rayfield:Notify({
Title = "🔍 Ultimate Inspector Loaded!",
Content = "Press Q to quick select objects. View full details in Inspector tab!",
Duration = 5
})
print("═══════════════════════════════════════════════════════════════")
print("✅ [INSPECTOR] Part 2 loaded successfully!")
print("✅ [INSPECTOR] Ultimate Object Inspector is now active!")
print("═══════════════════════════════════════════════════════════════")
print("")
print("📌 HOTKEYS:")
print(" Q - Quick select object under cursor")
print(" X - Clear current selection")
print(" RightShift - Toggle GUI visibility (Rayfield default)")
print("")
print("📋 FEATURES:")
print(" • Inspect any object in detail")
print(" • Real-time distance & direction tracking")
print(" • Copy any data to clipboard")
print(" • Player & World info tabs")
print(" • Custom highlight system")
print(" • Auto-refresh capability")
print("")
print("═══════════════════════════════════════════════════════════════")Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: sirius.menu.
Make with AI

Universal