Any way to check for all properties within a instance?

As of again of the again, the title says it all.

I want to know if there is a way to check for all properties within a instance, this could be used for making for example, and Properties tab inside of the game, since we can’t put the Properties tab on it ;/

There is not an easy way to do this. You’ll have to parse some dump of some sort that lists all the properties currently defined for each type.

Can just HTTP request from Roblox: https://anaminus.github.io/rbx/json/api/latest.json
Requires Proxy (Roblox game servers cant send Http requests to the roblox.com domain): http://setup.roblox.com/version-0f92b7995f2446f0-API-Dump.json

Here are some extra resources:

2 Likes

Though… I have no actual idea on how to use HTTP Service…

You can index a property. (If that’s the right word)

Part["Transparency"] = 0 -- Will error if it is not a property or there is no descendant with a name of that string

The resources I linked have code examples

This is one of them, but when i copy and paste, this happens:

01	local ClassProperties do
02	    -- ClassProperties is a Dictionary of sorted arrays of Properties of Classes
03	    -- Pulls from anaminus.github.io
04	    -- Ignores deprecated and RobloxPluginSecurity Properties
05	    -- Make sure HttpService is Enabled (Roblox Studio -> Home Tab -> Game Settings -> Security -> Allow HTTP requests = "On")
06	 
07	    ClassProperties = {}
08	    local HttpService = game:GetService("HttpService")
09	 
10	    local Data = HttpService:JSONDecode(HttpService:GetAsync("https://anaminus.github.io/rbx/json/api/latest.json"))
11	 
12	    for i = 1, #Data do
13	        local Table = Data[i]
14	        local Type = Table.type
15	 
16	        if Type == "Class" then
17	            local ClassData = {}
18	 
19	            local Superclass = ClassProperties[Table.Superclass]
20	 
21	            if Superclass then
22	                for j = 1, #Superclass do
23	                    ClassData[j] = Superclass[j]
24	                end
25	            end
26	 
27	            ClassProperties[Table.Name] = ClassData
28	        elseif Type == "Property" then
29	            if not next(Table.tags) then
30	                local Class = ClassProperties[Table.Class]
31	                local Property = Table.Name
32	                local Inserted
33	 
34	                for j = 1, #Class do
35	                    if Property < Class[j] then -- Determine whether `Property` precedes `Class[j]` alphabetically
36	                        Inserted = true
37	                        table.insert(Class, j, Property)
38	                        break
39	                    end
40	                end
41	 
42	                if not Inserted then
43	                    table.insert(Class, Property)
44	                end
45	            end
46	        elseif Type == "Function" then
47	        elseif Type == "YieldFunction" then
48	        elseif Type == "Event" then
49	        elseif Type == "Callback" then
50	        elseif Type == "Enum" then
51	        elseif Type == "EnumItem" then
52	        end
53	    end
54	end
55	 
56	table.foreach(ClassProperties["Part"], print)

Aka it copies the numbers/lines too.

And this other one, i just can’t understand:

Derived = {
Instance = { "Name", "Parent", "Archivable", "ClassName", "RobloxLocked", "DataCost", Derived = {
	Accoutrement = { "AttachmentForward", "AttachmentRight", "AttachmentPoint", "AttachmentPos", "AttachmentUp", "BackendAccoutrementState", Derived = {
		Hat = { Derived = {} }
	}},
	Animation = { "AnimationId", Derived = { } },
	AnimationTrack = { Derived = { } },
	Backpack = { Derived = { } },
	BaseScript = { "Disabled", "LinkedSource", Derived = {
		CoreScript = { Derived = { } },
		Script = { "Source", "Disabled", Derived = { 
			LocalScript = { Derived = { } }
		}}
	}},
	BodyAngularVelocity = { "angularvelocity", "P", "maxTorque", Derived = { } },
	BodyColors = { "BodyColor", Derived = { } },
	BodyForce = { "force", Derived = { } },
	BodyGyro = { "D", "P", "cframe", "maxTorque", Derived = { } },
	BodyPosition = { "D", "P", "maxForce", "position", Derived = { } },
	BodyThrust = { "force", "location", Derived = { } },
	BodyVelocity = { "P", "maxForce", "Velocity", Derived = { } },
	BoolValue = { "Value", Derived = { } },
	BrickColorValue = { "Value", Derived = { } },
	Camera = { "CameraSubject", "CameraType", "CoordinateFrame", "Focus", Derived = { } },
	CFrameValue = { "Value", Derived = { } },
	ClickDetector = { "MaxActivationDistance", Derived = { } },
	Clothing = { Derived = {
		Pants = { "PantsTemplate", Derived = { } },
		Shirt = { "ShirtTemplate", Derived = { } }
	}},
	Color3Value = { "Value", Derived = { } },
	Configuration = { Derived = { } },
	Dialog = { "ConversationDistance", "InUse", "InitailPrompt", "Purpose", "Tone", Derived = { } },
	DialogChoice = { "ResponseDialog", "UserDialog", Derived = { } },
	Explosion = { "BlastPressure", "BlastRadius", "Position", Derived = { } },
	Feature = { "FaceId", "InOut", "LeftRight", "TopBottom", Derived = {
		Hole = { Derived = { } },
		MotorFeature = { Derived = { } }
	}},
	Fire = { "Color", "Enabled", "Heat", "SecondaryColor", "Size", Derived = { } },
	ForceField = { Derived = { } },
	GuiBase = { "AbsolutePosition", "AbsoluteSize", Derived = {
		ScreenGui = { Derived = { } },
		GuiObject = { "Active", "BackgroundColor3", "BackgroundTransparency", "BorderColor3", "BorderSizePixel", "Position", "Size", "SizeConstraint", "Visible", "ZIndex", Derived = {
			Frame = { Derived = { } },
			GuiButton = { "AutoButtonColor", "Selected", "Style", Derived = {
				ImageButton = { "Image", Derived = { } },
				TextButton = { "Text", "TextBounds", "TextWrap", "TextColor3", "TextTransparency, TextXAlignment", "TextYAlignment", "FontSize", "Font", Derived = { } }
			}},
			GuiLabel = { Derived = {
				ImageLabel = { "Image", Derived = { } },
				TextLabel = { "Text", "TextBounds", "TextWrap", "TextColor3", "TextTransparency, TextXAlignment", "TextYAlignment", "FontSize", "Font", Derived = { } }
			}},
			TextBox = { "Text", "TextBounds", "TextWrap", "TextColor3", "TextTransparency, TextXAlignment", "TextYAlignment", "FontSize", "Font", Derived = { } }
		}},
		BillboardGui = { "Adornee", "Enabled", "ExtentsOffset", "SizeOffset", "StudsOffset", Derived = { } },
	}},
	GuiBase3d = { "Color", "Transparency", "Visible", Derived = {
		PartAdornment = { "Adornee", Derived = {
			SurfaceSelection = { "TargetSurface", Derived = { } },
		}},
		PVAdornment = { "Adornee", Derived = {
			SelectionBox = { Derived = { } }
		}},
		SelectionLasso = { "Humanoid", Derived = {
			SelectionPartLasso = { "Part", Derived = { } },
			SelectionPointLasso = { "Point", Derived = { } },
		}}
	}},
	Humanoid = { "Health", "Jump", "MaxHealth", "PlatformStand", "RightLeg", "Sit", "TargetPoint", "Torso", "WalkDirection", "WalkSpeed", "WalkToPart", "WalkToPoint", Derived = { } },
	IntValue = { "Value", Derived = { } },
	JointInstance = { "C0", "C1", "Part0", "Part1", Derived = {
		DynamicRotate = { "BaseAngle", Derived = {
			RotateP = { Derived = { } },
			RotateV = { Derived = { } }
		}},
		Glue = { "F0", "F1", "F2", "F3", Derived = { } },
		Motor = { "CurrentAngle", "DesiredAngle", "MaxVelocity", Derived = { } },
		Rotate = { Derived = { } },
		Snap = { Derived = { } },
		VelocityMotor = { "CurrentAngle", "DesiredAngle", "Hole", "MaxVelocity", Derived = { } },
		Weld = { Derived = { } }
	}},
	KeyFrame = { "Time", Derived = { } },
	Message = { "Text", Derived = {
		Hint = { Derived = { } },
	}},
	Mouse = { "Hit", "Icon", "Origin", "Target", "TargetFilter", "TargetSurface", "UnitRay", "ViewSizeX", "ViewSizeY", "X", "Y", Derived = { } },
	NetworkReplicator = { "Port", Derived = { } },
	NumberValue = { "Value", Derived = { } },
	ObjectValue = { "Value", Derived = { } },
	Player = { "AccountAge", "Character", "CharacterAppearance", "DataReady", "Neutral", "MembershipType", "TeamColor", "userId",  Derived = { } },
	Pose = { "CFrame", "MaskWeight", "Weight", Derived = { } },
	PVInstance = { Derived = {
		BasePart = { "Anchored", "BrickColor", "CFrame", "CanCollide", "Elasticity", "Friction", "Locked", "Material", "Position", "Reflectance", "RotVelocity", "Size", "Transparency", "Velocity", "TopParamA", "BottomParamA", "LeftParamA", "RightParamA", "FrontParamA", "BackParamA", "TopParamB", "BottomParamB", "LeftParamB", "RightParamB", "FrontParamB", "BackParamB", "TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface", "TopSurfaceInput", "BottomSurfaceInput", "LeftSurfaceInput", "RightSurfaceInput", "FrontSurfaceInput", "BackSurfaceInput", Derived = {
			CornerWedgePart = { Derived = { } },
			FormFactorPart = { "FormFactor", Derived = {
				FlagStand = { "TeamColor", Derived = { } },
				Part = { "Shape", Derived = {
					Seat = { Derived = { } },
					SpawnLocation = { "AllowTeamChangeOnTouch", "Duration", "Neutral", "TeamColor", Derived = { } }
				}},
				WedgePart = { Derived = { } },
			}},
			ParallelRampPart = { Derived = { } },
			PrismPart = { "Sides", Derived = { } },
			PyramidPart = { "Sides", Derived = { } },
			RightAngleRampPart = { Derived = { } },
			SkateboardPlatform = { "Controller", "ControllingHumanoid", "Steer", "StickyWheels", "Throttle", Derived = { } },
			TrussPart = { "Style", Derived = { } },
			VehicleSeat = { "AreHingesDetected", "HeadsUpDisplay", "MaxSpeed", "Steer", "Throttle", "Torque", "TurnSpeed", Derived = { } }
		}},
		Model = { "PrimaryPart", Derived = { } }
	}},
	RayValue = { "Value", Derived = { } },
	RocketPropulsion = { "TurnP", "TurnD", "ThrustP", "ThrustD", "TargetRadius", "TargetOffset", "Target", "MaxTorque", "MaxThrust", "MaxSpeed", "CartoonFactor", Derived = { } },
	ScriptContext = { "GarbageCollectionFrequency", "GarbageCollectionLimit", "ScriptsDisabled", Derived = { } },
	ShirtGraphic = { "Graphic", Derived = { } },
	Skin = { "SkinColor", Derived = { } },
	Sky = { "CelestialBodiesShown", "SkyboxBk", "SkyboxDn", "SkyboxFt", "SkyboxRt", "SkyboxUp", "SkyboxCount", Derived = { } },
	Smoke = { "Color", "Enabled", "Opacity", "RiseVelocity", "Size", Derived = { } },
	Sound = { "IsPaused", "IsPlaying", "Looped", "Pitch", "PlayOnRemove", "SoundId", "Volume", Derived = { } },
	Sparkles = { "Enabled", "SparkleColor", Derived = { } },
	StarterGear = { Derived = { } },
	StatsItem = { Derived = {
		ProfilingItem = { Derived = { } },
	},
	StringValue = { "Value", Derived = { } },
	Team = { "AutoAssignable", "AutoColorCharacters", "Score", "TeamColor", Derived = { } },
	Teams = { Derived = { } },
	TouchTransmitter = { "Target", Derived = { } },
	Vector3Value = { "Value", Derived = { } }
}}}}

function AddToTable(a, b)
	local r = { }
	for i,v in next, a do
		if type(v) == "string" then
			r[#r+1] = v
		end
	end
	for i,v in next, b do
		if type(v) == "string" then
			r[#r+1] = v
		end
	end
	return r
end

function Properties(obj, fenv)
	fenv = fenv or getfenv()
	for i,v in next, fenv.Derived do
		if obj:IsA(i) then
			return AddToTable(v, Properties(obj, v) or { })
		end
	end
end

function GetProperties(obj)
	local tab = Properties(obj)
	for i,v in next, tab do
		if type(v) == "table" then
			table.remove(tab, i)
		end
	end
	return tab
end

_G.GetProperties = GetProperties

For scripting helpers, you have to click view source and then copy and paste it

1 Like