Ported Functions: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
(ClearAllChildren, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstChildOfClass)
 
Line 3: Line 3:
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.  
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 ==
== 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!
This function keeps cycling around the requested parent until a child with the requested name is found.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
local function waitForChild(parent, name)
local function waitForChild(parent, name)
Line 13: Line 13:
end
end
</syntaxhighlight>
</syntaxhighlight>
== GetDescendants ==
== 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.
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.

Latest revision as of 20:51, 21 July 2023

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