Hello everyone! Hope you’re interested in a chat GUI!
Originally inspired by Discord but also drifted off into looking more like Roblox, this is a fully custom-made chat GUI I’ve made slowly over a year and uploaded as a FreeModel and now would like to show it off.
The Setup
It’s just a simple as dragging the EchoChat
script inside the model into ServerScriptService
and then deleting the model.
The ChatGui is loaded from a script to allow EchoChat to be updated automatically but can also just use the main script without all the setup.
Inside the setup
Inside you can find the current Loader Version and the Configuration you want to load, including the version of EchoChat.
local Selected_Version = "Latest_Release"
The Selected_Version variable is used to load a specific version of EchoChat just chose between:
- Latest_Release
- Version_1
- Version_2
and et cetera as more versions are released.
The rest of the configuration is a table that gets parsed onto the chat, this includes the Moderators, Avatars (like seen above in the screenshot), Statuses (Icons next to names), Message character limits, and more.
Features
- A large UI but with the option to enable Compact mode
- The option to force everyone to use Compact mode
- Themes (With options to add more)
- Chat Logs for the Owner or specific moderation level to view
- A dedicated menu for Chat Logs, EchoChat Updates, Settings, and additional menus that can be added by third party users with Addons
Screenshot
- Accessibility settings (Text size, font, saturation, reduce transparency, with reduce motion planned)
- Other settings (Chat Bubbles, Compact Mode, Bubble Length, Change Theme)
- Tagging (@Username)
- Whispers
- HD Admin support
- Built in commands
- Player profiles (activated by clicking on a player’s message)
Screenshot
Addons
Expand for addons explanation
Addons are a way for other players to add their own menu items easily.
By placing a ModuleScript in the Addons folder under the Loader or ScreenGui it will run as if its a Menu Item which expects a table with a Button
and Frame
variable
See template
local module = {}
local EchoChat = script:FindFirstAncestorWhichIsA("ScreenGui")
local EchoUI = require(EchoChat.Scripts.EchoUI)
local Button, Frame, Content = EchoUI.MenuSetup("Custom Addon", "rbxassetid://6986134856")
-- Place your UI elements into "Frame" (Regular frame) or "Content" (A scrolling frame with a UIListLayout that updates automatically)
module.Button = Button
module.Frame = Frame
return module
This will create an empty menu item.
“EchoUI” is a way to try and keep all the UI elements at least looking the same even if something changes in the future
There is also a LoadAddons RemoteEvent that will fire when a player joins and is ready to load addons located game.ReplicatedStorage.ChatEvents.LoadAddons
encase a regular script wants to be used alongside the ModuleScript addon
Patches
Expand for patches explanation
Patches, like addons, are a way for more third-party customization, these, however, will directly affect the chat instead of the menus.
Any ModuleScript with the attribute name “PatchScript” and the value set as a path (with the ScreenGui as the root, e.g. “Scripts/MainChatScript”), that target path module script will be modified by the patch script.
The patch script has to return a table and any value inside that table will add/replace anything from the target scripts.
Anything (Including ModuleScripts) with the Attribute “PatchInstance” will replace that instance completely.
Screenshots
This patch basically just removes the rounded edges in the UI (and can be found here)
Remote and Bindable Events
Events
Located in ReplicatedStorage.ChatEvents
-
LoadAddons
Like said above, this will fire when the player is ready to load addons and will send the Addons folder location -
MutePlayer
Used to mute and unmute another player and will send the target player to be muted (Player) and if the player is muted or not (boolean) -
ServerAnnouncement
Used to create server messages in the chat from server scripts.
These only need a message to make a plain message but can take more arguments
in order of(message, target, minimumPermission, messageType)
- message - self-explanatory
- target - a target player (or nil for everyone)
- minimumPermission - the minimum moderation level required to receive this message
- messageType - can be nil (regular), error, command, or warning
Planned updates
- More channels
- More moderation control
- Actually be able to unmute people after their messages are gone…
- Re-add SetCore functionality
You can get EchoChat here or you can test it in this place
EchoChat.rbxl (423.7 KB)
Watch out for someone named ortenaus trying to scam users to buy the “owner rights”
more details from this comment