Ported Functions

Revision as of 19:12, 21 July 2023 by GuestIsJustBest (talk | contribs) (ClearAllChildren, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstChildOfClass)
Work In Progress
This is currently being worked on! Check back later for more information... hopefully.


Modern versions of ROBLOX include many new features and functions which provide an easier experience for creators to make their own game. Because of this, older ROBLOX clients have far less features and therefore functions to offer. Fortunately, due to these limitations, ROBLOXians have — in the past, and in the now — made their own functions to serve the same purpose as their counterparts in the present.

WaitForChild

This function is a replacement for the function that's well known to most — if not all — scripters of ROBLOX. It keeps waiting until it finds a child with a specific name inside a specific parent. This kind of function can be found in old Animate scripts found inside a player's character!

local function waitForChild(parent, name)
	while not parent:FindFirstChild(name, false) do
		wait(0.03)
	end

	return parent:FindFirstChild(name, false)
end

GetDescendants

This function is also considered a replacement to a very important function. It returns a table which contains all objects found within a requested object.

local function getDescendants(instance)
	local descendants = {}

	for i, v in ipairs(instance:GetChildren()) do
		table.insert(descendants, v)

		for j, w in ipairs(getDescendants(v)) do
			table.insert(descendants, w)
		end
	end

	return descendants
end

ClearAllChildren

Use this when working with releases before 49.

local function clearAllChildren(instance)
	for index, value in ipairs(instance:GetChildren()) do
		value:Remove()
	end
end

FindFirstAncestor

local function findFirstAncestor(instance, name)
	local ancestor = instance.Parent

	while ancestor and ancestor ~= game do
		if ancestor.Name == name then
			return ancestor
		else
			ancestor = ancestor.Parent
		end
	end

	return nil
end

FindFirstAncestorOfClass

local function findFirstAncestorOfClass(instance, className)
	local ancestor = instance.Parent

	while ancestor and ancestor ~= game do
		if ancestor.ClassName == className then
			return ancestor
		else
			ancestor = ancestor.Parent
		end
	end

	return nil
end

FindFirstChildOfClass

local function findFirstChildOfClass(instance, className)
	for index, value in ipairs(instance:GetChildren()) do
		if value.ClassName == className then
			return value
		end
	end

	return nil
end