I made a very simplistic and self-sustaining chat module that uses MessagingService to allow game developers (or others, can be customized) to shout across all servers of their game that have the module present. TextService is used for filtering.
To use: Ensure you are not using ‘devshout’ as a MessagingService topic (or plan to replace it in the script)
Fork the chat and place the module inside ChatModules
On line 16, replace GROUPID and RANKID with the appropriate group and rank, or other system of checking if the user can shout
Optional: Change the color of the shout message on line 34
That’s it! No extra coding is required for the bare-bone system, as all of the code is in one module for simplicity. To shout, send a message like normal except prefix it with “s_”, eg. “s_Hello world!”
Features
Chatting across all servers of the entire game that have the module (thanks, MessagingService).
No need for different UIs! Simply type “s_Message Here” into the chat to send a shout. Easy!
Different color to stand out to players
Utilizing the System chat channel
Filtering and error handling
Use Cases
Announcing shutdowns or big changes to multiple servers simultaneously.
Coordinating testing sessions with multiple places in one universe (what I normally use it for)
Can be modified for more than just devs (eg. gamepass to use, Miner’s Haven had a similar system for this, although that was before MessagingService)
Things to Note
This makes use of the ‘System’ chat channel, which means that the channel needs to be used in order for the message to be seen.
The message is seen by all players.
When a user shouts, they are not actually talking, so their name will not be seen in chat and they won’t have a chat bubble over their head (if either of those are enabled).
By default there is a group rank check in the script that only allows members of a rank or higher in a group to shout. Anybody can say “s_Hello world” but only those who are in the rank or higher will actually turn into a shout. Modify line 16 of the module to set this up.
I've released a new version of this system, which includes:
Popup UI rather than a chat message (ui automatically deletes after specific seconds, can be set in script). The UI is extremely simple, however it can be modified (it is inside of the module)
All settings are now located at the top of the script for convenience
If a shout is sent while one is being seen, it will replace the old shout rather than overlapping.
A profile picture of the user is now shown along with their name.
The module should still go in ChatModules. The UI needs to stay inside of it unless the script is modified otherwise. It still includes the following features in the original post:
Messages across all servers
Still sends message using the chat “s_Message here”
Still handles filtering and errors automatically
One of the requested features is the ability to set an admin list, and I will include this in the next update. Let me know if you find any bugs or have any other suggestions. ShoutV2.rbxm (8.0 KB)
I’m using your Developer Shout script and I’m loving it! It’s so simple to use. Then, comes my question, how could I make everyone be able to shout that follows message filtering? I’m planning on using a Gui for this so, example for 250 coins someone could send a shout to all players(like Miners Haven)
All you need to do is modify the script so that instead of checking for a specific rank in a group, it checks their currency for example and handles it. There’s many ways to go about it, such as using events, modules, or just doing all of the logic in the shout script. Filtering is already covered (uses TextFilterResult:GetNonChatStringForBroadcastAsync which returns an appropriate result for all users) so there’s no need to worry about that.
This system incorporates with the chat using the “s_” prefix (it is a chat module). If you want it to be solely through a UI I’d recommend writing your own code while still using the MessagingService to accomplish the desired effect.
MessagingService sends any data to every server of every place in your game, which can then be listened to in each server. This is how the shout script works.
Yeah you’ll need to use a remote event. MessagingService can only be used from the server, while your UIs are all locally sided. Plus, since you want to make your script cost coins to use, you should check the user’s coins from the server to ensure they are not spoofing the amount of coins they have in an attempt to abuse it.
This post is more about my chat-based shout system, though. I’d be happy to help you if you make a separate post in #help-and-feedback:scripting-support or if you DMed me on here.