Attribute Cloner(Plugin)

Attribute Cloner Plugin

Easily copy and paste attributes between instances with this simple-to-use plugin!

How It Works:

  1. Copy Attributes – Select an instance with attributes and click Copy Attributes.
  2. Paste Attributes – Select the target instances and click Paste Attributes to apply them.
  3. Remove Attributes – Select instances and remove all attributes in one click.

Keyboard Shortcuts:

Ctrl + Shift + C – Copy all attributes from the selected instance .
Ctrl + Shift + V – Paste copied attributes to all selected instances.
Ctrl + Shift + R – Remove all attributes from selected instances.

Easily toggle keybinds on or off for seamless workflow integration.

Plugin: https://create.roblox.com/store/asset/138082260600066/Attribute-ClonerV1
How To Use! https://youtu.be/mRHbLfLgd60

3 Likes

Dang it i thought this was free, this wouldve been useful, its time to try to replicate it myself and not be lazy pretty creative idea tbh

1 Like
  1. Store attributes as dictionary using GetAttributes()
  2. “Paste” → loop through saved copy and set each of the attribute using:
for Name,Value in Attributes do
	Instance:SetAttribute(Name,Value)
end

There’s really no need for 5 dollars for this.

1 Like

True, maybe like 1 dollar max for this you can get better plugins with 5 dollars

somebody already made this

it only uses shortcuts tho, no buttons

1 Like

Not even 1 dollar. With a simple GUI and even clipboard history I can pull it off in max 10 minutes.

2 Likes

True tho this is fairly simply and should be free like idk why charge money, knowing that some people dont even have access to buying using dollars or only got robux like what

1 Like

Full credits to: Sol_ttu

Devforum post: Attribute Clipboard Tools
Creator profile: Sol - Roblox
Plugin link: https://www.roblox.com/library/6471870593/Attribute-Clipboard-Tools

local UIS = game:GetService("UserInputService")
local CHS = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local PluginFolder = script.Parent
local Notifications = PluginFolder:WaitForChild("Notifications")
local GUIService = game:GetService("CoreGui")
local Debris = game:GetService("Debris")
Notifications.Parent = GUIService
local CurrentAttributes = nil
local PluginFunctions = {}
local CurrentLength = 0
function CreateNotif(Color, Text)
	local Notif = script.Notification:Clone()
	Notif.Parent = Notifications
	Notif:WaitForChild("ColorFrame").BackgroundColor3 = Color
	Notif.Text = Text
	game.Debris:AddItem(Notif,3)
end
function PluginFunctions.CopyAttributes()
	local CurrSelection = Selection:Get()
	if CurrSelection and #CurrSelection > 0 and #CurrSelection == 1 then
		CurrentAttributes = CurrSelection[1]:GetAttributes()
		CreateNotif(Color3.fromRGB(47, 195, 103), "Copied attributes!")
		plugin:SetSetting("Saved_Attributes", CurrentAttributes)
	end
end
function PluginFunctions.PasteAttributes()
	local CurrSelection = Selection:Get()
	
	if not CurrentAttributes then
		local SavedAttributes = plugin:GetSetting("Saved_Attributes")
		
		if SavedAttributes then
			CurrentAttributes = SavedAttributes
		end
	end
	
	if CurrentAttributes and CurrSelection then
		for _, Selected in pairs(CurrSelection) do
			for i,v in pairs(CurrentAttributes) do
				pcall(function()
					Selected:SetAttribute(i,v)
				end)
			end
		end
		CreateNotif(Color3.fromRGB(116, 166, 253), "Pasted attributes!")
		CHS:SetWaypoint("Pasted Attributes")
	end
end
function PluginFunctions.CutAttributes()
	local CurrSelection = Selection:Get()
	if CurrSelection then
		local Selected = CurrSelection[1]
		CurrentAttributes = Selected:GetAttributes()
		for i,v in pairs(Selected:GetAttributes()) do
			pcall(function()
				Selected:SetAttribute(i,nil)
			end)
		end
		CreateNotif(Color3.fromRGB(206, 109, 106), "Cut attributes!")
		CHS:SetWaypoint("Cut Attributes")
		plugin:SetSetting("Saved_Attributes", CurrentAttributes)
	end
end
function PluginFunctions.Cleanup()
	Debris:AddItem(Notifications, 0)
	
	Notifications = nil
end
local Copy = plugin:CreatePluginAction("Copy attributes1", "Copy Attributes", "Copies attributes to your clipboard.", "rbxassetid://6786735673", true)
local Paste = plugin:CreatePluginAction("Paste attributes2", "Paste Attributes", "Pastes attributes from your clipboard.", "rbxassetid://6786735673", true)
local Cut = plugin:CreatePluginAction("Cut attributes3", "Cut Attributes", "Cuts attributes and copies to your clipboard.", "rbxassetid://6786735673", true)
Copy.Triggered:Connect(function()
	PluginFunctions.CopyAttributes()
end)
Paste.Triggered:Connect(function()
	PluginFunctions.PasteAttributes()
end)
Cut.Triggered:Connect(function()
	PluginFunctions.CutAttributes()
end)
plugin.Unloading:Connect(PluginFunctions.Cleanup)
plugin.Deactivation:Connect(PluginFunctions.Cleanup)

this is the script, 99 lines why charge 5 dollars for a thing that has already been made, free, easily made.

2 Likes

Is it just me? OR I’ve noticed a bunch of low-effort plugins after a couple of years since Roblox forces you to pay with real currency to get plugins now.

Most times the people who make these plugins try to make sad excuses of why they are priced like this and it’s kind of pathetic. Just so they can make a quick buck.

5 Likes

No excuses I made it for convenience with key binds. The price is set for the next feature i’m currently coding, No one is being forced to buy it. If someone does not like it feel free to use a free one idc, i’m working on a product and releasing it in stages.

As far as I can see, the plugin has a lot of promise in it’s features. It may cost 4.99 usd, but it’s still a neat plugin.

Yeah… convenience with key binds…

Like what are u talking about?? 5 dollars too much like there are 5 difference attribute tools on the market rn so you should atleast put effort before releasing it at the insane price of 5 dollars for something made before and free and no effort like please dont be lazy and charge 5 dollars for that lazy stuff that anyone can do