Are you ready to use this new AMAZING plugin?

Extra Functions Plugin that will add 16 new Functions to help you do things easier !

Extra Functions Plugin will insert a Module Script to your experience that you can access in your scripts !

the Plugin also have it is own Debugging system to help you find and solve your script problems !

For now these all the functions that the plugin offers :-

GetGrandParent
GetObjectsFromType
GetObjectsWithName
GetPlayerMains
SetValuesToValue
Tag
RemoveTag
AddAttribute
RemoveAttribute
SetName
SetParent
SetColor
SetCFrame

This is All the Functions For now
More Functions is coming…
these functions will help manage and edit multiple objects at once !

Also the Plugin have it is own documentation to help you use and understand all of these functions !

get ExtraFunctions Plugin NOW
for free !

17 Likes

I no longer need to use :PivotTo(),

I no longer need to use part.Color = Color3.fromRgb()

and etc

7 Likes

it is already out to help as many Developers and for free !

3 Likes

It would be easier to have made this a model rather than a plugin to insert a ModuleScript in the game. Installing a plugin might be excessive.

7 Likes

the plugin have it is own documentation that can not be in a model

2 Likes

please if you are gonna use the plugin please after using it send me your feedback so i can improve it more and more !

1 Like

The module:

local ExtraFunctions = {}

local CollectionService = game:GetService("CollectionService")

function ExtraFunctions.GetGrandParent(Object:Instance)
	if Object == nil or not Object:IsA("Instance") or Object == game then
		warn("Error , Function :- GetGrandParent , Reason :- Object is not an Inastance or is nil , nil returned.")
		return nil
	end
	if Object.Parent and Object.Parent.Parent then
		return Object.Parent.Parent
	else
		return nil
	end
end

function ExtraFunctions.GetObjectsWithName(Name:string , Parent:Instance)
	if Name == nil or Parent == nil or type(Name) ~= "string" or not Parent:IsA("Instance") then
		warn("Error , Function :- GetObjectsWithName , Reason :- Name is not string or is nil or Parent is not an Inastance or is nil , nil returned.")
		return nil
	end
	if #Parent:GetChildren() > 0 then
		local Table = {}
		for i , Object in pairs(Parent:GetChildren()) do
			if Object.Name == Name then
				table.insert(Table , Object)
			end
		end
		if #Table > 0 then
			return Table
		else
			return nil
		end
	else
		return nil
	end
end

function ExtraFunctions.GetObjectsFromType(Type:string , Parent:Instance)
	if Type == nil or Parent == nil or type(Type) ~= "string" or not Parent:IsA("Instance") then
		warn("Error , Function :- GetObjectsFromType , Reason :- Type is not string or is nil or Parent is not an Inastance or is nil , nil returned.")
		return nil
	end
	if #Parent:GetChildren() > 0 then
		local Table = {}
		for i , Object in pairs(Parent:GetChildren()) do
			if Object:IsA(Type) then
				table.insert(Table , Object)
			end
		end
		if #Table > 0 then
			return Table
		else
			return nil
		end
	else
		return nil
	end
end

function ExtraFunctions.GetPlayerMains(Player:Player)
	if Player == nil or not Player:IsA("Player") then
		warn("Error , Function :- GetPlayerMains , Reason :- Player is nil or Player is not a player , nil returned.")
		return nil
	end
	local Character = Player.Character or Player.CharacterAdded:Wait()
	if Character then
		local Humanoid = Character:FindFirstChild("Humanoid")
		local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
		if Humanoid and Humanoid:IsA("Humanoid") and Humanoid.Health > 0 and HumanoidRootPart and HumanoidRootPart:IsA("BasePart") then
			local Table = {
				["Character"] = Character,
				["Humanoid"] = Humanoid,
				["HumanoidRootPart"] = HumanoidRootPart,
				["UserId"] = Player.UserId,
			}
			return Table
		else
			return nil
		end
	else
		return nil
	end
end

function ExtraFunctions.SetValuesToValue(Values:{} , Value)
	if Values == nil or type(Values) ~= "table" or #Values < 1 or (type(Value) ~= "number" and type(Value) ~= "string" and type(Value) ~= "boolean") then
		warn("Error , Function :- SetValuesToValue , Reason :- the Values table is empty , note only (Int , Float , Boolean , String is supported) , nil returned.")
		return nil
	end
	for i , value in pairs(Values) do
		if value:IsA("IntValue") and type(Value) == "number" and Value % 1 == 0 then
			value.Value = Value
		elseif value:IsA("BoolValue") and type(Value) == "boolean" then
			value.Value = Value
		elseif value:IsA("NumberValue") and type(Value) == "number" then
			value.Value = Value
		elseif value:IsA("StringValue") and type(Value) == "string" then
			value.Value = Value
		end
	end
end

function ExtraFunctions.AddAttribute(Objects:{} , Name:string , Value:any)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or type(Name) ~= "string" or Value == nil or typeof(Value) == "Instance" then
		warn("Error , Function :- AddAttribute , Reason :- the Objects table is empty or Name is not a string or Value is nil , nil returned")
		return nil
	end
	for i , Object:Instance in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game then
			Object:SetAttribute(Name , Value)
		end
	end
end

function ExtraFunctions.RemoveAttribute(Objects:{} , Name:string)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or type(Name) ~= "string" then
		warn("Error , Function :- AddAttribute , Reason :- the Objects table is empty or Name is not a string , nil returned")
		return nil
	end
	for i , Object:Instance in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game then
			Object:SetAttribute(Name , nil)
		end
	end
end

function ExtraFunctions.Tag(Objects:{} , Name:string)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or type(Name) ~= "string" then
		warn("Error , Function :- Tag , Reason :- the Objects table is empty or Name is not string , nil returned")
		return nil
	end
	for i , Object in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game then
			CollectionService:AddTag(Object , Name)
		end
	end
end

function ExtraFunctions.RemoveTag(Objects:{} , Name:string)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or type(Name) ~= "string" then
		warn("Error , Function :- Tag , Reason :- the Objects table is empty or Name is not string , nil returned")
		return nil
	end
	for i , Object in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game and Object:HasTag(Name) then
			CollectionService:RemoveTag(Object , Name)
		end
	end
end

function ExtraFunctions.SetName(Objects:{} , Name:string)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or type(Name) ~= "string" then
		warn("Error , Function :- SetName , Reason :- the Objects table is empty or Name is not string , nil returned.")
		return nil
	end
	for i , Object in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game then
			Object.Name = Name
		end
	end
end

function ExtraFunctions.SetParent(Objects:{} , Parent:Instance)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or Parent == nil or not Parent:IsA("Instance") or Parent == game then
		warn("Error , Function :- SetParent , Reason :- the Objects table is empty or Parent is nil , nil returned.")
		return nil
	end
	for i , Object in pairs(Objects) do
		if Object:IsA("Instance") and Object ~= game then
			Object.Parent = Parent
		end
	end
end

function ExtraFunctions.SetColor(Objects:{} , Color:Color3)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or typeof(Color) ~= "Color3" then
		warn("Error , Function :- SetColor , Reason :- Objects table is empty or Color is nil , nil returned")
		return nil
	end
	for i , Object:Instance in pairs(Objects) do
		if Object:IsA("BasePart") then
			Object.Color = Color
		end
	end
end

function ExtraFunctions.SetCFrame(Objects:{} , Cframe:CFrame)
	if Objects == nil or type(Objects) ~= "table" or #Objects < 1 or typeof(Cframe) ~= "CFrame" then
		warn("Error , Function :- SetCFrame , Reason :- Objects table is empty or CFrame is nil , nil returned")
		return nil
	end
	for i , Object:Instance in pairs(Objects) do
		if Object:IsA("BasePart") then
			Object.CFrame = Cframe
		end
	end
end

return ExtraFunctions

I’ve been there before too years ago when I was just starting out. I made a module with a few thousand lines of code, and it was just like this. Extra functions. I was so proud, but nobody cared about it. It’s because something like this is not particularly useful as each individual function is either very easy to code or is redundant/unnecessary. Coding anything is good practice though!

15 Likes

where’s the privacy policy? just wondering

2 Likes

after installing the plugin go to the plugins tap in roblox studio look for the Extra Functions button click on it a Dock gui will pop up contains three different buttons install , documentation and privacy policy click on the privacy policy button to see the privacy policy of the plugin.

2 Likes

the plugin have a privacy policy to ensure that is no one gonna share or sell the plugin code

you can use the plugin in any of your experiences with out any without any worries.

2 Likes

Return instance.parent.patent

Whats this even mean

You can do this normally?

3 Likes

:skull: you already ruined that the second you uploaded it to the creator marketplace, he has the right to keep the message up unless the plugin is paid (cant check cuz brave browser mobile bugs) but

1 Like

Read the documentation in the plugin

AND THE PLUGIN IS VERY USEFUL ALSO

1 Like

The plugin makes writing code easier, instead of doing part1.Color = Color3.fromRgb(0,0,0) part2.Color = Color3.fromRgb(0,0,0) you could do
module:SetColor({part1, part2}, Color3.fromRgb(0,0,0))

Is it a plugin or a module? If its a plugin bonus points for safety hazard and it being unnecessary.

Also, PivotTo or BulkMoveTo

These are very specific usecase methods and should only be in a module lol. Also, when are you ever gonna use GetGrandParent realistically

1 Like

I dont see why we cant just do thingy.CFrame but ok.

Ok question, what is this? We already have the ability to add an attribute to any Instance we see fit with SetAttribute(), is there some difference this makes?

Also for like all of these couldnt we do this by default just by setting a value? Why should we use a module to do it?

1 Like

That’s not what a privacy policy is

3 Likes

You have to click the plugin button to see the documentation and privacy policy.

apparently the methods let you update in bulk but i really couldn’t care enough, i’d make my own module

also the fact it’s on the, yk, creator marketplace, which makes it open source by nature, and that isn’t what a privacy policy even is :skull:

4 Likes

see if its a paid plugin i understand the justification, but its a free one that any can just grab the RBXM for

also thats not what a privacy policy is for, the term you want is EULA.

4 Likes