Socket | A Macro Manager Plugin


Socket is a Macro Manager plugin for Roblox - easily create + run macros to speed up development and automate processes!

View Documentation | Download it here | Github Repo

I created Socket because I wanted a quick way to write plugins, without filling the plugin toolbar with unintelligible buttons. This led me down the path of creating a macro manager which is:

  • Easy to use
  • Quick to create + run your own macros, defined by ModuleScripts
  • Pretty to look at!
  • Useable with Team Create

image

What is Socket? (3m32s)

Please check out the Documentation for a full breakdown of Socket, but here are some of it’s strengths:

  • Good organisation, with a widget akin to the explorer window
  • Plenty of customisation (text color, icons…)
  • Input fields to pass data into your macros in real time
  • Uses ModuleScripts
  • Ergonomic interface with search functionality and 1-click macro running
  • Server/Client run options when playtesting
  • Built with collaboration in mind
  • Free <3

What can Socket do? (30s)

Installation (1m38s)

Socket Deep(ish) Dive (18m41s)

Changelog

v1.1.0

  • Added Local Macros (see IsLocalMacro), which allows replication of macros across multiple places via the plugin itself.
  • Added LocalMacroColor setting
  • Improved logic behind the settings system to be more scalable + easier to add new settings of different types

v1.0.0

  • Release!
18 Likes

Awesome! This is very helpful! Thank you a lot for sharing this, Joel! :smile:

1 Like

Spell socket
Me: A W E S O M E

This is a really nice plugin and as far as I know, it it unique
I will be using this

2 Likes

v1.1.0

  • Added Local Macros (see IsLocalMacro), which allows replication of macros across multiple places via the plugin itself.
  • Added LocalMacroColor setting
  • Improved logic behind the settings system to be more scalable + easier to add new settings of different types

The clone macro isn’t needed at all as players can just use Ctrl + D to duplicate the instance.

Pretty sure it was just an example of what it could do

1 Like

I must admit I did not know this… thank you! :smile:

1 Like

v1.2.0

  • Fix issues with docking from the recent Studio overhaul
  • Fixed bug with Local Macros where ModuleScripts with duplicate names would silently not get saved
  • Removed “Clone” built-in macro, as this behaviour mirrors Ctrl+D
  • Add in luau type definitions
  • Update “Create Macro” macro to use luau type definitions for better UX

So is this like a studio inside a Roblox studio?

This is great!

Is there a workaround for the fact that we are we unable to yield within the macro function? I would like to run a command to generate a large map with terrain, and need waits between generating chunks etc.

Also might I suggest (a new setting) to only activate the plugin on startup if the “SocketPlugin” folder was already added to ServerStorage? This way it won’t get added to every place I join if it was previously open.

1 Like

Is there a workaround for the fact that we are we unable to yield within the macro function? I would like to run a command to generate a large map with terrain, and need waits between generating chunks etc.

Great question! Yes this is possible using the task library

Code

	task.defer(function()
		print("This")
		task.wait(1)
		print("Function")
		task.wait(1)
		print("Yields!")
	end)

Output (see timestamps)

  22:35:03.944  This  -  Studio
  22:35:04.959  Function  -  Studio
  22:35:05.961  Yields!  -  Studio

Edit: Bit less nesting version:

local function macroFunction(macro: PopulatedMacroDefinition, plugin: Plugin)
	print("This")
	task.wait(1)
	print("Function")
	task.wait(1)
	print("Yields!")
end

local macroDefinition: MacroDefinition = {
    Name = "Macro",
    Group = "Macros",
    Icon = "💡",
    Description = "Macro Description",
	Function = function(...)
		task.defer(macroFunction, ...)	
	end,
}

.

Also might I suggest (a new setting) to only activate the plugin on startup if the “SocketPlugin” folder was already added to ServerStorage? This way it won’t get added to every place I join if it was previously open.

This is a great suggestion! I was able to quickly add this as default behaviour (no setting to toggle this). See the changelog for v1.2.4: Changelog | Socket

You’ll just need to update your plugin to get these changes :smile: thank you for your comment!

1 Like

Great plugin, however, could you consider using a more mature font that fits in with the studio style a little more? Comic sans looks a little out of place :wink:

1 Like

Hahaha well each to their own! You can change the font used in the settings found at the bottom left of the widget.

My personal favourite :wink:
image

This is a really nice and useful plugin. I love the amount of customization just for the UI itself, and obviously the infinite possibilities of macros.

There are some small things that I would like to be changed though.

  • Why do the default macros get added back after removing them when you open the widget? I removed the ones I dont need, only for them to come back a second later.
    Nevermind, there is a setting for that already.
  • Maybe hide the “Fields” tab if there arent any fields for that macro? Same thing with the “Keybind” tab if its blank, since there isnt a way to set a keybind from the UI as far as I can tell.

Also, got this error after trying to insert an asset with the default macro:
image

Not sure what happened there, since there is automatic validation

Thank you!

  • This is a nice UX suggestion. It’s disabled by default, but there is now a setting you can enable that will hide “unused” fields and keybind on the UI. See: SocketSettings | Socket
  • Always really appreciate error reports thank you. This error was thrown because of a typo for an error message. The error message in question was that the thread was being yielded in the macro function - see: Socket | A Macro Manager Plugin - #11 by JoelBrd

You will need to update to v1.2.5 Changelog | Socket

image

1 Like