Please tell me if you find any bugs, or want anything to get added.
It might take me a while to respond.
If I take too long, I recommend you to try out this lad’s resource instead.
He made something very similar to what I did, scripted better, but with less features, at the same time as I was making this!
This project uses Rojo to help push it over to GitHub.
Icons made by cxmeel, which can be viewed here
Installation
Get RBLXfile.rbxm from a release and insert it!
If you have one, you can replace the default ChatSettings module with your own.
If you do that, comment out the ChatConstants lines.
You can add client and server commands you might have had in the Legacy Chat in their folders:
Note that not everything is supported yet. If you get an error with anything, it’s probably not supported.
Only channels you have added with the ChatService module will work with this. Look here to see how to do that.
This does not use the default channels created by Roblox, it creates an All channel and System channel.
In fact, you should uncheck these two properties in TextChatService or else Roblox might sometimes override the All channel with RBXGeneral and it will not work.
It should work with custom TextChatCommands as it is sending with TextChatService.
Both, yes. I’m trying to make old methods work on the new chat.
I don’t really recommend to use this system in real games yet, as I kind of rushed to release this, and it’s a bit glitchy. I’m working on fixing issues.
Chat Tags are bug-free though!
They are tested to work with this script:
local Players = game:GetService("Players")
local ChatService = require(game.ServerScriptService:WaitForChild("ChatServiceRunner"):WaitForChild("ChatService"))
local channels = {}
for i=1, 10 do
local channel = ChatService:AddChannel("test" .. i)
table.insert(channels, channel)
end
ChatService.SpeakerAdded:Connect(function(username)
--get speaker and player from username
local speaker = ChatService:GetSpeaker(username)
local player = Players:FindFirstChild(username)
local tags = {} --create the tags table
table.insert(tags, {TagText = "VIP", TagColor = Color3.fromRGB(255, 255, 0)})
table.insert(tags, {TagText = "role"})
speaker:SetExtraData("Tags", tags) --setting the tags after they're loaded and configured
--speaker:SetExtraData("ChatColor", Color3.fromRGB(0, 0, 0))
for i,channel in pairs(channels) do
speaker:JoinChannel(channel.Name)
end
end)
Sorry for not adding any images/videos! Might make some soon.