Ported Functions

Revision as of 20:51, 21 July 2023 by Tobufi (talk | contribs) (→‎WaitForChild)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 keeps cycling around the requested parent until a child with the requested name is found.

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