Modular and Open Source Interaction System!

Hello Everybody! I am here to showcase a FREE open source plugin I have created.
The system is very modular and can do almost everything you want it to do. Do you want a E to open door or a E to equip a tool? Well this system can do just that! It is very powerful, and each Interactable Object depends on its own module script.

Examples / Images

  • Each Interactable can be both Server or Client Sided.

Door Opening Example:
https://gyazo.com/4098a2bd2ee991c7a9c49c5453def106

Part Color Changer Example:
https://gyazo.com/a40e964787a5b92f938ec856761c1443

Plugin Showcase
image
Installing the system is as easy as clicking a button, literally.
One click install, easy as that.

When clicking the “Create Interactable Base” button, a slightly transparent part
will be created and placed at the cameras position, and the part can be edited. All it basically does is create a part tagged as “Interactable” with the CollectionService. Here is what the button does:
image

image

How it works
Everytime the KeyCode for the interactable button is pushed, it checks whatever is
in front of you and checks if it is tagged as “Interactable”. If it is, it will run the function inside the module code in the interactable. (See Below for the code) The module can be determined as either client or server sided. Which means when the interactable is interacted with, the code will either run on the server, or the client depending on what you choose.

Making custom interactable functions
In the “InteractableExample” module script, there will be a function
named “Subscribe”. That function is highly customizable, because you
can put anything you want in it!

This is what the code of the script looks like:

--// You can use basically any variable you want to, the system is highly expandable
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local Interactable = {}

--// Interactable's setup
Interactable.ServerSided = true; --// Determines if Interactable:Subscribe() is ran on server or client.
Interactable.InteractMessage = "Open door" --// The message that pops up when hovering over the object (if you have this enabeled [In Settings])


function Interactable:Subscribe() -- This is the function that is ran when interacted, you can make this function do ANYTHING you want it to do!
	--[[
	
	EXAMPLES -->
	script.Parent.BrickColor = BrickColor.Random()
	ReplicatedStorage.Audio:Play()
	
	]]--
end


return Interactable

Source Code → https://github.com/PolyHall-0/InteractionSystem

If you want to support me to make more systems such as this, please go here

Thank you!!

28 Likes

Since Roblox will NOT let me post the link to the plugin, here it is. PolyHall's Interaction System [V1] - Roblox

Does this include any sort of UI or functionality to add in UI?

1 Like

Yes, it comes with UI that you can customize, and a UIHandler module, which you can customize as well. You can add anything to it.

im sorry but im still at a loss with this

What do you mean? This is a plugin for implementing an interaction system for games

? i saw your GitHub code and all i saw was something about mouse

why this plugin/module over proximity prompts/customized proximity prompts

3 Likes

It’s just an alternative option

Uh, i got a problem here. I clicked both of the button and nothing happened, would you help?

2 Likes

Same here, both of the plugin buttons don’t work…

1 Like

I haven’t made any changes to it… that is very odd?

Basically the issue is, your plugin loads from a module that you own private. Roblox will not let your script

local Pack = game:GetService("InsertService"):LoadAsset(9774070307)

run because it’s private so you get an HTTP 403 error.,

5 Likes

Nice interaction system, but like the previous message said: we can’t use it if the module stays private. A script can’t import a module when the module is private.

Okay so, there was an issue for quite a long time that would do nothing when the button is pushed and this is all fixed now. Thank you @RubenHgamer for messaging me about it.

1 Like